8088[8086]指令格式(有用)

合集下载

微机原理与接口技术:乘、除法指令

微机原理与接口技术:乘、除法指令

3. 乘法指令MUL,IMUL,AAM乘法指令包括无符号数乘法指令MUL、有符号数乘法指令IMUL和乘法的十进制调正指令AAM。

8088/8086CPU乘法指令能实现字节乘法和字的乘法。

字节乘法的乘积为16位存放在AX中,字的乘法的乘积为32位存放在DX:AX。

指令的目的操作数采用隐含寻址方式。

(1)无符号数乘法指令MUL指令格式:MUL src功能:如果src为字节类型,累加器AL与src相乘,结果存在AX中;如果src为字类型累加器AX与src相乘,结果存在DX:AX中。

说明:两个乘数的数据类型要相同,指令影响标志位CF,OF位。

例如:MUL AH ;AL×AH 结果保存在AX中。

MUL BX ;AX×BX结果保存在DX:AX中。

MUL BYTE PTR[SI] ;AL×[SI]结果保存在AX中。

MUL WORD PTR[BX+DI] ;AX×[BX+DI]结果保存在DX:AX中。

字节相乘的乘积在AX中,如果标志位CF=OF=1,表明AH不为0;字相乘的乘积在DX:AX中,如果标志位CF=OF=1,表明乘积的高位DX不为0。

(2)有符号数乘法指令IMUL指令格式:IMUL src功能:指令的功能和用法与MUL指令相同,只是操作数为带符号数,结果也是带符号数。

说明:指令影响标志位CF、OF位。

如果标志位CF=OF=0,表明乘积的高位部分是低位的符号扩展,可以忽略。

如果标志位CF=OF=1,表明DX含有乘积的高位,不能忽略。

(3)乘法的十进制调正指令AAMAAM指令完成AL中数的调正。

使用AAM的前提是两个非压缩BCD码相乘,乘积在AL中,AH=0。

指令格式:AAM功能:把AL寄存器的内容除以0AH,商存在AH中,余数存在AL中。

例如:MOV AL, 8MOV BL, 7MUL BLAAM ;AH=5,AL=64. 除法指令DIV,IDIV,CBW,CWD,AAD除法指令包括无符号数除法指令DIV,带符号数除法指令IDIV。

48086CPU指令系统

48086CPU指令系统
• 不能使用段寄存器
XCHG DS,ES XCHG AX,DS XCHG DS,[ BX ] • 不能使用双存储器 XCHG [ BX ],[ SI ] • 不能使用立即数 XCHG AX,2000H XCHG 20H,BL
《例》用 MOV、PUSH,POP、XCHG 指令 完成两寄存器AX、BX 中数据的交换
• 指令格式

指令功能
OPR1、OPR2 两个操作数间交换数据
数据传送类指令
XCHG指令的应用范围
• 通用寄存器与通用寄存器间交换数据
XCHG AX,BX XCHG DL,CH • 通用寄存器与存储器间交换数据 XCHG AX,[ BX ] XCHG [ SI ],AL
数据传送类指令
XCHG指令的 禁用情况
通用传送指令 PUSH、POP 中 src、dst 操作数的使用
• 为通用寄存器、段寄存器操作数
PUSH AX、PUSH ES POP DS、 POP BX • 为存储器操作数 PUSH [ 2000H ]、PUSH [ BX ] POP [ BX ]、 POP [ 1000H ]
通用传送指令PUSH、POP中 src、dst 操作数的禁用
数据传送类指令
指令 LEA 与 LDS,LES 的区别
• LEA src
scr 表示存储器地址本身
• LDS r,src
LES r,src src 表示存储器地址中的值
地址传送指令的比较
已知:DS=09A0H,BX= 0048H
LEA DI,[BX] → 执行后:DI=0048H 等价于 MOV DI,OFFSET [BX] LDS DI,[BX] → 执行后:DI=003EH DS=0816H LES DI,[BX] → 执行后:DI=003EH ES=0816H Memory

8086(8088)指令手册

8086(8088)指令手册
源操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数不允许是立即数,其他同源操作数。且不允许两者同时为存储器操作数。
ADC d,s
;d←d+s+CF
带进位加法。
指令的操作过程与ADD指令基本相同,惟一的不同是进位标志位CF的原状态也将一起参与加法运算,待运算结束,CF将重新根据结果置成新的状态。
IN AL,DX;AL←(端口(DX))
IN AX,DX;AX←(端口(DX))
注意:I/O指令只能用累加器作为执行I/O数据传送的机构,而不能用其他寄存器代替。另,当用直接I/O指令时,寻址范围仅为0~255,这适用于较小规模的微机系统;当需要寻址大于255的端口地址时,则必须用间接寻址的I/O指令。例如,在IBM PC/XT微机系统中,既用了0~255范围的端口地址,也用了255~65535范围的端口地址。
IMUL s
有符号乘法指令,它完成两个带符号的8/16位二进制相乘的功能。
对于两个带符号的数相乘,如果简单采用与无符号数乘法相同的操作过程,那么会产生完全错误的结果。为此,专门设置了IMUL指令。
IMUL指令除计算对象是带符号二进制数以外,其他都与MUL是一样的,但结果不同。
IMUL指令对OF和CF的影响是:若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1。它仍然可用来判断相乘的结果中高一半是否含有有效数值。另外,IMUL指令对其他标志位没有定义。
表三、数据寄存器的隐含使用………………………………………………第19页
表四、标志寄存器……………………………………………………………第20页
8086/8088指令分类
8086/8088的指令按功能可分为6类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制。

第二章 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 汇编指令手册一、常用指令二、算术运算指令三、逻辑运算指令四、串指令五、程序跳转指令------------------------------------------计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。

对低16位数据的存取,不会影响高16位的数据。

这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。

可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。

它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。

在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

指令格式及寻址方式

指令格式及寻址方式
指令执行前,计算机各寄存器的内容为: DS=2000H,BX=2150H,T{ABLE=2060H,IP=2100H。操作数 存储单元的物理地址= } 16×DS+TABLE+BX=20000+2060+2150=241B0H 执行前,IP=2100H,(241B0H)=50H,(241B1H)=30H 执行后,IP=3050H 从此例看出,转移地址存放在数据段的相继两个存储单元 中,而存储单元的有效地址是TABLE和BX寄存器的内容相 加而成。注意,TABLE
特点:指令中直接给出操作数在段内的偏移量,段基 址隐含给出或用段前缀指明。该寻址方式适用于处理单个变
一般操作数存放在数据段,故操作数的物理地址为 物理地址=(DS)× 16D+ EA
=(段基址的寄存器)× 16 + 偏移地址
1.3与数据有关的寻址方式
【例3.4】已知(DS)=4000H,[42000H]=3355H MOV AX,[2000H]
1.3与数据有关的寻址方式
(3)寄存器相对寻址方式(register relative addressing 特点:操作数的有效地址是一个基址寄存器或变址寄存器的 内容和指令中指定的8位或16位位移量(即偏移量)之和。 适用于表格处理,修改基址或变址寄存器的内容来取得表格
{ 物理地址=16D×(DS){}+
ADD AX, BX
1.18086/8088的通用指令格式
对有操作数的指令,在执行指令所规定的操作之前首 先要寻找操作数。指令中的操作数字段实质上是指出参加 操作运算的操作数存放在何处。一般来说,操作数存放在 指令代码中,称为立即数;操作数存放在CPU寄存器中, 称为寄存器操作数;操作数存放在内存单元中,称为存储 器操作数; 操作数也可存放在I/O端口内。寻找这些操作 数的方式称为寻址方式,即指令中用于说明操作数或操作 数所在地址的方法。

微机原理第2章

微机原理第2章

SS用来存放堆栈段的段基址,SP用于指示堆栈的顶部单 元的段内偏移量,开始时堆栈内没有数据,栈顶就是栈底, 故开始时要将栈底单元的偏移量赋给它,以指明栈低位置。 (3).堆栈操作指令 ⊙入栈指令PUSH 格式:PUSH OPS 功能:将操作数OPS的内容压入堆栈中。 允许的操作数:OPS可以是通用寄存器,段寄存器或存储 器,必须为字操作数。 操作过程:①SP←SP-1,OPS的高字节→栈顶单元; ②再次SP←SP-1,OPS的低字节→栈顶单元。 例如:PUSH AX 执行前:AX=1234H,SP=2000H。堆栈情况如图2-5(a), 执行后:(1FFEH)=1B5DH,AX的内容不变。堆栈情况如图2 -5(b)所示。
1.立即寻址 当需要的操作数为常数时,操作数可以在指令中直 接给出,这种寻址方式称为立即寻址方式。
例:MOV AX,1234H
MOV 34H 12H AH AL ┇
2.寄存器寻址
当指令所需要的操作数在寄存器中时,在指令中指出需访问 的寄存器名字即可,这种寻址方式称为寄存器寻址。
例:MOV AX,BX
AX BX
MOV BL,AX
(错)
注意:源、目的操作
数类型要一致
3.直接寻址 在这种寻址方式中,操作数在内存单元中,并且在指 令中直接给出这一单元的逻辑地址。 例:MOV AX,DS:[100H] 设DS=2000H,寻址过程如图所示。
4.寄存器间接寻址 在这种寻址方式中,操作数在内存单元中, 并且在指令中按如下方式给出这一单元的逻辑地址: 段基址:段基址的给出同直接寻址。 偏称量:以寄存器SI、DI、BP、BX之一的内容作为偏移 量。 例:MOV AX,[BX] 设(BX)=1200H
(4).比较指令CMP 格式:CMP OPD,OPS 功能:OPD-OPS,但不保存运算的结果只是根据结果设置 状态标志位。 (5).求补指令NEG 格式:NEG OPD 功能:OPD←0-OPD. 允许的操作数:同INC指令 3.乘法指令 (1)无符号数乘法指令MUL 格式:MUL OPS 功能:实现二个无符号数的二进制乘法,可以为字或字节 乘法,由乘数OPS决定。

8086-8088 CPU的寻址方式

8086-8088 CPU的寻址方式
3. 段间直接转移寻址 指令直接提供了转移目标段地址和偏移地址 例:JMP FAR PTR NEXT NEXT是符号地址,它所在的段地址送CS寄存 器,所在的偏移地址送IP寄存器 4.段间间接转移寻址 用存储器中二个连续字内容取代IP和CS寄存器 中的原始内容以达到段间转移的目的 例3.12:JMP DWORD PTR [BP][SI]
MOV AX,ES:[VALUE]
微机原理
1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
微机原理
1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这 种寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
微机原理
1.6 基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容 和一个变址寄存器的内容之和 基址寄存器:BX、BP 变址寄存器:SI 、DI
MOV AX,[BX] [DI] 也可写成 MOV AX,[BX+DI] 1.7 相对基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容、 一个变址寄存器的内容和一个8位或16位的位移 量之和。 MOV AX,ADDR[BP+SI]

第三章 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 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合

(汇编语言教程)5_80868088汇编语言-2

(汇编语言教程)5_80868088汇编语言-2

104H DUP(11H 104H DUP(11H)
DUP( DUP(0)
ENDS
ENDS DATA2 DATA2 SEGMENT PARA DB COMMON ‘DATA2’ DATA2 DATA N2 DATA2 DATA2 105H DUP( 105H DUP(0)
DATA2 DATA2 N1 DATA2 DATA2 END
默认值为: 默认值为:PARA
III、 III、组合类型
段名 SEGMENT [定位类型] [组合类型] [使用类型] [‘类别’] 定位类型] 组合类型] 使用类型] [‘类别 类别’ …… …… ; 语句序列 段名 ENDS
PRIVATE:私有段,不进行组合。 PUBLIC:
– 不同模块中的同为public属性的同名段连接组合成一个逻辑段。
3、过程定义伪指令
格式: 格式:过程名 [类型 类型] PROC [类型] … 过程体语句 RET 段名 ENDP PROC和ENDP是成对出现的 是成对出现的。 PROC和ENDP是成对出现的。 类型有近(NEAR)和远(FAR)两种, 类型有近(NEAR)和远(FAR)两种,若过程缺省 NEAR缺省 则属默认值。若为远过程, FAR不 缺省, 或NEAR缺省,则属默认值。若为远过程,则FAR不 能省略。 能省略。 过程名具有段地址、 过程名具有段地址、段内偏移量和类型三个属 性。
2、源程序开始和结束伪指令
程序开始伪指令
– NAME伪指令 NAME伪指令 – TITLE伪指令 TITLE伪指令
程序结束伪指令
– END
(1)程序开始伪指令NAME 程序开始伪指令NAME
NAME伪指令 NAME伪指令 格式: 格式:NAME 模块名 含义:表示一个模块的开始, 含义:表示一个模块的开始,并给出该模 块名。 块名。

汇编语言-指令集

汇编语言-指令集

例:假设(SS) = 2250H , (SP) = 0140H 如果在堆栈中存入5个数据,则栈顶的物理地址是多少? 未存入数据之前物理地址=22500 + 0140=22640H 存入5个数据,栈顶的物理地址为: 22640 – 0A = 22636H
如果又从堆栈中取出3个数据,则栈顶的物理地址是多少? 22636 + 6 = 2263CH
80x86/8088指令系统 8086/8088的指令系统丰富,而且指令的功能也强。 大多数指令既能处理字数据,又能处理字节数据。 指令系统可分为如下6个功能组: (1)数据传送 (2)算术运算 (3)逻辑运算 (4)串操作 (5)程序控制 (6)处理器控制 汇编语言中,指令语句可由四部分组成,一般格式如下: [标号:] 指令助记符 [操作数1 [,操作数2]] [;注释]
例如:PUSH AX 假设(AX) = 2107H
(2)出栈指令POP 格式: POP DST 执行的操作:从堆栈顶弹出一个字数据到目的操作数DST。 步骤为: 1. 把堆栈指针寄存器SP所指的字数据送往目的操作数DST; 2. 堆栈指针寄存器器SP的值加2。 DST可以是通用寄存器、段寄存器(CS除外),也可以是字 存储单元
3.加1指令INC(INCrement) 其格式如下:INC OPRD (OPRD) <- (OPRD) + 1 功能:对操作数加1. OPRD可以是通用寄存器,也可以是存储单元。 指令执行的结果影响ZF、SF、OF、PF、AF, 但不影响CF. 改指令主要用于调整地址指针和用于计算器。
例:写出把首地址为BLOCK的字数组的第6个字送到DX寄存 器的指令。 (1)使用寄存器间接寻址 MOV BX , OFFSET BLOCK ADD BX , 000AH MOV DX , [BX] (2)寄存器相对寻址 MOV BX , OFFSET BLOCK MOV DX , [BX + 000AH]

8086复习资料

8086复习资料
BP、SI、DI等地址指针寄存器指定或由指令直接给出 存储单元相对于所处段起始地址的16位段内偏移量(也 称偏移地址或有效地址)。 以段值:段内偏移量形式表示的地址称为逻辑地址。
(段地址:偏移地址)
存储器的每个段的容量为64KB,并允许在整个存储空间内浮动, 即段与段之间可以部分ห้องสมุดไป่ตู้叠、完全重叠、连续排列,非常灵活。
本章小结21微处理器的主要性能指标2280868088的内部结构eubiu14个regflag各位功能2380868088的引脚功能与工作方式最小最大引脚分时复用系统结构2480868088的总线周期与工作时序概念4个t状态tw了解时序2580868088的存储器和io端口组织分段结构逻辑地址物理地址2632位80x86微处理器不要求第三章80868088的指令系统3180868088的指令格式与寻址方式3280868088指令系统详解3180868088的指令格式与寻址方式一80868088指令的基本格式操作码操作数指令长度为16b其中操作码12b如
二、8086/8088指令的寻址方式 寻址方式:指令中操作数所在地址的表示方式。
微处理器原理与接口技术 (第1-8章)
计算机的基本结构框图
(1)运算器:是计算机对各种数据进行运算,对各 种信息进行加工、处理的部件,因此,它是数据 运算、加工和处理的中心。
(2)存储器:是计算机存放各种数据、信息和执行 程序的部件。存储器又分主存储器(又称内存) 和辅助存储器(又称外存)。 (3)输入设备:它给计算机输入各种原始信息,包 括数据、文字、声音、图像和程序,并将它们转 换成计算机能识别的二进制代码存入存储器中。 常用的输入设备有键盘、鼠标、扫描仪,手写板 及数码相机等。
3. BIU与EU的协调工作

汇编-第3章 8086指令系统

汇编-第3章 8086指令系统

3.3 指令的执行时间
3.4 8086/8088指令系统
3.1 8086/8088指令格式
机器指令:指挥计算机完成某种操作的命令。
从计算机组成的层次结构来说,计算机指令 有机器指令、伪指令和宏指令之分。
指令格式如下:
操作符 目的操作数,源操作数
3.2 8086/8088寻址方式
3.2.1 固定寻址(隐含操作数)
数据类型不匹配 不允许两个操作数都是存储器单元 目的操作数不允许是立即数
注意事项:
MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; MOV指令中绝对不允许在两个存储单元之间直接传送数据;
MOV指令中绝对不允许在两个段寄存器之间直接传送数据;
MOV指令不会影响标志位
练习: p33-3.12, 3.13 p34-3.14
B0 05
指令
例: MOV AX, 3045H
执行指令后: (AX) = 3045H 练习: p25-3.1,3.2
AX 30 45
存储器
低地址
OP 45 30
指令
高地址
3.2.3 寄存器寻址 特点:操作数存在寄存器中
例: MOV AX, BX
执行指令前: (AX) = 3045H
执行指令后: (AX) = 4000H
Байду номын сангаас
注意:当 指令中的偏移量为0时,则可以缺省,此时的寻址方式 也称为基址变址寻址方式
例:设 ( SS ) = 3000H ( BP ) = 2000H ARRAY = 0250H ( SI ) = 1000H MOV AX, ARRAY[BP][SI]
要访问的存储单元物理地址为: 30000H+2000H +0250+1000H = 33250H

第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所示。

8086-8088 CPU的移位指令

8086-8088 CPU的移位指令
对标志位的影响:无
微机原理
(3)重复前缀 REPNE/REPNZ 指 令 格 式 : REPNE( 或 REPNZ) String Primitive。 执行操作:重复前缀指令REPNE/REPNZ除退 出条件为CX=0或ZF=1外,其它操作与REPE 完全相同。 对标志位的影响:无。
微型计算机基本原理与接口技术
微型计算机基本原理与接口技术
微机原理
8086/8088 CPU的移位指令
⑴算术与逻辑移位指令
①SHL 逻辑左移指令 指令格式:SHL OPR,CNT 执行操作:见图3.15⑴ 影响的标志位:OF、SF、ZF、PF、CF。 AF不确定 例: MOV AL,02H
SHL AL,01
0
例: MOV AL,11H
MOV CL,02H
RCL AL,CL
CF
OPR
微机原理
④RCR 带进位循环右移指令
指令格式:RCR OPR,CNT
执行操作:见图3.15⑺。
对标志位的影响与RCL指令相同
MOV AL,41H
MOV CL,02H
RCR AL,CL
OPR
微机原理
CF
微机原理
例:MOV CL,4 MOV S来自 , 1450H ROL SI,CL
指令执行后SI=4501H,CF=1,OF=1 例: MOV CL,44H
ROL SI,CL 如果指令执行前SI=1450H 则指令执行后SI=4501H,CF=1,OF=1。
微机原理
3.2.4 串操作指令 1.重复前缀 (1)重复前缀 REP 指令格式:REP String Primitive。 执行操作:a)CX=0,退出重复,否则往下执行;
(b)CX←CX-1; (c)执行其后的串指令; (d)重复(a)~(c)。 对标志位的影响:无。

8086及8088指令系统1(寻址方式)

8086及8088指令系统1(寻址方式)
7
助记符
数据传送 MOV,PUSH/POP,XCHG等
8088/8086的操作数分为 类 的操作数分为4类 的操作数分为
操作数
数据(立即数) 数据(立即数) 地址: 寄存器(名称 存储器单元(地址) 名称)、 地址 寄存器 名称 、存储器单元(地址) I/O接口的端口(地址) 接口的端口( 接口的端口 地址)
3、存储器操作数
表示当前参加运算的数存放在存储器的某1/2/4个单元中 个单元中 表示当前参加运算的数存放在存储器的某
类型
字节 存储器操作数 字 双字
存储单元个数
1 2 4
11
一般不允许两个操作数同时为存储器操作数 一般不允许两个操作数同时为存储器操作数 不允许两个
存储单元的物理地址 存储单元的物理地址 = 段基地址×16 + 偏移地址
15
3.2
8086的寻址方式 8086的寻址方式
寻址方式——寻找操作数的方法 寻址方式 寻找操作数的方法
寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 在8086指令系统中,操作数所在地址的寻址 方式可分为8种:
①立即寻址 ②直接寻址 ③寄存器寻址 ④寄存器间接寻址 ⑤ 寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址 ⑧隐含寻址
,立即 存放在
存的
码 中18
3.2.3 寄存器寻址
操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV MOV MOV 错误例: 错误例: × MOV × MOV AX, BX [3F00H], AX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
8088/8086指令系统 指令系统: 指令系统 系列) (1)指令向后兼容(x86系列) )指令向后兼容( 系列 (2)应用广泛,资料易于寻找 )应用广泛,

8086七种寻址方式

8086七种寻址方式

8086/8088七种寻址方式(一)8086/8088寄存器组(二)8086/8088寻址方式(1)立即寻址方式操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。

这种操作数称为立即数,立即数可以是8位的也可以是16位的,如果立即数是16位的按“高高低低”的原则。

例如指令:MOV AX,1234H的存储和执行情况如下图:图中指令存放在代码段中,OP表示该指令的操作码部分再例如:MOV AL,5 则指令执行行,(AL)=05HMOV BX,3064H 则指令执行后,(BX)=3064H(2)寄存器寻址方式操作数在CPU内部的寄存器中,指令指定寄存器号。

对于16位操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP,和BP等:对于8位数,寄存器可以是:AL,AH,BL,BH,CL,CH,DL,DH。

这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。

例如:MOV AX,BX如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变例如:MOV SI,AXMOV AL,DH(3)直接寻址方式操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。

操作数一般存放在数据段所以操作数的地址由DS加上指令中直接给出的16位偏移得到。

如果采用段超越前缀,则操作数也可含在数据段外的其他段中。

如下图所示:在汇编语言指令中,可以用符叼地址代替数值地址。

如:MOV AX,VALUE此时VALUE为存放操作数单元的符号地址。

如写成:MOV AX,[VALUE]也是可以的,两者是相等的。

如VALUE在附加段中,则应指定段超越前缀如下:MOV AX,ES:VALUE或MOV AX,ES:[VALUE]直接寻址方式常用于处理单个存储器变量的情况。

它可实现在64K字节的段内寻找操作数。

直接寻址的操作数通常是程序使用的变量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录:8086/8088 指令码格式
我们用汇编语言写的汇编程序输入计算机后,由机器提供的汇编程序将其翻译成由机器指令(指令码)组成的机器语言程序,才能由计算机识别并执行,因此汇编语言程序需由汇编程序翻译成可执行的机器语言程序,一般来说,这一过程不需要人为干预。

我们在这里只介绍一下基本原理,以便在必要时也可以用手工的方式完成类似的工作。

8086/8088 指令系统的指令程序类型很多,功能很强,各种指令由于功能不同,需要指令码提供的信息也不同。

为了满足不同用户的功能的要求又要减少指令所占的空间,8086/8088 指令系统采用了一种灵活的,由1~6 个字节组成的变字长的指令格式,包括操作码、寻址方式以及操作数3 部分,如图2所示。

通常指令的第一字节为操作码,规定指令的操作类型。

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

可变字长的指令主要体现在这里,一般由其指出存储器操作数地址位移量或立即数。

操作码(第一字节)及寻址方式字节(MOD字段)格式如下。

图1 8086/8088操作码及寻址方式字段格式
第一字节中,W 指出操作数类型:W=0 为字节,W=1 为字。

D 指出操作数的传送方向:D=0 寄存器操作数为源操作数,D=1 寄存器操作数为目标操作数。

第二字节指出所用的两个操作数存放的位置,以及存储器中操作数有效地址EA 的计算方法。

图2 8086/8088 不同字长的指令码格式
REG 字段规定一个寄存器操作数,它作为源操作数还是目标操作数已由第一个字节中的D 位规定。

由REG 字段选择寄存器的具体规定见表1。

表1 REG 字段编码表
MOD 字段用来区分另一个操作数在寄存器中(寄存器寻址)还是在存储器中(存储器寻址)。

在存储器寻址的情况下,还用来指出该字节后面有多少偏移量字节(即指出存储器操作数地址偏移量的字节数)。

MOD 字段编码表见表2。

表2 MOD 字段编码表
R/M 字段受MOD 字段将指出第二操作数所在寄存器编号。

MOD=00,01,10 为存储器方式,R/M 则指出如何计算存储器中操作数地址。

MOD 与R/M 字段组合的寻址方式见表3。

表3 各种MOD 与R/M 字段组合编码及有关地址的计算
例如:指令MOV AH,[BX+DI+50H]。

代码格式如下。

OPCODE D W MOD REG R/M DISP—8
指令码:8A6150H。

指令ADD DISP [BX] [DI],DX;DISP=4523H
代码格式:
OPCODE D W MOD REG R/M DISP—Lo DISP—Hi
指令码为:01 91 23 45H。

相关文档
最新文档