微型机指令系统.ppt

上传人:牧羊曲112 文档编号:5349622 上传时间:2023-06-28 格式:PPT 页数:123 大小:2.08MB
返回 下载 相关 举报
微型机指令系统.ppt_第1页
第1页 / 共123页
微型机指令系统.ppt_第2页
第2页 / 共123页
微型机指令系统.ppt_第3页
第3页 / 共123页
微型机指令系统.ppt_第4页
第4页 / 共123页
微型机指令系统.ppt_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《微型机指令系统.ppt》由会员分享,可在线阅读,更多相关《微型机指令系统.ppt(123页珍藏版)》请在三一办公上搜索。

1、8086/8088的的存储器管理,段基址寄存器与偏移地址寄存器的隐含对应关系,1.取指操作 CSIP,2.数据存取 DSBX、DI、SI、direct(存储器直接地址),3.串操作 DSSI ESDI,4.堆栈操作 SSSP,5.BP的间接寻址 SSBP,第二章微型机指令系统,第一节 寻址方式,寻址方式,:寻找操作数所在地址的方式。(共七种),一、立即寻址,MOV CL,05,MOV AX,1000H,立即数,操作码,操作数,立即寻址中的操作数作为指令的一部分存放在代码段中,在取指阶段数据随指令一起被取到CPU,这种数据在指令格式中的直接表现为常数。立即寻址方式主要用于给寄存器或存储器赋初值。

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

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

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

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

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

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

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

9、.MOV(Movement)一般传送指令,2.PUSH 入栈指令,例:PUSH AX,已知:AX=9ABCH;SS=3400H;SP=0562H;,功能:将堆栈指针上移两个字节后将源操作数压入堆栈,SS*10+SP,冒号前后表示两个地址连续的储存单元,第二节 8086/8088指令系统,一、数据传送指令,(一)通用传送指令,1.MOV(Movement)一般传送指令,2.PUSH 入栈指令,3.POP 出栈指令(LIFO),例:POP AX,已知:AX=9ABCH;SS=3400H;SP=0560H;,AL,AH,将栈顶内容弹到目的操作数中,然后堆栈的栈顶指针下移两个字节,第二节 8086/8

10、088指令系统,一、数据传送指令,(一)通用传送指令,1.MOV(Movement)一般传送指令,2.PUSH 入栈指令,3.POP 出栈指令,XCHG(Exchange)交换指令,例:,功能:将源操作数、目的操作数内容互换,MOV AX,BX操作如图所示,两个操作数不能同为存储器操作数。段寄存器的内容不能参加交换。,注,第二节 8086/8088指令系统,一、数据传送指令,(一)通用传送指令,5.XLAT(Translate)字节查表指令,查表方式,功能:ALDS:BX+AL。把BX的内容作为数据段中数据表的首地址,AL内容为查表的项数,将其对应的字节单元的值再送给AL,3000H:0000

11、H,3000H:2000H,3000H:2005H,数据段,+,表首址,查表项,+,34H,34H,第二节 8086/8088指令系统,一、数据传送指令,(一)通用传送指令,第二节 8086/8088指令系统,一、数据传送指令,(一)通用传送指令,(二)输入输出指令,1.IN I/O口输入指令,输入指令IN用于从I/O端口接收数据,输入指令从I/O端口port中输入一个字节到累加器。,第二节 8086/8088指令系统,一、数据传送指令,(二)输入输出指令,1.IN I/O口输入指令,OUT或者IN指令,无论接收到的数据或者准备发送的数据都必须在累加器中AX(字)或AL(字节)中,所以这两条指

12、令时累加器专用指令。,2.OUT I/O口输出指令,输出指令OUT用于从I/O端口输出数据,输出指令从累加器输出一个字节到I/O端口port。,第二节 8086/8088指令系统,一、数据传送指令,(一)通用传送指令,(二)输入输出指令,(三)目标地址传送指令,1.LEA 偏移地址传送指令,例:,LEA AX,BPDI LEA BX,BUFFER LEA DX,BETABXSI LEA CX,SI+100AH,MOV BX,OFFSET BUFFER,功能:将源操作数的有效地址送指定寄存器,第二节 8086/8088指令系统,一、数据传送指令,(三)目标地址传送指令,1.LEA 偏移地址传送指

13、令,LEA、MOV的区别,已知:DS:2000H,SI:0030H,12,34,10 3A,MOV指令时将内容传送到CX,而LEA将偏移地址传送到CX。,第二节 8086/8088指令系统,一、数据传送指令,(三)目标地址传送指令,1.LEA 偏移地址传送指令,2.LDS DS段指针装入指令,LDS:LDS REG,MEM,功能:将MEM所对应的双字存储单元数据的高字送入DS,低字送入指令指定的寄存器。MEM为双字数据。,LDS BX,DI指令执行如图所示:,数据段,4000H:0000H,4000H:0100H,双字,3.LES的原理与LDS相似,第二节 8086/8088指令系统,一、数据

14、传送指令,(一)通用传送指令,(二)输入输出指令,(三)目标地址传送指令,(四)标志传送指令,1.LAHF 将标志位装入AH指令,功能:将标志寄存器的低8位送入AH寄存器。,第二节 8086/8088指令系统,一、数据传送指令,(四)标志传送指令,2.SAHF 将AH存入标志位指令,功能:将AH寄存器送入标志寄存器的低8位。,1.LAHF 将标志位装入AH指令,第二节 8086/8088指令系统,一、数据传送指令,(四)标志传送指令,2.SAHF,1.LAHF,3.PUSHF 标志位入栈指令,4.POPF 标志位出栈指令,将标志寄存器内容压入栈顶,将栈顶内容送标志寄存器,第二节 8086/80

15、88指令系统,一、数据传送指令,(一)通用传送指令,1.MOV(Movement)一般传送指令,2.PUSH 入栈指令,3.POP 出栈指令,XCHG(Exchange)交换指令,5.XLAT(Translate)字节查表指令,第二节 8086/8088指令系统,一、数据传送指令,二、算术运算指令,加法运算指令,减法运算指令,乘法运算指令,除法运算指令,转换指令,(一)加法运算指令,ADD、ADC、INC、AAA、DAA,1.ADD 不带进位加法指令,寄存器 存储器,寄存器 存储器 立即数,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1.ADD 不带进位加法指令,

16、例:,ADD CL,10 ADD DX,DI ADD AX,MEM ADD DATABX,AL ADD ALPHADI,30H,MOV AL,7EH MOV BL,5BH ADD AL,BL,AL=?,注:结果影响状态标志位,CF=0 PF=AF=ZF=SF=OF=,D9H,0,1,0,1,1,溢出标志位,符号标志位:最高位为1,零标志位:结果为0时,为1,辅助进位:低8位向高8位进位,奇偶标志位:1的个数偶数,1,进位标志位:最高位进位或借位,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1.ADD 不带进位加法指令,2.ADC 带进位加法指令,寄存器 存储器,寄

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

18、8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1.ADD,3.INC 加1指令,2.ADC,注:结果影响除CF外状态标志位,寄存器 存储器,该指令实现了操作数在自身基础上加1,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1.ADD,3.INC 加1指令,2.ADC,4.AAA 加法的ASCII码、非压缩BCD码调整指令,注:结果只影响标志位CF、AF。,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,4.AAA 加法的ASCII码、非压缩BCD码调整指令,(1)非压缩BCD码调整,非压缩BCD码:一个字节存放一位十进制

19、数,即低四位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)=0,CF进位标志位(最高位发生进位),AF辅助进位位(低八位向高八位进位)。,个位存放在AL,十位存放在AH.,该汇编指令后面不写操作数,但实际上隐含累加器操作数AL和AH.,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,4.AAA 加法的ASCII码、非压缩BCD码调整,(1)

20、非压缩BCD码调整,(2)ASCII码调整,计算 4609+3875=?,Datasegmentstring1 db 9064 string2 db 5783 sum dd 1 dup(?)Dataends,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,1.ADD,3.INC,2.ADC,4.AAA,5.DAA 十进制、压缩BCD码调整指令,注:结果影响状态标志位AF、CF、SF、ZF、PF、OF,该指令同样不带操作数,实际上隐含寄存器操作数AL.压缩BCD码指一个字节可以存放两位BCD码,高4位和低4位各存放一位,这样两个BCD码相加后可能得到不正确的BCD码。,

21、辅助进位位:第4位对高4位,进位标志位:最高位,压缩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)=0,1.ADD,3.INC,2.ADC,4.AAA,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算

22、指令,(二)减法运算指令,SUB、SBB、DEC、NEG、CMP、AAS、DAS,1.SUB 不带借位减法指令,寄存器 存储器,寄存器 存储器 立即数,例:,SUB AL,37H SUB BX,DX SUB CX,VAR1 SUB ARRAYSI,AX SUB BETABXDI,512,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB 不带借位减法指令,2.SBB 带借位减法指令,寄存器 存储器,寄存器 存储器 立即数,例:,SBB BX,1000 SBB CX,DX SBB AL,DATASI SBB DISPBP,BL SBB SI+6,96,第二节 8

23、086/8088指令系统,二、算术运算指令,(二)减法运算指令,2.SBB 带借位减法指令,注:结果影响状态标志位,已知:CS=1000H,DS=2000H,SS=3000H,ES=4000H。BP=4567H,BX=0FEDCH,状态标志位均为1 执行程序 SBB BP+2011H,BX,求:存储器物理地址 运算后结果 标志位内容,36578H,36578H,3467H,CF=?PF=?AF=?ZF=?SF=?OF=?,1,1,1,0,0,0,BP对应SS段寄存器,结果中1的个数为偶数,3.DEC 减1指令,注:结果影响除CF外状态标志位,例:,DEC BL DEC CX DEC BYTE

24、PTRBX DEC WORD PTRBPDI,寄存器 存储器,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,3.DEC 减1指令,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,4.NEG 求补指令,寄存器 存储器,例:,NEG BL NEG AX NEG BYTE PTRBPSI NEG WORD PTRDI+20,3.DEC 减1指令,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,4.NEG 求补指令,注:结果影响所有状态标志位,作用:求

25、负数绝对值,NEG AL;AL=FFH(为-1的补码),AL=0-FFH=01H,3.DEC 减1指令,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,4.NEG 求补指令,5.CMP 比较指令,;d-s,寄存器 存储器,寄存器 存储器 立即数,注:只做减法,不存结果,影响状态标志位,与减法指令SUB不同。,例:,CMP AL,0AH CMP CX,DI CMP AX,AREA1,CMP BX+5,SI CMP GAMMA,100,3.DEC,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,5.

26、CMP,6.AAS 减法的ASCII码、非压缩BCD码调整指令,4.NEG,注:结果只影响标志位CF、AF。,MOV AX,0103H MOV BL,04H SUB AL,BL AAS,3.DEC,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,5.CMP,6.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位清零。,3.DEC,第二节 8

27、086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,5.CMP,6.AAS 减法的ASCII码、非压缩BCD码调整指令,4.NEG,7.DAS 减法的十进制、压缩BCD码调整指令,注:结果影响状态标志位AF、CF、SF、ZF、PF、OF。,3.DEC,第二节 8086/8088指令系统,二、算术运算指令,(二)减法运算指令,1.SUB,2.SBB,5.CMP,6.AAS 减法的ASCII码、非压缩BCD码调整指令,4.NEG,7.DAS 减法的十进制、压缩BCD码调整指令,例:83-38=45,MOV AL,83H MOV BL,38H SUB AL,BL

28、DAS,;(AL)=4BH,(AF)=1(CF)=0,;(AL)=45H,(AF)=1(CF)=0,低4位大于9,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,ADD、ADC、INC、AAA、DAA,SUB、SBB、DEC、NEG、CMP、AAS、DAS,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,MUL、IMUL、AAM,1.MUL 无符号数乘法指令,注:运算结果高位(AH、DX)为0,则OF=CF=0,否则OF=CF=1(OF,溢出,超出8或16的表示范围),标志位SF、Z

29、F、AF、PF不确定。,第二节 8086/8088指令系统,二、算术运算指令,(三)乘法运算指令,1.MUL 无符号数乘法指令,寄存器 存储器,例:,MUL AL(AL*AL)MUL BX(AX*BX)MUL BYTE PTRDI+6(AL*存储器8位)MUL WORD PTR ALPHA(AX*存储器16位),MOV AL,14H MOV CL,05H MUL CL,;14H*05H=20*5=100=64H,;(AX)=0064H,(CF)=(OF)=0,编程演示,第二节 8086/8088指令系统,二、算术运算指令,(三)乘法运算指令,1.MUL 无符号数乘法指令,2.IMUL 有符号数

30、乘法指令,注:运算结果高位(AH、DX)为有效数字而非符号扩展,则OF=CF=1,否则OF=CF=0。标志位SF、ZF、AF、PF不确定。,第二节 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,第二节 8086/8088指令系统,二、算

31、术运算指令,(三)乘法运算指令,1.MUL,2.IMUL,3.AAM 乘法的ASCII码、非压缩BCD码调整指令,注: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,(编程演示),第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,DIV、IDIV、AAD,1.DIV 无符号数除法指令,注:状态标志位SF、ZF、AF、P

32、F、CF和OF不确定。,第二节 8086/8088指令系统,二、算术运算指令,(四)除法运算指令,1.DIV 无符号数除法指令,寄存器 存储器,例:,DIV BL DIV CX DIV BYTE PTR DATA DIV WORD PTR DI+BX,MOV AX,0F05H MOV DX,068AH MOV CX,08E9H DIV CX,;068A0F05H/08E9H=BBE1H073CH,;(AX)=BBE1H,(DX)=073CH,(DX:AX)32位数除以(CX)16位数,第二节 8086/8088指令系统,二、算术运算指令,(四)除法运算指令,1.DIV 无符号数除法指令,2.I

33、DIV 有符号数除法指令,注:余数符号与被除数符号相同,状态标志位SF、ZF、AF、PF、CF和OF不确定。,第二节 8086/8088指令系统,二、算术运算指令,(四)除法运算指令,1.DIV,2.IDIV,3.AAD 除法的ASCII码、非压缩BCD码调整指令,注:影响标志位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),AH=01H(1),指令顺序 AAD-DIV-AAM,;AH=AL/0AH=03H,AL=AL/0AH06

34、H,73/2,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,(五)转换指令,符号位扩展,1.CBW 字节字转换指令(8位16位),;AL AX,2.CWD 字双字转换指令(16位32位),;AX DX:AX,第二节 8086/8088指令系统,二、算术运算指令,(一)加法运算指令,(二)减法运算指令,(三)乘法运算指令,(四)除法运算指令,(五)转换指令,编写程序段(-2000)(-421),MOVAX,-2000 MOV BX,-421 IDIV BX,MOVAX,-2000 CWD(将AX扩展到32位)

35、MOV BX,-421(-28)IDIV BX,;(AX)=4=0004H(商),;(DX)=-316=FBC1H(余数),第二节 8086/8088指令系统,一、数据传送指令,三、逻辑运算与移位指令,二、算术运算指令,(一)逻辑运算指令,AND、OR、NOT、XOR、TEST,1.AND 逻辑“与”指令,寄存器 存储器,寄存器 存储器 立即数,例:,AND AL,00001111B AND CX,DI AND SI,MEM_NAME AND ALPHADI,AX AND BXSI,0FFFEH,d*s,表示条件同时具备时,结果才会发生,串联,目标操作数和源操作数不能同时为存储器。,第二节 8

36、086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.AND 逻辑“与”指令,注:影响标志位SF、ZF和PF,将CF、OF置0,使AF不确定。,作用:,(1)逻辑“与”运算,(2)屏蔽某一位或若干位,MOV AL,6 AND AL,0FH,;AL00110110B,;AL00000110B,将AL中的高四位屏蔽掉,将AL中的低四位保留。,第二节 8086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.AND 逻辑“与”指令,2.TEST 测试指令,;d&s,寄存器 存储器,寄存器 存储器 立即数,例:,TEST BH,7 TEST SI,BP TEST

37、SI,CH TEST BXDI,6ACEH,目标操作数和源操作数不能同时为存储器。,操作实质上与AND指令相同,但是不把运算结果送入到目标操作数,与比较指令CMP类似。只是影响状态标志位。,第二节 8086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.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),第二节 8086/8088指令系统,三、逻辑运算与移

38、位指令,(一)逻辑运算指令,1.AND 逻辑“与”指令,3.OR 逻辑“或”指令,2.TEST 测试指令,寄存器 存储器,寄存器 存储器 立即数,例:,OR BL,0F6H OR AH,BL OR CL,BETABXSI OR GAMMASI,DX OR MEM_BYTE,80H,d*s,表示条件具备一个时,结果才会发生,并联,目标操作数和源操作数不能同时为存储器。,第二节 8086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.AND 逻辑“与”指令,3.OR 逻辑“或”指令,2.TEST 测试指令,注:影响标志位SF、ZF和PF,将CF、OF置0,使AF不确定。,作用:

39、,(1)逻辑“或”运算,(2)将某一位或若干位置1,MOV AL,06H OR AL,30H,;AL00000110B,;AL00110110B(30H=00110000),(3)测试某数的标志位SF、ZF和PF,第二节 8086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.AND 逻辑“与”指令,3.OR 逻辑“或”指令,2.TEST 测试指令,大小写字母的转换,大写字母小写字母,小写字母大写字母,AND AL,110111111,OR AL,001000000,第二节 8086/8088指令系统,三、逻辑运算与移位指令,(一)逻辑运算指令,1.AND,4.XOR 逻辑

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

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

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

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

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

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

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

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

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

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

50、操作,d7 d0,CF,目标操作数同进位标志一起向右循环。,第二节 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”(字操作),则指令

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号