微型机指令系统课件_第1页
微型机指令系统课件_第2页
微型机指令系统课件_第3页
微型机指令系统课件_第4页
微型机指令系统课件_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、段基址(16位)0000偏移地址(16位)+物 理 地 址(20位)8086/8088的的存储器管理段基址寄存器与偏移地址寄存器的隐含对应关系1. 取指操作 CSIP2. 数据存取 DSBX、DI、SI、direct(存储器直接地址)3. 串操作 DSSI ESDI4. 堆栈操作 SSSP5. BP的间接寻址 SSBP1第二章微型机指令系统第一节 寻址方式操作码:规定指令进行什么操作。操作数:规定指令操作的对象。寻址方式:寻找操作数所在地址的方式。(共七种)一、立即寻址MOV CL,05MOV AX,1000H立即数 操作码操作数立即寻址中的操作数作为指令的一部分存放在代码段中,在取指阶段数据

2、随指令一起被取到CPU,这种数据在指令格式中的直接表现为常数。立即寻址方式主要用于给寄存器或存储器赋初值。2第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址MOV SS,AX(累加器的内容传送给堆栈段寄存器)MOV AX,BX(将基址寄存器的内容传送给累加器)指定某些CPU寄存器存放操作数,由于操作数在CPU寄存器中,指令执行过程中不必通过访问内存而取得操作数,因此执行速度很快3第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址(存储器寻址)MOV AX,1000H直接寻址隐含段为数据段DS,但允许段超越。 MOV AX,ES:1000H MOV AX,S

3、S:1000H MOV AX,CS:1000H12 34直接寻址指令在指令的操作码后面直接给出操作数的偏移地址,它与操作码一起存放在存储器的代码段,高地址对应高8位,低地址对应低8位,但是操作数本身一般存放在内存的数据段。默认段地址为DS。段地址*10+偏移地址4第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址(存储器寻址)四、寄存器间接寻址(存储器寻址)MOV AX,BX直接寻址指令在指令的操作码后面没有直接给出操作数的偏移地址,而是寄存器(DI、SI、BX、BP)存放操作数16位偏移地址。存储器操作数的寻址方式中,数据都存放于存储单元中,指令操作过程中需要BIU通

4、过一个总线周期的访问,才能获取操作数。5第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址四、寄存器间接寻址五、变址寻址 变址寄存器(SI、DI)的内容加上指令中给出的位移量,得到操作数的有效地址。MOV BX,SI+1003H 变址寻址指令的几种不同形式 MOVAL , TABLESI MOV AL , SI+TABLE MOV AL , SI+TABLE6变址寻址举例MOV AX,BX+SI 操作如图所示 数据段3000H:0000H3000H:3000H34H12HAHAL20H00HBX+10H00HSI+ 3 0 0 0 0(段基址)+ 3 0 0 0(偏移地

5、址) 7第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址四、寄存器间接寻址五、变址寻址六、基址寻址 基址寻址和变址寻址类似,不同之处在于指令使用基址寄存器(BX、BP)的内容加上指令中给出的位移量,而不是变址寄存器(SI、DI)。8第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址四、寄存器间接寻址五、变址寻址六、基址寻址七、基址-变址寻址 基址寄存器(BX、BP)的内容、变址寄存器(SI、DI)的内容和指令中给出的位移量三者相加,得到操作数的有效地址。MOV AX,COUNTBXSIMOV AX,BX+COUNTSI MOV AX,BX+SI

6、+COUNT MOV AX,BXCOUNTSI MOV AX,BX+SICOUNT MOV AX,COUNTSIBX9第二章微型机指令系统第一节 寻址方式一、立即寻址二、寄存器寻址三、直接寻址四、寄存器间接寻址五、变址寻址六、基址寻址七、基址-变址寻址MOV AX,CountBXSIBX: 1000HSI: 0B00H Count: 0500H基址-变址寻址方式是前面两种寻址方式的结合指令中规定一个基址寄存器(BP、BX)和一个变址寄存器(SI、DI),同时给出一个8位或者16位的位移量,将三者的内容相加就得到了操作数的偏移地址(有效地址、逻辑地址、EA)。10第二章微型机指令系统第一节 寻址

7、方式第二节 8086/8088指令系统数据传送指令算术运算指令逻辑运算和移位指令串操作指令控制转移指令处理器控制指令8086总共有90多种基本指令,按照功能,可分为六大类:11第二节 8086/8088指令系统一、数据传送指令通用数据传送指令输入、输出指令目标地址传送指令标志传送指令传送指令是将数据送寄存器或者存储单元中;在寄存器之间、寄存器与存储器之间进行数据传送。按照其功能不同,可分为:12第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令指令格式MOV D ,S寄存器 存储器 段寄存器 (代码段寄存 器cs除外)寄存器 存储器 段寄存器 立即数注:不能用MOV指令直接完

8、成以下传递存储单元之间的传递立即数至段寄存器的传递段寄存器之间的传递若想实现上述传输,必须使用两条MOV指令来实现:DEST:目标操作数;SRC:源操作数 D S1. MOV (Movement) 一般传送指令将源操作数送入指定目的操作数13举例存储单元之间的传送(MEM1 MEM2 ):MOV AX, MEM1 ; 先将MEM1传送至通用寄存器MOV MEM2, AX; 先将通用寄存器传送至MEM2段寄存器之间的传递(DS ES ):MOV AX, DS; 段寄存器传送至通用寄存器MOV ES, AX; 从通用寄存器传送到段寄存器同样可以实现立即数至段寄存器的传输间接传递举例:14第二节 8

9、086/8088指令系统一、数据传送指令(一)通用传送指令1. MOV (Movement) 一般传送指令2. PUSH 入栈指令指令格式PUSH s操作(SP)(SP)-2;(SP)+1:(SP) s例: PUSH AX 已知:AX=9ABCH; SS=3400H; SP=0562H;9AHBCH功能:将堆栈指针上移两个字节后将源操作数压入堆栈 SS*10+SP冒号前后表示两个地址连续的储存单元15第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令1. MOV (Movement) 一般传送指令2. PUSH 入栈指令3. POP 出栈指令(LIFO)指令格式POP d操作

10、d (SP)+1:(SP) (SP)(SP)+2;例: POP AX 已知: AX=9ABCH; SS=3400H; SP=0560H;ALAH9AHBCH将栈顶内容弹到目的操作数中,然后堆栈的栈顶指针下移两个字节 16第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令1. MOV (Movement) 一般传送指令2. PUSH 入栈指令3. POP 出栈指令XCHG(Exchange) 交换指令指令格式XCHG d,S;d s寄存器 寄存器寄存器 存储器例:功能:将源操作数、目的操作数内容互换MOV AX,BX操作如图所示 BHBLBXAHALAX两个操作数不能同为存储器

11、操作数。段寄存器的内容不能参加交换。注17第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令5. XLAT(Translate) 字节查表指令指令格式XLAT s_table查表方式功能:ALDS:BX+AL。把BX的内容作为数据段中数据表的首地址,AL内容为查表的项数,将其对应的字节单元的值再送给AL 3000H:0000H3000H:2000H3000H:2005H数据段+2000BX表首址查表项+AL05HAL05H34H34H18第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令1. MOV (Movement) 一般传送指令2. PUSH 入栈指令

12、3. POP 出栈指令XCHG(Exchange) 交换指令5. XLAT(Translate) 字节查表指令19第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令(二)输入输出指令1. IN I/O口输入指令指令格式IN ACC , port; (ACC) (port)IN AL , data8 IN AX , data8 IN AL , DX IN AX , DX具体形式输入指令IN用于从I/O端口接收数据输入指令从I/O端口port中输入一个字节到累加器。20第二节 8086/8088指令系统一、数据传送指令(二)输入输出指令1. IN I/O口输入指令指令格式OUT

13、port,ACC ; (port) (ACC)OUT data8 , AL OUT data8 , AX OUT DX , AL OUT DX , AX具体形式OUT或者IN指令,无论接收到的数据或者准备发送的数据都必须在累加器中AX(字)或AL(字节)中,所以这两条指令时累加器专用指令。2. OUT I/O口输出指令输出指令OUT用于从I/O端口输出数据输出指令从累加器输出一个字节到I/O端口port。21第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令(二)输入输出指令(三)目标地址传送指令1. LEA 偏移地址传送指令指令格式LEA reg16 , mem16 通用寄

14、存器 AX、BX、CX、DX、BP 、SP、 DI、 SI例:LEA AX , BPDI LEA BX , BUFFER LEA DX , BETABXSI LEA CX , SI+100AHMOV BX , OFFSET BUFFER功能:将源操作数的有效地址送指定寄存器 22第二节 8086/8088指令系统一、数据传送指令(三)目标地址传送指令1. LEA 偏移地址传送指令LEA、MOV的区别LEA CX , SI+100AHMOV CX , SI+100AH已知:DS: 2000H,SI: 0030HCX1234CX10 3AMOV指令时将内容传送到CX,而LEA将偏移地址传送到CX。

15、23第二节 8086/8088指令系统一、数据传送指令(三)目标地址传送指令1. LEA 偏移地址传送指令2. LDS DS段指针装入指令LDS:LDS REG,MEM 功能:将MEM所对应的双字存储单元数据的高字送入DS,低字送入指令指定的寄存器 。MEM为双字数据。LDS BX,DI指令执行如图所示 :数据段4000H:0000H0100HDIXXXXHBXXXXXHDS4000H:0100H55H66H33H44H双字6655HBX4433HDS3.LES的原理与LDS相似24第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令(二)输入输出指令(三)目标地址传送指令(四

16、)标志传送指令1. LAHF 将标志位装入AH指令指令格式 LAHF 功能:将标志寄存器的低8位送入AH寄存器。CFPFAFZFSFTFIFDFOF15118740AH25第二节 8086/8088指令系统一、数据传送指令(四)标志传送指令2. SAHF 将AH存入标志位指令指令格式 SAHF 功能:将AH寄存器送入标志寄存器的低8位。CFPFAFZFSFTFIFDFOF15118740AH1. LAHF 将标志位装入AH指令26第二节 8086/8088指令系统一、数据传送指令(四)标志传送指令2. SAHF1. LAHF3. PUSHF 标志位入栈指令指令格式 PUSHF 操作(SP)(S

17、P)-2;(SP)+1:(SP) flags4. POPF 标志位出栈指令指令格式 POPF 操作flags (SP)+1:(SP) (SP)(SP)+2;将标志寄存器内容压入栈顶将栈顶内容送标志寄存器27第二节 8086/8088指令系统一、数据传送指令(一)通用传送指令1. MOV (Movement) 一般传送指令2. PUSH 入栈指令3. POP 出栈指令XCHG(Exchange) 交换指令5. XLAT(Translate) 字节查表指令(二)输入输出指令1. IN I/O口输入指令2. OUT I/O口输出指令(三)目标地址传送指令1. LEA 2. LDS 3. LES (四

18、)标志传送指令1. LAHF 2. SAHF 3. PUSHF 4. POPF 28第二节 8086/8088指令系统一、数据传送指令二、算术运算指令加法运算指令减法运算指令乘法运算指令除法运算指令转换指令(一)加法运算指令ADD、ADC、INC、AAA、DAA1. ADD 不带进位加法指令指令格式ADD d , s; d d+s寄存器 存储器寄存器 存储器 立即数29第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令1. ADD 不带进位加法指令例:ADD CL , 10 ADD DX , DI ADD AX , MEM ADD DATABX , AL ADD ALPHAD

19、I , 30HMOV AL , 7EH MOV BL , 5BH ADD AL , BLAL= ?CFPFAFZFSFTFIFDFOF15118740注:结果影响状态标志位CF = 0 PF = AF = ZF = SF = OF =D9H01011溢出标志位符号标志位:最高位为1零标志位:结果为0时,为1辅助进位:低8位向高8位进位奇偶标志位:1的个数偶数,1进位标志位:最高位进位或借位30第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令1. ADD 不带进位加法指令2. ADC 带进位加法指令指令格式ADC d , s; d d+s+CF寄存器 存储器寄存器 存储器 立

20、即数实现目的操作数加源操作数,再加上进位标志位CF的内容,结果存放于目的操作数中 31第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令2. ADC 带进位加法指令CFPFAFZFSFTFIFDFOF15118740注:结果影响状态标志位已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BX=1200H , 状态标志位均为1 执行程序 ADCBX+106BH,5678H 求 :存储器物理地址 运算后结果 标志位内容2226BH2226BH89BDH(3344+5678+1)CF = ? PF = ? AF = ? ZF = ? SF

21、 = ? OF = ?000011BX对应DS段寄存器32第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令1. ADD3. INC 加1指令2. ADC指令格式INC d ; d d+1注:结果影响除CF外状态标志位寄存器 存储器该指令实现了操作数在自身基础上加1 33第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令1. ADD3. INC 加1指令2. ADC4. AAA 加法的ASCII码、非压缩BCD码调整指令指令格式 AAA 操作:如果AL的低4位大于9或(AF)=1,则:(AL)=(AL)+6(AH)=(AH)+1(AF)=(CF)=1 且AL

22、高4位清零。否则:(CF)=(AF)=0 AL高4位清零。注:结果只影响标志位CF、AF。34第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令4. AAA 加法的ASCII码、非压缩BCD码调整指令(1)非压缩BCD码调整非压缩BCD码:一个字节存放一位十进制数,即低四位0000-1001表示0-9,高四位总为0。MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL AAA;AL、BL各存放1个非压缩BCD码;(AL)=05H,(AH)=01H, (CF)=(AF)=1;(AL)=0FH, (CF)=(AF)=0CF进位标志位

23、(最高位发生进位),AF辅助进位位(低八位向高八位进位)。个位存放在AL,十位存放在AH.该汇编指令后面不写操作数,但实际上隐含累加器操作数AL和AH.35第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令4. AAA 加法的ASCII码、非压缩BCD码调整(1)非压缩BCD码调整(2)ASCII码调整012345678930H31H32H33H34H35H36H37H38H39H计算 4609+3875=?Datasegmentstring1 db 9064 string2 db 5783 sum dd 1 dup(?)Dataends36第二节 8086/8088指令系统

24、二、算术运算指令(一)加法运算指令1. ADD3. INC2. ADC4. AAA5. DAA 十进制、压缩BCD码调整指令指令格式 DAA 如果AL寄存器中低4位=10或(AF)=1,则(AL)=(AL)+6 且(AF)=1; 如果(AL)=0A0H 或(CF)=1,(高4位=10 ) 则(AL)=(AL)+60H 且(CF)=1。操作:注:结果影响状态标志位AF、CF、SF、ZF、 PF、OF该指令同样不带操作数,实际上隐含寄存器操作数AL.压缩BCD码指一个字节可以存放两位BCD码,高4位和低4位各存放一位,这样两个BCD码相加后可能得到不正确的BCD码。辅助进位位:第4位对高4位进位标

25、志位:最高位37压缩BCD码:一个字节存放两位BCD码,即低四位存放1位 BCD码,高四位存放1位。第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令5. DAA十进制、压缩BCD码调整指令MOV AL , 07H MOV BL , 08H MOV AH , 00H ADD AL , BL DAA;AL、BL各存放1个BCD码;(AL)=15H,(AH)=00H, (AF)=1, (CF)=0;(AL)=0FH, (CF)=(AF)=01. ADD3. INC2. ADC4. AAA38第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令(二)减法运算指令SU

26、B、SBB、DEC、NEG、CMP、AAS、DAS1. SUB 不带借位减法指令指令格式SUB d , s; d d-s寄存器 存储器寄存器 存储器 立即数例:SUB AL , 37H SUB BX , DX SUB CX , VAR1 SUB ARRAYSI , AX SUB BETABXDI , 51239第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB 不带借位减法指令2. SBB 带借位减法指令指令格式SBB d , s; d d-s-CF寄存器 存储器寄存器 存储器 立即数例:SBB BX , 1000 SBB CX , DX SBB AL , DAT

27、ASI SBB DISPBP , BL SBB SI+6 , 9640第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令2. SBB 带借位减法指令CFPFAFZFSFTFIFDFOF15118740注:结果影响状态标志位已知:CS=1000H , DS=2000H , SS =3000H , ES=4000H。 BP=4567H , BX=0FEDCH , 状态标志位均为1 执行程序 SBB BP+2011H , BX 求 :存储器物理地址 运算后结果 标志位内容36578H36578H3467HCF = ? PF = ? AF = ? ZF = ? SF = ? OF =

28、 ?111000BP对应SS段寄存器结果中1的个数为偶数413. DEC 减1指令指令格式DEC d ; d d-1注:结果影响除CF外状态标志位例:DEC BL DEC CX DEC BYTE PTRBX DEC WORD PTRBPDI寄存器 存储器第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB423. DEC 减1指令第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB4. NEG 求补指令指令格式NEG d ; d 0-d寄存器 存储器例:NEG BL NEG AX NEG BYTE PTRBPSI

29、NEG WORD PTRDI+20433. DEC 减1指令第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB4. NEG 求补指令注:结果影响所有状态标志位作用:求负数绝对值NEG AL ;AL=FFH(为-1的补码)AL=0-FFH=01H443. DEC 减1指令第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB4. NEG 求补指令5. CMP 比较指令指令格式CMP d , s; d-s寄存器 存储器寄存器 存储器 立即数注:只做减法,不存结果,影响状态标志位,与减法指令SUB不同。例:CMP AL

30、, 0AH CMP CX , DI CMP AX , AREA1CMP BX+5 , SI CMP GAMMA , 100453. DEC第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB5. CMP6. AAS 减法的ASCII码、非压缩BCD码调整指令4. NEG指令格式 AAS 操作:如果AL的低4位大于9或(AF)=1,则:(AL)=(AL)-6(AH)=(AH) - 1(AF)=(CF)=1 且AL高4位清零。否则:(CF)=(AF)=0 AL高4位清零。注:结果只影响标志位CF、AF。46MOV AX , 0103H MOV BL , 04

31、H SUB AL , BL AAS3. DEC第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB5. CMP6. AAS 减法的ASCII码、非压缩BCD码调整指令4. NEG例:13 - 4=9;(AX)=01FFH,(CF)=(AF)=1;(AX)=0009H,(CF)=(AF)=1(AL)=(AL)-6(AH)=(AH) - 1(AF)=(CF)=1 且AL高4位清零。473. DEC第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB5. CMP6. AAS 减法的ASCII码、非压缩BCD码调整指令4.

32、 NEG7. DAS 减法的十进制、压缩BCD码调整指令指令格式 DAS 如果AL寄存器中低4位大于9或(AF)=1,则(AL)=(AL) - 6 且(AF)=1;(低4位减6) 如果(AL)=0A0H 或(CF)=1, 则(AL)=(AL) - 60H 且(CF)=1。 (高4位减6)操作:注:结果影响状态标志位AF、CF、SF、ZF、 PF、OF。483. DEC第二节 8086/8088指令系统二、算术运算指令(二)减法运算指令1. SUB2. SBB5. CMP6. AAS 减法的ASCII码、非压缩BCD码调整指令4. NEG7. DAS 减法的十进制、压缩BCD码调整指令例:83

33、- 38=45MOV AL , 83H MOV BL , 38H SUB AL , BL DAS;(AL)=4BH, (AF)=1 (CF)=0;(AL)=45H, (AF)=1 (CF)=0低4位大于949第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令(二)减法运算指令ADD、ADC、INC、AAA、DAASUB、SBB、DEC、NEG、CMP、AAS、DAS5051第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令(二)减法运算指令(三)乘法运算指令MUL、IMUL、AAM1. MUL 无符号数乘法指令指令格式MUL s 操作字节乘法 (AX)(AL

34、)*s (两个8位相乘,结果 可能是16位,储存在AX中) 字乘法 (DX,AX)(AX)*s(两个16位相乘,结果可能是32位,结果高16位存DX,低16位存AX中)注:运算结果高位(AH、DX)为0,则OF=CF=0, 否则OF=CF=1( OF,溢出,超出8或16的表示范围) ,标志位SF、ZF、AF、PF不确定。52第二节 8086/8088指令系统二、算术运算指令(三)乘法运算指令1. MUL 无符号数乘法指令指令格式MUL s 寄存器 存储器例:MUL AL (AL*AL) MUL BX (AX*BX) MUL BYTE PTRDI+6(AL*存储器8位) MUL WORD PTR

35、 ALPHA (AX*存储器16位) MOV AL , 14H MOV CL , 05H MUL CL;14H*05H=20*5=100=64H ;(AX)=0064H,(CF)=(OF)=0 编程演示53第二节 8086/8088指令系统二、算术运算指令(三)乘法运算指令1. MUL 无符号数乘法指令2. IMUL 有符号数乘法指令指令格式IMUL s 操作字节乘法 (AX)(AL)*s 字乘法 (DX,AX)(AX)*s注:运算结果高位(AH、DX)为有效数字而非符号扩展,则OF=CF=1,否则OF=CF=0。 标志位SF、ZF、AF、PF不确定。S组成寄存器 存储器例:IMUL DL I

36、MUL CX IMUL BYTE PTR GAMMA IMUL WORD PTR SI+BP54第二节 8086/8088指令系统二、算术运算指令(三)乘法运算指令1. MUL 无符号数乘法指令2. IMUL 有符号数乘法指令(编程演示)MOV AX , 04E8H MOV BX , 4E20H IMUL BX; 04E8H*4E20H =(+1256)*(+20000) =25120000 (32767,必须使用32位来寄存) =17F4D00H ;(DX)=017FH, (AX)=4D00H, (CF)=(OF)=1 55第二节 8086/8088指令系统二、算术运算指令(三)乘法运算指令

37、1. MUL2. IMUL3. AAM 乘法的ASCII码、非压缩BCD码调整指令指令格式 AAM 操作:(AH)(AL)/0AH ; 商送AH(AL)(AL)%0AH ; 余数送AL (%取余)注:AL(低位)影响标志位SF、ZF和PF,对AF、CF、OF不确定。MOV AL , 07H MOV BL , 09H MUL BL AAM;AL=07H(7)*09H(9)=63=3FH ;AH=06H,AL=03H; SF=0, ZF=0, PF=1 (编程演示)56第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令(二)减法运算指令(三)乘法运算指令(四)除法运算指令DIV、

38、IDIV、AAD1. DIV 无符号数除法指令指令格式DIV s 操作字节除法(s,8位) (AL)(AX)/s ;( AL商) (AH)(AX) %s ;(AH 余数) 字除法(s,16位) (AX)(DX:AX)/s; ( AX商) (DX)(DX:AX) %s ;( DX余数)注:状态标志位SF、ZF、AF、PF、CF和OF不确定。57第二节 8086/8088指令系统二、算术运算指令(四)除法运算指令1. DIV 无符号数除法指令指令格式DIV s 寄存器 存储器例:DIV BL DIV CX DIV BYTE PTR DATA DIV WORD PTR DI+BXMOV AX ,0F

39、05H MOV DX ,068AH MOV CX ,08E9H DIV CX;068A0F05H/08E9H=BBE1H073CH ;(AX)=BBE1H,(DX)=073CH(DX:AX) 32位数除以(CX)16位数58第二节 8086/8088指令系统二、算术运算指令(四)除法运算指令1. DIV 无符号数除法指令2. IDIV 有符号数除法指令指令格式IDIV s 操作字节除法 (AL)(AX)/s ; (AH)(AX) %s 字除法 (AX)(DX:AX)/s; (DX)(DX:AX) %s注:余数符号与被除数符号相同, 状态标志位SF、ZF、AF、PF、CF和OF不确定。S组成寄存

40、器 存储器例:IDIV CL IDIV BX IDIV BYTE PTR SI IDIV WORD PTR TABLE59第二节 8086/8088指令系统二、算术运算指令(四)除法运算指令1. DIV2. IDIV3. AAD 除法的ASCII码、非压缩BCD码调整指令指令格式 AAD 操作:(AL)(AH)*0AH+(AL)(将AH的内容后面加0)(AH)0注:影响标志位SF、ZF和PF,对AF、CF、OF不确定。MOV AX , 0703H MOV BL , 02H AAD DIV BL AAM;AL=07H(7)*0AH(10)+03H(3)=73=49H ;AL=24H(36), A

41、H=01H(1)指令顺序 AAD-DIV-AAM;AH=AL/0AH=03H, AL=AL/0AH06H73/260第二节 8086/8088指令系统二、算术运算指令(一)加法运算指令(二)减法运算指令(三)乘法运算指令(四)除法运算指令(五)转换指令符号位扩展1. CBW 字节字转换指令(8位16位)指令格式 CBW 操作如果 (AL)0,则(AH)FFH;(前面加1) 否则 (AH)0 (前面加0)。;AL AX2. CWD 字双字转换指令( 16位32位)指令格式 CWD 操作如果 (AX)0,则(DX)FFFFH; 否则 (DX)0 。;AX DX:AX61第二节 8086/8088指

42、令系统二、算术运算指令(一)加法运算指令(二)减法运算指令(三)乘法运算指令(四)除法运算指令(五)转换指令编写程序段 (-2000)(- 421)MOVAX,-2000 MOV BX,-421 IDIV BXMOVAX,-2000 CWD (将AX扩展到32位) MOV BX,-421 (-28) IDIV BX; (AX)=4=0004H(商); (DX)=-316=FBC1H(余数)62第二节 8086/8088指令系统一、数据传送指令三、逻辑运算与移位指令二、算术运算指令(一)逻辑运算指令AND、OR、NOT、XOR、TEST1. AND 逻辑“与”指令指令格式AND d , s; d

43、 d&s寄存器 存储器寄存器 存储器 立即数例:AND AL , 00001111B AND CX , DI AND SI , MEM_NAME AND ALPHADI, AX AND BXSI, 0FFFEHd*s,表示条件同时具备时,结果才会发生,串联目标操作数和源操作数不能同时为存储器。63第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND 逻辑“与”指令注:影响标志位SF、ZF和PF, 将CF、OF置0,使AF不确定。作用:(1)逻辑“与”运算(2)屏蔽某一位或若干位MOV AL , 6 AND AL , 0FH; AL00110110B; AL00

44、000110B将AL中的高四位屏蔽掉,将AL中的低四位保留。64第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND 逻辑“与”指令2. TEST 测试指令指令格式TEST d , s; d&s寄存器 存储器寄存器 存储器 立即数例:TEST BH , 7 TEST SI , BP TEST SI , CH TEST BXDI, 6ACEH目标操作数和源操作数不能同时为存储器。操作实质上与AND指令相同,但是不把运算结果送入到目标操作数,与比较指令CMP类似。只是影响状态标志位。65第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1.

45、 AND 逻辑“与”指令2. TEST 测试指令IN AL , PORT TEST AL , 00000001B JNZ NEXT. . NEXT: .注:影响标志位SF、ZF和PF, 将CF、OF置0,使AF不确定。; 读I/O口PORT; 测试AL最低位; 非0转移(AL最低位为1)66第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND 逻辑“与”指令3. OR 逻辑“或”指令2. TEST 测试指令指令格式OR d , s; d ds寄存器 存储器寄存器 存储器 立即数例:OR BL , 0F6H OR AH , BL OR CL , BETABXSI

46、 OR GAMMASI, DX OR MEM_BYTE , 80Hd*s,表示条件具备一个时,结果才会发生,并联目标操作数和源操作数不能同时为存储器。67第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND 逻辑“与”指令3. OR 逻辑“或”指令2. TEST 测试指令注:影响标志位SF、ZF和PF, 将CF、OF置0,使AF不确定。作用:(1)逻辑“或”运算(2)将某一位或若干位置1MOV AL , 06H OR AL , 30H; AL00000110B; AL00110110B(30H=00110000)(3)测试某数的标志位SF、ZF和PF68第二节

47、 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND 逻辑“与”指令3. OR 逻辑“或”指令2. TEST 测试指令大写字母小写字母A=41H=01000001BB=42H=01000010BZ=5AH=01011010Ba=61H=01100001Bb=61H=01100010Bz=7AH=01111010B大小写字母的转换大写字母小写字母小写字母大写字母AND AL,110111111OR AL,00100000069第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND4. XOR 逻辑“异或”指令2. TEST3. OR指令

48、格式XOR d , s; d ds寄存器 存储器寄存器 存储器 立即数例:XOR DI , 23F6H XOR SI , DX XOR CL , BUFFER XOR MEMBX, AX XOR TABLEBPSI , 3DHds+ds, d和s相同取0,不同取1.70第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND4. XOR 逻辑“异或”指令2. TEST3. OR注:影响标志位SF、ZF和PF, 将CF、OF置0,使AF不确定。作用:(1)逻辑“异或”运算;(2)将寄存器内容清零;XOR AX,AX; AX清零,CF清零XOR CX,CX; CX清零

49、,CF清零可将“求反”的位和1进行异或,而将保持不变的位和0进行异或。71第二节 8086/8088指令系统三、逻辑运算与移位指令(一)逻辑运算指令1. AND5. NOT 逻辑“取反”指令2. TEST3. OR指令格式NOT d寄存器 存储器例:NOT AH NOT CX NOT BYTE PTR BP NOT WORD PTR COUNT4. XOR; d d注:运算结果不影响标志位。字节求反 (d)=FFH-(d)字 求反 (d)=FFFFH-(d)72第二节 8086/8088指令系统一、数据传送指令三、逻辑运算与移位指令二、算术运算指令(一)逻辑运算指令(二)移位指令1. SHL

50、逻辑左移指令指令格式SHL d , 1SHL d,CLd7 d0CF操作0例:SHL AH , 1 SHL SI , CL SHL WORD PTR BP+5 , 1 SHL BYTE PTR DATA , CL左移1位左移n位, (CL)=n操作数的最高位进入标志CF,最低位补0.73第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令注:影响标志位CF、OF ,对其他位无影响。 当移位次数为1,移位后目标操作数最高位与CF不同,OF为1;否则为0。 当移位次数为CL,OF为不确定。OF表示符号位是否改变。作用:(1)逻辑左移(2)左移一次无符号数

51、乘2MOV AL , 6 SHL AL , 1; AL00000110B; AL00001100B=12(左移一次相当于乘2)MOV AL , 6 MOV CL , 3 SHL AL , CL; AL00110000B=48演示74第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令指令格式SHR d , 1SHR d,CL操作d7 d0CF0例:SHR BL , 1 SHR AX , CL SHR BYTE PTR DI+BP , 1 SHR WORD PTR BLOCK , CL操作数的最低位放到CF,最高位补075第二

52、节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令注:影响标志位CF、OF ,对其他位无影响。 当移位次数为1,移位后目标操作数最高位与次高位不同(次高位为1),OF为1;否则为0。 当移位次数为CL,OF为不确定。OF表示符号位是否改变。作用:(1)逻辑右移(2)右移一次无符号数除以2MOV AX , 0100H MOV CL , 2 SHR AX , CL; AX0000000001000000B=40H=64; AX0000000100000000B=256演示76第二节 8086/8088指令系统三、逻辑运算与移位指令

53、(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令指令格式SAL d , 1SAL d,CL操作d7 d0CF0例:SAL AH , 1 SAL SI , CL SAL WORD PTR BP+5 , 1 SAL BYTE PTR DATA , CL逻辑左移和算术左移操作完全一致。77第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令4. SAR 算术右移指令指令格式SAR d , 1SAR d,CL操作d7 d0CF与逻辑右移的区别是最高位保持不变,也就

54、是符号位保持不变算术右移一位相当于有符号数除以278第二节 8086/8088指令系统一、数据传送指令三、逻辑运算与移位指令二、算术运算指令(一)逻辑运算指令(三)循环移位指令(二)移位指令1. ROL 循环左移指令指令格式ROL d , 1ROL d,CLd7 d0CF操作例:ROL BH , 1 ROL DX , CL ROL WORD PTR DI , 1 ROL BYTE PTR ALPHA , CL最高位移到CF,同时最高位移到最低位形成循环。79第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算

55、术左移指令4. SAR 算术右移指令(三)循环移位指令1. ROL 循环左移指令注:影响标志位CF、OF ,对其他位无影响。 当移位次数为1,移位后目标操作数最高位与CF不同,OF为1;否则为0。 当移位次数为CL,OF为不确定。OF表示符号位是否改变。80第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令4. SAR 算术右移指令(三)循环移位指令1. ROL 循环左移指令2. ROR 循环右移指令指令格式ROR d , 1ROR d,CL操作d7 d0CF最低位移到CF,同时最低位移到最高位形

56、成循环。81第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令4. SAR 算术右移指令(三)循环移位指令1. ROL 循环左移指令2. ROR 循环右移指令注:影响标志位CF、OF ,对其他位无影响。 当移位次数为1,移位后目标操作数最高位与次高位不同,OF为1;否则为0。 当移位次数为CL,OF为不确定。OF表示符号位是否改变。82第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令4. SAR 算

57、术右移指令(三)循环移位指令1. ROL 循环左移指令3. RCL 带进位循环左移指令2. ROR 循环右移指令指令格式RCL d , 1RCL d,CLd7 d0CF操作目标操作数同进位标志一起向左循环。83第二节 8086/8088指令系统三、逻辑运算与移位指令(二)移位指令1. SHL 逻辑左移指令2. SHR 逻辑右移指令3. SAL 算术左移指令4. SAR 算术右移指令(三)循环移位指令1. ROL 循环左移指令3. RCL 带进位循环左移指令2. ROR 循环右移指令4. RCR 带进位循环右移指令指令格式RCR d , 1RCR d,CL操作d7 d0CF目标操作数同进位标志一

58、起向右循环。84第二节 8086/8088指令系统一、数据传送指令三、逻辑运算与移位指令二、算术运算指令四、串操作指令MOVS、CMPS、SCAS、LODS(串装入)、STOS (串送存)共同特点:1. 源操作数(源串):偏移地址SI、隐含段DS、允许段超越;目标操作数(目标串):偏移地址DI、隐含段ES、不允许段超越。2. 每一次操作自动修改地址指针。(DF标志寄存器的方向标志位)(DF)=0,字节操作指针加1,字操作指针加2; (DF)=1,字节操作指针减1,字操作指针减2。3. 如指令后加“B”(字节操作)或“W” (字操作) ,则指令 后不加操作数。例:MOVSB、CMPSW(复位)C

59、LD (DF)=0;(置位)STD (DF)=185第二节 8086/8088指令系统四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特点:重复前缀:REP、REPE(REPZ)、REPNE(REPNZ)1. REP ( Repeat )(重复循环的次数由CX寄存器决定)(1) 与REP相配合的指令有:MOVS、STOS(2) REP的操作:1) 若(CX)=0,则退出REP,否则往下执行。 2)执行一次串指令; 3)(CX)(CX)-1 4)重复1)3)86第二节 8086/8088指令系统四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特点:重复前缀:R

60、EP、REPE/REPZ、REPNE/REPNZ1. REP ( Repeat )2. REPE/REPZ ( Repeat while equal/zero)(1) 相配合的指令有:CMPS、SCAS(2) 操作:1) 若(CX)=0或(ZF)=0,则退出循环,否则往下执行。 2)执行一次串指令; 3)(CX)(CX)-1 4)重复1)3)87第二节 8086/8088指令系统四、串操作指令MOVS、CMPS、SCAS、LODS、STOS共同特点:重复前缀:REP、REPE/REPZ、REPNE/REPNZ1. REP ( Repeat )2. REPE/REPZ ( Repeat whil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论