微机原理与接口_第1页
微机原理与接口_第2页
微机原理与接口_第3页
微机原理与接口_第4页
微机原理与接口_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、指令系统是指令系统是CPU指令的集合,指令的集合,Intel 8086指令系统共有指令系统共有117条基条基本指令,本指令,按功能分为按功能分为六六大类大类:(1)数据传送类;)数据传送类;(2)算术运算类算术运算类;(3)逻辑运算和移位)逻辑运算和移位(位操作类);位操作类);(4)串操作;)串操作;(5)控制转移类;)控制转移类;(6)处理器控制。)处理器控制。4、指令系统分类、指令系统分类3.3 8086 CPU指令系统指令系统算术运算类算术运算类指令指令3.3 8086 CPU指令系统指令系统l加法指令加法指令l 减法指令减法指令l 乘法指令乘法指令l 除法指令除法指令l符号扩展指令符

2、号扩展指令算术运算是计算机经常进行的一种操作。算术运算指令实现算术运算是计算机经常进行的一种操作。算术运算指令实现二进制二进制(和十进制)数据的四则运算(和十进制)数据的四则运算请注意:请注意:算术运算类指令对算术运算类指令对标志位的影响标志位的影响掌握:掌握:ADD/ADC/INCADD/ADC/INC、SUB/SBB/DEC/ NEG/CMPSUB/SBB/DEC/ NEG/CMP熟悉:熟悉:MUL/IMULMUL/IMUL、DIV/IDIVDIV/IDIV理解:理解:CBW/CWDCBW/CWD、一、加法指令一、加法指令3.3 8086 CPU指令系统指令系统1、加法指令、加法指令ADD

3、ADD ADD reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD ADD mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/reg格式格式:3.3 8086 CPU指令系统指令系统功能:将源操作数的内容和目的操作数的内容相加,相加后的功能:将源操作数的内容和目的操作数的内容相加,相加后的结果保存在目的操作数中,并根据结果置相关标志位结果保存在目的操作数中,并根据结果置相关标志位 注意注意:源操作数和目的操作数应同时为带符号数或为无符号数,:源操作数和目的操作数应同时

4、为带符号数或为无符号数,且二者的数据类型应匹配,不能同时为存储器操作数且二者的数据类型应匹配,不能同时为存储器操作数 例:加法运算例:加法运算ADD AL , 30 ;累加器与立即数相加;累加器与立即数相加 ADD BX , 3000H ;通用寄存器与存储单元内容相加通用寄存器与存储单元内容相加 ADD DI , CX ;通用寄存器之间相加通用寄存器之间相加ADD BETASI , DX ;存储器操作数与寄存器相加存储器操作数与寄存器相加 这些指令对标志位这些指令对标志位 CF 、 OF 、 PF 、 SF 、 ZF 和和 AF 有影响。有影响。例:设例:设ADD AL, BL指令执行前,指令

5、执行前,AL=66H,BL=20H,执行指,执行指令之后,令之后,AL=86H,BL仍为仍为20H。 标志位影响情况为:标志位影响情况为:CF=0,ZF=0,SF=1,AF=0,OF=1,PF=0 3.3 8086 CPU指令系统指令系统2、带进位加法指令、带进位加法指令ADCADC ADC reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFADC ADC mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/regCFCF格式格式:功能:功能:ADC指令将源与目的操作

6、数相加,再加上进位指令将源与目的操作数相加,再加上进位CF标志,标志,结果送目的操作数结果送目的操作数ADC指令按状态标志的定义相应设置指令按状态标志的定义相应设置用法:用法:ADC指令主要与指令主要与ADD配合,实现多精度加法运算配合,实现多精度加法运算3.3 8086 CPU指令系统指令系统【例例】无符号双字加法运算。无符号双字加法运算。MOVMOVAXAX,4652H4652H ;AX=4652HAX=4652HADDADDAXAX,0F0F0H0F0F0H ;AX=3742HAX=3742H,CF=1CF=1MOVMOVDXDX,0234H0234H ;DX=0234HDX=0234H

7、ADCADCDXDX,0F0F0H0F0F0H ;DX=0F325HDX=0F325H,CF=0CF=03.3 8086 CPU指令系统指令系统例:两个无符号双精度数的加法例子,求例:两个无符号双精度数的加法例子,求0002F365H+0005E024H=? 在内存的在内存的 First 和和 Second 开始的区域中开始的区域中分别存放着分别存放着 2F365H 和和 5E024 H 两个数,要求两个数,要求求其和,并存入求其和,并存入 Third 中。中。MOV AX, First MOV AX, First ADD AX, SecondADD AX, SecondMOV Third,

8、AX MOV Third, AX MOV AX, First+2 MOV AX, First+2 ADCADC AX, Second+2 AX, Second+2 MOV Third+2, AX MOV Third+2, AX 3.3 8086 CPU指令系统指令系统相加结果为相加结果为0008D389H 3、增、增1指令指令INC功能:对指令中指定操作数的内容加功能:对指令中指定操作数的内容加1后,又回送给该操作数后,又回送给该操作数 INC指令指令不影响进位不影响进位CF标志,按定义设置其他状态标志标志,按定义设置其他状态标志用法:主要用于在循环程序中修改地址指针和循环次数等用法:主要用于

9、在循环程序中修改地址指针和循环次数等INC INC reg/memreg/mem;reg/memreg/memreg/memreg/mem1 1INC BXINC BXINC BYTE PTR BXINC BYTE PTR BX格式格式:3.3 8086 CPU指令系统指令系统加法指令加法指令小结小结 加法指令对标志位的影响:加法指令对标志位的影响:ADD和和ADC指令对所有的指令对所有的6个状态个状态标志都有影响,标志都有影响,INC指令不影响指令不影响CF,影响其他影响其他5个标志。学习加个标志。学习加减法指令要会设置标志、使用标志。减法指令要会设置标志、使用标志。例题:例题:(对错混排)

10、对错混排) ADD AL,25H ADD BYTE PTRBX,05 ADD AL,125H ADD WORD PTRBX,05 ADD AX,2500H ADD AL,BL ADD AX,05 ADD BX,05对于对于多字节多字节加法,最低字节(字)可以用加法,最低字节(字)可以用ADDADD,剩下的剩下的应使用应使用ADCADC。如。如(DX AX)+(SI DI)(DX AX)+(SI DI) ADD AX,DI ADD AX,DI;低;低1616位相加位相加 ADC DX,SIADC DX,SI;高;高1616位相加位相加+CF+CF3.3 8086 CPU指令系统指令系统二、减法指

11、令二、减法指令3.3 8086 CPU指令系统指令系统1、减法指令、减法指令SUB功能:将目的操作数内容与源操作数内容相减之后的结果(差)功能:将目的操作数内容与源操作数内容相减之后的结果(差)存入目的操作数中,对操作数的使用及标志位的影响同存入目的操作数中,对操作数的使用及标志位的影响同ADD指令指令 SUB SUB reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB SUB mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/reg格式格式:3.3 8086 CPU

12、指令系统指令系统例例3:减法运算:减法运算MOV AL,0FBH ;AL=0FBHSUB AL,07H ;AL=0F4H,CF0MOV BX,1FEH ;BX=1FEHSUB AL,BL ;AL=0F6H,CF13.3 8086 CPU指令系统指令系统2、带借位减法指令、带借位减法指令SBB功能:用目的操作数减去源操作数,还要减去标志位功能:用目的操作数减去源操作数,还要减去标志位CF的值,的值,并将相减的结果回送给目的操作数。与并将相减的结果回送给目的操作数。与ADC指令类似,在实指令类似,在实际编程中,际编程中,SBB指令主要用于两个指令主要用于两个多字节多字节/字字二进制数的相减二进制数

13、的相减运算。运算。 用法:用法:SBB指令主要与指令主要与SUB配合,实现多精度减法运算配合,实现多精度减法运算SBB SBB reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB SBB mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/regCFCF格式:3.3 8086 CPU指令系统指令系统例例4:双字减法:双字减法MOV AX,4652H;AX=4652HSUB AX,0F0F0H;AX=5562H,CF=1MOV DX,0234H;DX=0234HS

14、BB DX,0F0F0H;DX=1143H,CF=1;DX.AX0234 4652H F0F0 F0F0H 1143 5562H3.3 8086 CPU指令系统指令系统3、减、减1指令指令DEC功能:完成对指令中指定操作数的内容减功能:完成对指令中指定操作数的内容减1后,又回送给该后,又回送给该操作数。与操作数。与INC指令一样,指令一样,DEC指令通常也用于在循环过程指令通常也用于在循环过程中对地址指针和循环次数的修改中对地址指针和循环次数的修改 DEC DEC reg/memreg/mem;reg/memreg/memreg/memreg/mem1 1DEC CXDEC CXDEC WOR

15、D PTR SIDEC WORD PTR SI INC指令和指令和DEC指令都是指令都是单操作数单操作数指令指令 主要用于对主要用于对计数器和地址指针的调整计数器和地址指针的调整格式:3.3 8086 CPU指令系统指令系统 三条减法指令用法:三条减法指令用法: SUB、SBB、DEC三条指令的指令格式以及基本用法与三条指令的指令格式以及基本用法与ADD、ADC、INC相同。相同。 SUB和和SBB影响所有影响所有6个状态标志:个状态标志: DEC不影响不影响CF标志,影响其他标志,影响其他5个标志。个标志。3.3 8086 CPU指令系统指令系统4、求补指令、求补指令NEG功能:对指令中指定

16、的操作数内容取补后,再将结果回送给该功能:对指令中指定的操作数内容取补后,再将结果回送给该操作数。操作数。对一个操作数求补实际上就相当于用对一个操作数求补实际上就相当于用0减去该操作数的内容,减去该操作数的内容,故故NEG指令也属于减法指令。该指令的间接求法是将操作指令也属于减法指令。该指令的间接求法是将操作数的内容按位求反末位加数的内容按位求反末位加1后,再回送给该操作数后,再回送给该操作数 0-XXXX XXXXB =( 1111 1111B + 1 )-XXXX XXXXB 求补运算也可以表达成:求补运算也可以表达成:将操作数按位取反后加将操作数按位取反后加1NEG指令对标志的影响与用零

17、作减法的指令对标志的影响与用零作减法的SUB指令一样指令一样NEG NEG reg/memreg/mem;reg/mem0reg/mem0reg/memreg/mem格式格式:3.3 8086 CPU指令系统指令系统理解理解NEG指令指令:NEG相当于减法指令,标志设置与减法指令相同;(只有对零相当于减法指令,标志设置与减法指令相同;(只有对零求补,其他情况)求补,其他情况)例:例:设设DS:BX=(-4)补补=1111 1100 执行执行 NEG BYTE PTRBX 后后 则则 DS:BX=0000 0100=+4(-4的绝对值);的绝对值); 结论:结论:对一个负数的补码求补,得到该负数

18、的绝对值对一个负数的补码求补,得到该负数的绝对值。3.3 8086 CPU指令系统指令系统在实际编程中,常用在实际编程中,常用NEG 指令求负数的绝对值指令求负数的绝对值 5、比较指令、比较指令CMP功能:将目的操作数与源操作数内容相减,相减结果功能:将目的操作数与源操作数内容相减,相减结果不回送不回送目目的操作数,仅根据结果影响标志位,对标志位的影响与的操作数,仅根据结果影响标志位,对标志位的影响与SUB相同相同 CMP CMP reg,imm/reg/memreg,imm/reg/mem;regregimm/reg/memimm/reg/memCMP CMP mem,imm/regmem,

19、imm/reg;memmemimm/regimm/reg格式格式:3.3 8086 CPU指令系统指令系统设指令设指令CMP AL,CL执行之前,执行之前, AL=68H,CL=9AH,该指令执,该指令执行之后,行之后,AL=68H,CL=9AH,CF=1,ZF=0,SF=1,AF=1,OF=1,PF=0 例:比较例:比较AL与与100的大小,若的大小,若 AL100,则跳转到,则跳转到BE处执行处执行 CMP AL,100 ;AL-100 JB BE ;AL100,跳转到跳转到BE处执行处执行 SUB AL,100 ;AL100,ALAL-100 INC AH ;AHAH+1BE:. 执行比

20、较指令之后,可以根据标志判断两个数执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等是否相等、大小关系等3.3 8086 CPU指令系统指令系统三、乘法指令三、乘法指令MUL r8/m8MUL r8/m8;无符号字节无符号字节乘法乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号无符号字字乘法乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符号字节有符号字节乘法乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符号有符号字字乘法乘法;DX.

21、AXAXDX.AXAXr16/m16r16/m163.3 8086 CPU指令系统指令系统乘法指令分乘法指令分无符号无符号和和有符号有符号乘法指令乘法指令乘法指令的源操作数乘法指令的源操作数显式显式给出,隐含使用的另一个操作数为给出,隐含使用的另一个操作数为AX和和DX字节数据相乘:字节数据相乘:AL与与r8/m8相乘,得到相乘,得到16位的结果,存入位的结果,存入AX字数据相乘:字数据相乘:AX与与r16/m16相乘,得到相乘,得到32位的结果,其高位的结果,其高字存入字存入DX,低字存入,低字存入AX3.3 8086 CPU指令系统指令系统乘法指令对乘法指令对标志位的影响标志位的影响:利用

22、:利用OF和和CF判断乘积的高一半是判断乘积的高一半是否具有有效数值否具有有效数值MUL指令指令若乘积的高一半(若乘积的高一半(AH或或DX)为)为0,则,则OF=CF=0;否则否则OF=CF=1IMUL指令指令若乘积的高一半是低一半的若乘积的高一半是低一半的符号扩展符号扩展,则,则OF=CF=0;否则均为否则均为1乘法指令对其他状态标志没有定义乘法指令对其他状态标志没有定义 对标志对标志没有定义没有定义:指令执行后这些标志是任意的、不可预测:指令执行后这些标志是任意的、不可预测(就是谁也不知道是(就是谁也不知道是0还是还是1) 对标志对标志没有影响没有影响:指令执行不改变标志状态:指令执行不

23、改变标志状态例:乘法运算例:乘法运算MOV AL,0B4H;AL=B4H=180MOV BL,11H;BL=11H=17MUL BL;AX=OBF4H=3060;OF=CF=1,AX高高8位不为位不为0MOV AL,0B4H;AL=B4H=76MOV BL,11H;BL=11H=17IMUL BL;AX=FAF4H=1292;OF=CF=1,AX高高8位含有效数字位含有效数字3.3 8086 CPU指令系统指令系统四、除法指令四、除法指令DIV r8/m8DIV r8/m8;无符号字节无符号字节除法:除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余

24、数的余数DIV r16/m16DIV r16/m16;无符号无符号字字除法:除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数IDIV r8/m8IDIV r8/m8 ;有符号字节有符号字节除法:除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数IDIV r16/m16IDIV r16/m16;有符号有符号字字除法:除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数3.3 8086 CPU指令系统指令系统除法指令的功能除法指令的功能除法指令分无符号和有符号除法指令,除数显式给出,隐含除法指令分无符号和有符号除法指令,除数显式给出,隐含使用另一个操作数使用另一个操作数AX和和DX作为被除数。作为被除数。字节数据除法:字节数据除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余位余数存入数存入AH

温馨提示

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

评论

0/150

提交评论