80888086指令系统

合集下载

第03-1章. 80868088微处理器及其系统

第03-1章. 80868088微处理器及其系统

3.1.1、8086/8088CPU的内部结构
执行单元( Execute Unit ) 总线接口单元 ( Bus Interface Unit )
8088的内部结构
AH BH CH DH AL BL CL DL SP BP SI DI
16位
地址 加法 器

20位
通用 寄存器
CS DS SS ES IP 内部暂存器
PA的书写方式:
段地址:段内偏移
如:1121H : 2200H=11210+2200=13410H

已知CS=1055H,DS=250AH,ES=2EF0H, SS=8FF0H,DS段有一操作数,其偏移地址=0204H, 1)画出各段在内存中的分布 2)指出各段首地址 10550H CS 3)该操作数的物理地址=?
2.地址加法器和段寄存器
BIU中的地址加法器用来实现逻辑地址到物理地址的变换 8086采用了 “段加偏移”的技术。
15 0 15 0
逻辑地址
段基值
3 0
偏移量
0000
各段寄存器分别来存放确定各段的 起始地址的16位段地址信息
寻址单元的16位偏移地址
Σ
19 0
物理地址
物理地址
左移4位后的段寄存器的内容同时 送到地址加法器进行相加
CH DH CL DL
地址 加法 器

20位
CS DS SS ES IP 内部暂存器
16位
输入/输出 控制电路 外 部 总 线
1 2
8位
3 4
把EU的操作结果存储 标志寄存器 到指定的M或I/O口。
执行部件 (EU)
指令队列
总线接口部件 (BIU)

第3章 8086指令系统及汇编语言程序设计

第3章 8086指令系统及汇编语言程序设计

图3-7 立即数寻址
第3章 8086指令系统及汇编语言程序设计
注意: (2)寄存器寻址方式 ● 寄存器寻址方式的指令操作在CPU 定义:操作数放在寄存器内,由指令直接给出某个 内部执行,不需要执行总线周期,执行速 寄存器的名字,以寄存器的内容作为操作数。寄存器可以 度快。 是16位的 AX、BX、CX、DX、SI、DI、SP、BP寄存器, ● 寄存器寻址方式既适用于指令的源 也可以是8位的 AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 操作数,也适用于目的操作数,并且可同 时用于源操作数和目的操作数。 【例3-2】 MOV AX,CX ;(AX)←(CX) INC AL ;(AL)←(AL)+1 指令执行结果如图3-8 所示
图3-8 寄存器寻址
第3章 8086指令系统及汇编语言程序设计
(3)直接寻址方式 定义:操作数在存储器中,指令中直接给出操作数所在存 注意: 储单元的有效地址。有效地址( EA)也称为偏移地址,它代表 ●直接寻址方式的操作数所在存储单元的段地址一 操作数所在存储单元距离段首址的字节数。有效地址是一个无 般在数据段寄存器DS中。 符号的16位二进制数。 ●如果操作数在其他段,则需要在指令中用段超越 【例3-3】 前缀指出相应的段寄存器名。 ● VALUE是一种符号表示法,此内容将在伪指令中 MOV AH, [1234H ] ;将DS段中1234H单元的内容送给AH 给予讲解。 MOV AH ,VALUE ;将DS段中VALUE单元的内容送给AH ●在实地址方式下,物理地址=16*段地址(DS) MOV AX, [2100H] ;将DS段中2100H单元的内容送给AL, +偏移地址(EA) 2101H单元的内容送给AH MOV BX,ES:【2000H】 ;段超越,操作数在附加段。即 物理地址=(ES)*16+2000H

2_第3章 8086指令系统_加减运算指令比较指令52

2_第3章 8086指令系统_加减运算指令比较指令52
4
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:

第二章 80868088寻址方式和指令系统

第二章 80868088寻址方式和指令系统

(5)奇偶标志PF
用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。
(6)辅助进位标志AF
在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字 节进位或借位,则辅助进位标志AF被置1,否则AF被清0。
②状态控制标志
(1)方向标志DF
方向标志决定着串操作指令执行时,有关指针寄存器调整方向。 当DF为1时,串操作指令按减方式改变有关的存储器指针值, 当DF为0时,串操作指令按加方式 改变有关的存储器指针值。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
图中指令存放在代码段中,OP表示该指令的操作码部分 再例如: MOV AL,5 则指令执行后,(AL)=05H
MOV BX,3064H 则指令执行后, (BX)=3064H
2、寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数数,寄存器可以是:
AX、BX、CX、DX、SI、DI、SP和BP等;
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动 形成20位物理址。
3、段寄存器的引用
由于8086/8088CPU有四个段寄存器,可保存四个段值。所以可同时使用四个段值,但这四个 段有所分工。
在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令 的物理地址。

8086-8088指令系统

8086-8088指令系统

实验二(找出8086/8088指令系统所有指令的操作码的编码)一、实验目的本实验旨在利用debug工具的e和u功能找出8086/8088指令系统的指令格式中各种操作码编码对应的指令功能。

二、实验原理已经知道:1、每条指令1~6个字节不等2、指令的第一字节为操作码,规定指令的操作类型。

第二字节规定操作数的寻址方式接着以后的3~6 字节依据指令的不同取舍。

3、第一个字节的八个二进制位中前六位为操作码的主要部分,之后一位是D字段,然后是W字段,W指出操作数类型:W=0 为字节,W=1 为字,D指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。

三、实验步骤(一)1、用试探法结论:操作码字节前六位为000000(二进制)看来是一条ADD指令,而且只占两个字节。

记下来:指令码汇编指令---------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL2、将指令首字节变为01,重复以上实验结论:第1字节由00(二进制0000 0000)变为01(二进制0000 0001),ADD指令的第二个操作数由AL变为了AX。

AL为8位寄存器、AX为16位寄存器,印证了W字段的作用,增加一条有用的记录:指令码汇编指令-------------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX3、将指令首字节变为02,重复以上实验第1字节由00(二进制0000 0000)变为02(二进制0000 0010),ADD 操作的传送方向发生转变,印证了D字段的作用。

增加一条记录:指令码汇编指令------------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]4、将指令首字节变为03,重复以上实验D和W同时变化,记下:指令码汇编指令-----------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI](二)1、首字节为04~07,继续实验(1)首字节为04,继续实验(2)首字节为05,继续实验(3)首字节为06,继续实验(4)首字节为07,继续实验-得到四条新的记录,出现了第1个3字节指令050000(ADD AX,0000),还捕获了两条新的单字节指令:指令码汇编指令----------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI]037F:0100 0400 ADD AL,00037F:0100 050000 ADD AX,0000037F:0100 06 PUSH ES037F:0100 07 POP ES2、08~0b,继续-是四条OR指令:指令码汇编指令--------------------------------------------------------------------037F:0100 0000 ADD [BX+SI],AL037F:0100 0100 ADD [BX+SI],AX037F:0100 0200 ADD AL,[BX+SI]037F:0100 0300 ADD AX,[BX+SI]037F:0100 0400 ADD AL,00037F:0100 050000 ADD AX,0000037F:0100 06 PUSH ES037F:0100 07 POP ES037F:0100 0800 OR [BX+SI],AL037F:0100 0900 OR [BX+SI],AX037F:0100 0A00 OR AL,[BX+SI]037F:0100 0B00 OR AX,[BX+SI](三)1、用in1-zsl.txt生成out1-zsl.txt原理:用DOS的输入/输出重定向功能,让debug自动执行一批命令。

第3章 8086(8088)CPU指令系统

第3章 8086(8088)CPU指令系统
数据段 BX + SI 10H
20H 00H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
16
+
3000H:3000H
AH
AL
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
●存储器寻址之相对基址加变址寻址(Base
9
第3章 8086/8088CPU指令系统
3.1.3 操作数寻址方式
4.1操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位臵,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址(Immediate Addressing) 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H

2
第3章 8086/8088CPU指令系统
汇编语言指令或符号指令:用字母和其它一些符 号组成的“助记符”与操作数等表示的指令称为汇编 语言指令或符号指令。 例如: MOV AX, BX ; AX←BX 而其二进制代码(机器代码)为89D8H,就是 1000 1001 1101 1000 B 不易理解,不易记忆。助记符是MOV。
操作码
操作数
4
第3章 8086/8088CPU指令系统
3.1.1 8086/8088指令格式
4.1操作数寻址方式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 由2个字节组成,如下图所示。
操作码 D W MOD REG R/M

第3章 80868088指令系统3(算术运算指令)PPT课件

第3章 80868088指令系统3(算术运算指令)PPT课件

INC SI
;(SI)+1
DEC CX
;(CX)-1
JNZ LL
;若(CX)0,则转LL
思考:若最高位有进位,如何改?
11
ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:
SF=
1 结果为负 0 否则
ZF=
1 结果为0 0 否则
CF=
1 0
和的最高有效位有向高位的进位 否则
OF= 1 两个操作数符号相同,而结果符号与之相反
无符号数 有符号数
0000 1000
8
+8
+1111 1101 10000 0101
结果5
+253 261 CF=1
+(-3) +5
OF=0
③ 有符号数溢出
0000 1000
8
+8
+0111 1101 +125 +(+125)
1000 0101 133
+133
结果-123
CF=0
OF=1
(补码表示)
2
• 两个8位数相加时有4种情况:
无符号数范围0~255 带符号数范围-128~127 ①无符号数和有符号数均不溢出
二进制相加 0000 1000 +0001 1110 0010 0110
无符号数加 8
+ 30 38
有符号数加 +8
+ (+30) +38
结果38
CF=0
OF=0
3
② 无符号数溢出
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1

第3章 8086 8088指令系统和寻址方式

第3章  8086 8088指令系统和寻址方式


第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式

若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。

第三章 8086 8088指令系统

第三章 8086 8088指令系统

SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。

寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合

微机原理第02章(寻址方式和传送指令)

微机原理第02章(寻址方式和传送指令)

有效地址由基址寄存器( BX 或 BP )的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应 BX基址寄存器默认是 DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
;AX←DS:[BX+SI]
段内偏移量为适应各种数据结构的需要,可以有几个部分组 成,所以也把它称为有效地址EA。
寻址方式不同EA的构成不同。归纳EA可有多种情况构成: 直接寻址,寄存器间接寻址,寄存器相对寻址,
基址加变址寻址,相对址加变址寻址。
寻址方式——如何寻找内存操作数。 不同寻址方式实质上是构成它段内的偏移量的方法不同。
34H 12H
堆 栈 段
...
寄存器间接寻址方式 MOV [BP], AX
3 、用 SI、DI、BX 、BP作为间接寻址允许段跨越
指令中可以指定段跨越前缀来取得其他段中的数据。
例:MOV ES:[DI], AX MOV DX, DS:[BP] 这种寻址方法可以用于表格处理。
第2章 (五)寄存器相对寻址方式(Register relative addressing)或变 址寻址 (Index Addressing)
8位位移量 PA=16d ×(SS)+ (BP) + 16位位移量
例: MOV AX, COUNT [BP] 或MOV AX, [COUNT+BP] 或MOV AX, COUNT+[BP]
AH AL 48H 存储器 OP OP 40H 20H 操 作 码 位移量 COUNT
COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H

微型计算机原理与接口技术课件-第三章指令系统和寻址方式

微型计算机原理与接口技术课件-第三章指令系统和寻址方式
指出的存储区进行直接寻址,应在指令中指定段
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可

微机原理2-1:8088CPU内部结构、寄存器组、存储器组织

微机原理2-1:8088CPU内部结构、寄存器组、存储器组织

栈段和附加段。
段寄存器即是存放各个逻辑段段首地址的寄 存器。
23
存储器的分段管理


8088有20条地址线, 20=1MB, 最大可寻址空间为 2 可寻址的地址范围为 00000H~FFFFFH 该地址称物理地址 硬件用 20位的物理地址来对存储单元进行寻 址
24
存储器的分段管理


由于 8088 中的地址寄存器都是 16 位的,用 户不能直接使用20位的物理地址,编程时需 要使用逻辑地址来寻址存储单元。 物理地址 14700H 逻辑地址由两个16位数构成,其形式为: 逻辑地址 1460H:100H 段的起始地址 : 段内的偏移地址 (16位段地址) :( 16位偏移量)
分隔符
7
②指针和变址寄存器 共BP、SP、SI、DI四个 BP:基址指针寄存器Base Pointer ,默认表示
堆栈段基地址;
SP:堆栈指针寄存器Stack Pointer,指示栈顶 SI:源变址寄存器Source Index DI:目的变址寄存器Destination Index
8
2、标志寄存器 标志寄存器( FR )是 一个 十六位的 寄存器,但只利用了其中的9位:六个条 件标志和三个控制标志。

CLI 指令复位中断标志:IF=0
STI 指令置位中断标志:IF=1
20
陷阱标志TF(Trap Flag)


用于控制处理器是否进入单步执行方式: 设置TF=0,处理器正常工作; 设置 TF=1,处理器每执行一条指令就中断一次, 中断编号为 1 (称单步中断), TF 也被称为单 步标志。 单步执行和单步调试
注意: PF 标志仅反映最低 8 位中“ 1 ”的个数

第3章 8086指令系统(最后有练习题)

第3章  8086指令系统(最后有练习题)


开 始
8086CPU的指令系统的基本指令

包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式

3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址


寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址




特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H

第3章80888086指令系统(老师用的课件哦)

第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。

《微机原理与接口技术》徐惠民 微机原理与接口技术3章

《微机原理与接口技术》徐惠民 微机原理与接口技术3章
MOV AL,[2000H]; MOV [3000H],AL
数据传送指令
③ 两个段寄存器之间不能直接传送信息,也不允许 用立即寻址方式为段寄存器赋初值; (X) MOV DS, 100H; (X) MOV DS, ES;
④ 目的操作数,不能用立即寻址方式。
⑤ MOV指令不影响标志位
数据传送指令
2.堆栈指令
功能:从I/O端口输入数据至AL或AX.
输入指令允许把一个字节或一个字 由一个输入端口传送到AL或AX中。若端 口地址超过255时,则必须用DX保存端 口地址,这样用DX作端口寻址最多可寻 找64K个端口。
8086/8088通过 输入输出指令与 外设进行数据交 换;呈现给程序 员的外设是端口 (Port)即I/O地 址。
一般格式:
LES OPRD1,OPRD2
这条指令除将地址指针的段地址部分送入ES外,与 LDS类似。
例如: LES DI,[BX]
数据传送指令
6.标志寄存器传送(有四条标志传送指令)
⑴ LAHF (LOAD AH WITH FLAG) 将标志寄存器中的S、Z、A、P和C(即低8 位)传送至AH寄存器的指定位,空位没有定 义。
2、寄存器寻址
操作数就放在CPU的内部寄存器中,AX、BX、CX、DX、 DI、SI、SP和BP,不需要访问存储器。
例:INC CX MOV AX,BX 若执行前 AX =30A6H, BX =69EDH, CX =40D9H 则执行后 AX =69EDH, BX内容不变 CX =40DAH
3.1 8088/8086的寻址方式
– 操作数是指令执行的参与者,即各种操作的对象。 – 有些指令不需要操作数,通常的指令都有一个或两
个操作数,也有个别指令有3个甚至4个操作数。

微机原理_8088(8086)工作原理

微机原理_8088(8086)工作原理

8088/8086寄存器结构 8088/8086寄存器结构
15 AH BH CH DH 8 7 AX AL BX BL CX CL DX DL SP BP DI SI IP FLAGS CS DS ES SS 0 累加器 基址变址 计数 数据 堆栈指针 基址指针 目的变址 源变址 指令指针 标志 代码 数据
AX(Accumulator BX(Base
CX(Count DX(Data
指针寄存器
堆栈指针SP(Stack Pointer): 堆栈指针SP(Stack Pointer):用于实现内存中的堆栈
存储方式(FILO),指示栈顶的偏移地址; ),指示栈顶的偏移地址 存储方式(FILO),指示栈顶的偏移地址;
总线接口部件 (Bus Interface Unit)
执行部件 用来存放计算的中间结果, 用来存放计算的中间结果, (Execution Unit) CPU从寄存器中存取数据比从 CPU从寄存器中存取数据比从
负责指令的译码、 负责指令的译码、 存储器中存取数据要快得多。 存储器中存取数据要快得多。 与微处理器外部总线连接, 与微处理器外部总线连接,负责 执行等。 BIU 执行等。 大量使用寄存器能提高计算机 与存储器、I/O接口进行数据交换 接口进行数据交换, 与存储器、I/O接口进行数据交换, 运行速度, 运行速度,但也提高了成本 存取指令、操作数等。 存取指令、操作数等。
指令指针IP(Instruction Pointer): 指令指针IP(Instruction Pointer):计算机之所以
能自动地一条一条地取出并执行指令,是因为CPU中 能自动地一条一条地取出并执行指令,是因为CPU中 有一个跟踪指令地址的电路,其核心就是指令指针IP, 有一个跟踪指令地址的电路,其核心就是指令指针IP, 它用于指明当前应该调用内存中哪个地址位置的指令 CPU中来运行 中来运行, 到CPU中来运行,从而实现计算机自动运行程序员事 先安排好的软件。 先安排好的软件。

8086与8088的区别

8086与8088的区别

这两种CPU的主要区别,归纳起来有以下几方面:1.外部数据总线位数的差别:8086CPU的外部数据总线有16位,在一个总线周期内可输入/输出一个字(16位数据),使系统处理数据和对中断响应的速度得以加快;而8088 CPU的外部数据总线为8位,在一个总线周期内只能输入/输出一个字节(8位数据)。

也正因为如此,8088被称为准16位处理器。

2.指令队列容量的差别:8086CPU的指令队列可容纳6个字节,且在每个总线周期中从存储器中取出2个字节的指令代码填入指令队列,这可提高取指操作和其它操作的并行率,从而提高系统工作速度;而8088CPU的指令队列只能容纳4个字节,且在每个总线周期中只能取一个字节的指令代码,从而增长了总线取指令的时间,在一定条件下可能影响取指令操作和其它操作的并行率。

3.引脚特性的差别:两种CPU的引脚功能是相同的,但有以下几点不同:(1) AD15~AD0的定义不同:在8086中都定义为地址/数据复用总线;而在8088中,由于只需用8条数据总线,因此,对应予8086的AD15~AD8这8条引脚,只作地址线使用。

(2)34号引脚的定义不同:在8086中定义为BHE信号;而在8088中定义为SS0,它与DT/R,IO/M一起用作最小方式下的周期状态信号。

(3)28号引脚的相位不同:在8086中为M/IO;而在8088中被倒相,改为IO/M,以便与8080/8085系统的总线结构兼容。

复用引脚8086:AD15~AD0,分时用作地址和数据总线;8088:AD7~AD0,分时用作地址和数据总线;8086/8088:A19~A16/S6~S3,分时用作地址和状态总线。

8086的最小/最大工作方式通过CPU的第33条引脚MN/ 来控制。

1.最小工作模式(MN/MX=1):把8086CPU的33引脚接+5V时,系统处于最小工作模式。

最小模式系统适用于单微处理器组成的小系统,系统中通常只有一个微处理器,所有的总线控制信号都直接由8086CPU产生,系统中的总线控制逻辑电路被减到最少。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
;正确 正确 ;错误 错误
微机原理与接口技术
西南交通大学本科教学
• 2、寄存器操作数
放在8个通用寄存器或 个段寄存器中的操作数 放在 个通用寄存器或4个段寄存器中的操作数
16 位 AX AH
16 位 BX BH
16 位 CX CH
16 位 DX
9
AL
BL
CL
DH
DL
微机原理与接口技术
西南交通大学本科教学
微机原理与接口技术
16
西南交通大学本科教学
指令操作例: 指令操作例:MOV AX,3102H , 执行后, 执行后,(AH) = 31H,(AL) = 02H , 立即寻址指令在存 储器中的存放形式
; AX
3102H 存储器
AX AH AL MOV操作码 操作码 代 码 段
立 即 数
操作码 8
代 码 段
例如, 例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令 , 的结果是一样的: 的结果是一样的: MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI]
12
微机原理与接口技术
西南交通大学本科教学
微机原理与接口技术
西南交通大学本科教学
3.1.2 立即寻址
操作数(为一常数 直接由指令给出(此操作数 操作数 为一常数)直接由指令给出 此操作数 为一常数 直接由指令给出 称为立即数); 称为立即数 ; 立即寻址只能用于源操作数。 立即寻址只能用于源操作数。 例: MOV AX, 1C8FH MOV AX, 3102H 错误例: 错误例: × MOV 2A00H, AX ; 错误! 错误!
微机原理与接口技术
26
西南交通大学本科教学
3.2.6 基址-变址寻址
若操作数的偏移地址: 若操作数的偏移地址: 基址寄存器(BX BP)给出 (BX或 由基址寄存器(BX或BP)给出 —— 基址寻址方式 变址寄存器(SI DI)给出 (SI或 由变址寄存器(SI或DI)给出 —— 变址寻址方式 由一个基址寄存器的内容和一个变址寄存器的内容 由一个基址寄存器的内容和一个变址寄存器的内容 的内容和一个变址寄存器 相加而形成操作数的偏移地址,称为基址 基址-变址寻址 相加而形成操作数的偏移地址,称为基址 变址寻址
20
AX, BX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
微机原理与接口技术
西南交通大学本科教学
指令操作例: 指令操作例:MOV SI,AX , 指令执行前:(AX)=2233H
; SI
(AX)
指令执行后:(AX)=2233H,(SI)=2233H
AX
2233H
SI DI BP SP CS DS ES SS
只能存放字操作数
段寄存器存放 当前操作数的 段基地址。 段基地址。
不允许将立即数传送到段寄存器。 不允许将立即数传送到段寄存器。
10
微机原理与接口技术
西南交通大学本科教学
• 3、存储器操作数
类型 存储单元个数
字节 存储器操作数 字 双字 1 2 4
一般不允许两个操作数同时为存储器操作数。 一般不允许两个操作数同时为存储器操作数。 不允许两个操作数同时为存储器操作数
8
02H 31H
17
微机原理与接口技术
西南交通大学本科教学
3.2.2 直接寻址
指令中直接给出操作数的 位偏移地址 指令中直接给出操作数的16位偏移地址。 中直接给出操作数的 位偏移地址。 偏移地址也称为有效地址(EA, Effective Address) 偏移地址也称为有效地址 默认的段寄存器为DS, 默认的段寄存器为 ,但也可以显式地指定其他段 寄存器——称为段超越前缀 寄存器 称为段超越前缀 偏移地址也可用符号地址来表示, ADDR、 符号地址来表示 偏移地址也可用符号地址来表示,如ADDR、VAR 例: MOV AX , [2A00H]
8088/8086指令系统 指令系统: 指令系统
系列) (1)指令向后兼容(x86系列) )指令向后兼容( 系列 (2)应用广泛,资料易于寻找。 )应用广泛,资料易于寻找。
3
微机原理与接口技术
西南交通大学本科教学
指令按功能分为六大类(92种) (1)数据传送类; )数据传送类; (2)算术运算类; )算术运算类; (3)逻辑运算和移位; )逻辑运算和移位; (4)串操作; )串操作; (5)控制转移类; )控制转移类; (6)处理器控制。 )处理器控制。
4
微机原理与接口技术
西南交通大学本科教学
3.1.1 指令的基本构成
目的 源
说明要执行的 说明要执行的 是什么操作
5
操作对象, 操作对象,可以 个或2个 有0个、1个或 个 个 个或
微机原理与接口技术
西南交通大学本科教学
指令举例:
MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC [BX] HLT
+
8位 16位
位移量
寄存器相对寻址常用于存取表格或一维数组中的 寄存器相对寻址常用于存取表格或一维数组中的 元素——把表格的起始地址作为位移量 把表格的起始地址作为位移量, 元素 把表格的起始地址作为位移量,元素的下 标值放在间址寄存器中(或反之) 标值放在间址寄存器中(或反之)
24
微机原理与接口技术
•(见下页图示) (见下页图示)
25
微机原理与接口技术
西南交通大学本科教学
MOV AX
DATA[BX]
. . . DS 6000 BX 1000 + DATA 2A00 63A00
AX AH AL 操作码 00 偏移量低 2A 偏移量高
代 码 段
. . . 63A00H
66H 55H
据 段 数
. . .
SI
2233H
21
微机原理与接口技术
西南交通大学本科教学
3.2.4 寄存器间接寻址
操作数的偏移地址(有效地址 )放在寄存器 寄存器中 操作数的偏移地址(有效地址EA)放在寄存器中,操作数本身 放在存储器。 放在存储器。 只有SI DI、BX和BP可作间址寄存器 对应不同的段寄存器。 SI、 可作间址寄存器, 只有SI、DI、BX和BP可作间址寄存器,对应不同的段寄存器。 (BX) (SI) EA = (DI) (BP) 例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : × MOV AX, [DX] × MOV CL, [AX]
AH
AL
23102H
MOV操作码 操作码 02H 31H
码 段

. .
数 据 段
CDH ABH
19
微机原理与接口技术
西南交通大学本科教学
3.2.3 寄存器寻址
操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV MOV 错误例: 错误例: × MOV × MOV
西南交通大学本科教学
例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP+1000H] ; 默认段寄存器为 默认段寄存器为SS 指令操作例: 指令操作例:MOV AX,DATA[BX] ,
• • • • 若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H 指令执行后: 指令执行后:(AX)=5566H )
6
微机原理与接口技术
西南交通大学本科教学
部分8088常用指令
指令类型 数 据 传 送 算 术 运 算 数据传送 地址传送 输入输出 加法 减法 乘/除法 逻辑 移位 串操作 控制转移
7
助记符 MOV,PUSH/POP,XCHG等 LEA,LDS,LES IN,OUT ADD,ADC,INC SUB,SBB,DEC,NEG,CMP MUL,IMUL,DIV,IDIV AND,OR,NOT,XOR,TEST SHL/SHR/SAR,ROL/ROR,RCL/RCR MOVS,CMPS,SCAS,LODS,STOS JMP,JXX,LOOP,CALL/RET,INT/IRET
14
微机原理与接口技术
西南交通大学本科教学
3.2 8086的寻址方式
寻址方式——寻找操作数所在地址的方法 寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址。 在8086指令系统中,说明操作数所在地址 的寻址方式可分为8种:
①立即寻址 ②直接寻址 ③寄存器寻址 ④寄存器间接寻址
15
⑤ 寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址 ⑧隐含寻址
11
微机原理与接口技术
西南交通大学本科教学
存储单元的物理地址 存储单元的物理地址 = 段基地址 + 偏移地址
若指令中没有指明所涉及的段寄存器,CPU就 采用默认的段寄存器来确定操作数所在的段。 表3.3 段寄存器使用的一些基本约定 存储器操作数的偏移地址(也称有效地址) 存储器操作数的偏移地址(也称有效地址)可以通过 不同的寻址方式由指令给出。 不同的寻址方式由指令给出。
MOV DX , ES: [2A00H] MOV SI , TABLE_PTR
18
微机原理与接口技术
西南交通大学本科教学
指令操作例: 指令操作例:MOV AX,[3102H] , AL (3102H) , AH (3103H)
如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 存储器 20000H+3102H = 23102H 指令执行后:(AX) = ABCDH
相关文档
最新文档