微机原理第三章3剖析_第1页
微机原理第三章3剖析_第2页
微机原理第三章3剖析_第3页
微机原理第三章3剖析_第4页
微机原理第三章3剖析_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 8086/8088指令系统微型计算机系统原理及应用微型计算机系统原理及应用Institute of Electrical Engineering3.4 8086的指令系统的指令系统 可以分为以下几类可以分为以下几类: 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算指令逻辑运算指令 串操作指令串操作指令 控制传送指令控制传送指令 处理器控制指令处理器控制指令3.3.2 算术运算指令算术运算指令四种类型算术运算操作数举例二进制码(B)十六进制数(H)无符号十进制数(D)压缩十进制数(D)带符号十进制数(D)非压缩十进制数(D)0000 01111000 10011100 01

2、010789C57137197+7-119-597无效数无效数0789无效数加减法运算特点加减法运算特点 无符号数和有符号数可采用同一套加减运算指令无符号数和有符号数可采用同一套加减运算指令q无符号数和有符号数的乘除运算不能采用同一套指令无符号数和有符号数的乘除运算不能采用同一套指令q无符号数和有符号数各有一条乘除运算指令无符号数和有符号数各有一条乘除运算指令 两个条件:两个条件: 要求参加运算的加数要求参加运算的加数(或减数或减数)和被加数和被加数(或被减数或被减数)都必须都必须同为一种类型的数同为一种类型的数只能是二个无符号数相加只能是二个无符号数相加(或相减或相减) 或是二个有符号数或是

3、二个有符号数相加相加(或相减或相减) 要用不同的方法检测无符号数或有符号数的运算结果是否要用不同的方法检测无符号数或有符号数的运算结果是否有溢出。有溢出。 加减法运算特点加减法运算特点 对于无符号数,加法和减法除了运算方法不同对于无符号数,加法和减法除了运算方法不同外,溢出的定义也有所不同。外,溢出的定义也有所不同。 加法:向高位的进位加法:向高位的进位(如如8位相加,位相加,D7位向位向D8位的进位的进位位) 减法:向高位的借位减法:向高位的借位(如如8位相减,不够减时,位相减,不够减时,D7位位向向D8位借位借1) 对于有符号数,可以采补码运算。减法可以转对于有符号数,可以采补码运算。减法

4、可以转换为加法进行。如换为加法进行。如8-5=8+(-5)。 下面仅以下面仅以8位数的加法为例进行溢出判断讨论位数的加法为例进行溢出判断讨论0 0 0 0 1 0 0 10 1 1 1 1 1 0 01 0 0 0 0 1 0 1+)二进制加法 有符号数溢出 有符号数溢出当作无符号数当作有符号数92 43 392 42 3+)+)CF = 0OF = 11 0 0 0 0 1 1 11 1 1 1 0 1 0 10 1 1 1 1 1 0 0+)二进制加法 无符号数和有符号数都溢出 无符号数和有符号数都溢出当作无符号数当作有符号数54 52 411 12 4+)+)CF = 1OF = 111

5、11+-+13211211-+-错错错错错错标志位(条件码)判断规则标志位(条件码)判断规则v总的来说,有下列规则:总的来说,有下列规则:当无符号数运算产生溢出时,当无符号数运算产生溢出时,CF=1。当有符号数运算产生溢时,当有符号数运算产生溢时,OF=1。如果运算结果为如果运算结果为0,则,则ZF=1。如果运算结果为负数,则如果运算结果为负数,则SF=1。如果运算结果中有偶数个如果运算结果中有偶数个1,则,则PF=1。3.3.2 算术运算指令算术运算指令包括:包括: 加法指令、减法指令、乘法指令、除法指令加法指令、减法指令、乘法指令、除法指令1、加法指令、加法指令8086具有具有5条加法指令

6、条加法指令:ADD(Addition) 加法指令加法指令ADC(Add with Carry)带进位加法指令带进位加法指令INC(Increment)加加 1指令指令AAA(ASCII adjust for addition)加法加法ASCII调整指调整指令令DAA(Decimal adjust for addition)加法十进制调整加法十进制调整指令指令1)无进位加法指令)无进位加法指令ADD指令格式:指令格式:ADD dest , src ;功功 能能 :(dest) (dest)+(src)src:立即数,通用寄存器,存储器:立即数,通用寄存器,存储器dest:通用寄存器,存储器:通用

7、寄存器,存储器例:例:ADD CL,10ADD DX,SIADD AX, 2F00HADD 100HBX, ALADD DI, 30H特点特点: 可进行可进行8位或位或16位的无符号数或有符号数加法运算;位的无符号数或有符号数加法运算; 源操作数和目标操作数源操作数和目标操作数不能同时为存储器不能同时为存储器, 不能为段不能为段寄存器寄存器; 指令影响标志位指令影响标志位 8位(有符号)数相加,和超出范围(位(有符号)数相加,和超出范围(128127),或),或16位(有符号)数相加,和超出范围位(有符号)数相加,和超出范围(-32768 +32767),则,则 O=1 8位(无符号)数相加,

8、和超过位(无符号)数相加,和超过255,或,或16位(无符位(无符号)数相加,和超过号)数相加,和超过65535,则,则 C=1, 其他标志(其他标志(S,A,P,Z)由运算结果按定义确定。由运算结果按定义确定。2)带进位加法指令)带进位加法指令ADC格式:格式: ADC dest,src ;功能:(功能:(dest)(dest)+(src)+C C: 进位标志进位标志C的现行值的现行值(上条指令上条指令C值值)特点特点: 与与ADD同。同。用途:主要用于多字节运算中。用途:主要用于多字节运算中。类型举例:类型举例: ADC CX, 300 ADC AL, BL ADC DX, SI ADC

9、BYTE PTR 2000H, 6【 例例 】 无 符 号 双 字 加 法 运 算无 符 号 双 字 加 法 运 算 , 两 个两 个 3 2 位 数位 数02344652H与与0F0F0F0F0H之和之和 。MOV AX,4652H;(;(AX)=4652HADD AX,0F0F0H;(;(AX)=3742H,CF=1MOV DX,0234H;(;(DX)=0234HADC DX,0F0F0H;(;(DX)=0F325H,CF=0用途:用途: ADC 指令主要用于多字节运算中。指令主要用于多字节运算中。 3)加)加 1 指令指令 INC 格式:格式: INC dest ;功能:功能: (de

10、st)(dest)+1 dest : 通用寄存器、存储器;通用寄存器、存储器;用途:用于在循环程序中修改地址指针和循环次数。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响标志位影响情况:影响S, Z, A, P, O;不影响;不影响C。不能是段寄存器不能是段寄存器或立即数或立即数 例例 INC DL ; 8位寄存器位寄存器1 INC SI ;16位寄存器位寄存器1 INC 2100H ;错误;错误 应改为应改为 INC WORD PTR 2100H INC BYTE PTR BXSI ;存储器;存储器1(字节操作)(字节操作) INC WORD PTR DI ;存储器;存储

11、器1(字操作)(字操作) INC DS ; 错错4)加法)加法ASCII调整指令调整指令AAA 功能:加法的功能:加法的ASCII调整(未组合调整(未组合BCD码加法调整)码加法调整) 格式:格式:AAA 执行的操作:执行的操作: 这条指令之前必须执行这条指令之前必须执行ADD或或ADC指令,加法指令必须把两指令,加法指令必须把两个未组合个未组合(非压缩非压缩)BCD码相加,并把结果存放在码相加,并把结果存放在AL寄存器中。寄存器中。 (AL)把把AL中的和调整到未组合中的和调整到未组合BCD码码 (AH)(AH)+调整产生的进位值调整产生的进位值 AAA指令除影响指令除影响AF和和CF标志外

12、,其余标志位均无定义。标志外,其余标志位均无定义。 AAA指令的调整步骤是:指令的调整步骤是: (1)如如AL寄存器的低寄存器的低4位在十六进制数位在十六进制数AF之间或之间或AF为为1,则,则AL寄存器的内容加寄存器的内容加6,AH寄存器的内容加寄存器的内容加1,并将,并将AF位置位置1; (2)清除清除AL寄存器的高寄存器的高4位;位; (3)AF位的值送位的值送CF位。位。 例:例: ADD AL,BL AAA 如指令执行前,如指令执行前,(AX)=0535H,(BL)39H,可见,可见AL和和BL寄存器的内容分别为寄存器的内容分别为5和和9的的ASCII码。码。 第一条指令执行完后,第

13、一条指令执行完后,(AL)=6EH,AF0。 第二条指令进行第二条指令进行ASCII调整的结果使调整的结果使 (AX)0604H,AF1,CF1。AX : 05 35BL : 39+ )AX : 05 6E06+ )AX : 06 04加6 调 整AF=1, CF=1AL存A SCII码 5存A SCII码 5BL存A SCII码 9存A SCII码 95)加法十进制调整指令)加法十进制调整指令DAA 功能:对组合(压缩)功能:对组合(压缩)BCD码加法结果作十进制调整码加法结果作十进制调整 格式:格式:DAA 执行的操作:执行的操作: 这条指令之前必须执行这条指令之前必须执行ADD或或ADC

14、指令,加法指令必须把两指令,加法指令必须把两个组合个组合BCD码相加,并把结果存放在码相加,并把结果存放在AL寄存器中。寄存器中。 (AL)把把AL中的和调整到组合中的和调整到组合BCD格式格式 DAA指令对指令对OF标志无定义,但影响所有其它条件标志。标志无定义,但影响所有其它条件标志。 DAA指令的调整方法是:指令的调整方法是: 如果如果AF标志(辅助进位位)为标志(辅助进位位)为1,或者,或者AL寄存器的寄存器的低低4位是十六进制的位是十六进制的AF,则,则AL寄存器内容加寄存器内容加06H,且将且将AF位置位置1; 如果如果CF标志为标志为1,或者,或者AL寄存器的高寄存器的高4位是十

15、六进制位是十六进制的的AF,则,则AL寄存器内容加寄存器内容加60H,并将,并将CF位置位置1。例:例:ADD AL, BL DAA其中初值:其中初值:(AL)=28, (BL)=682、减法指令(、减法指令(Subtraction) 8086有有7条减法指令条减法指令: SUB(Subtraction) 不含借位减法指令不含借位减法指令 SBB(Subtraction with Borrow)含借位减法指令含借位减法指令 DEC(Decrement by 1) 减减1指令指令CMP(Compare) 比较指令比较指令 NEG(Negate) 求补指令求补指令AAS(ASCII Adjust

16、for Subtraction) 减法减法ASCII调整指令调整指令 DAS(Decimal Adjust for Subtraction) 减法十进减法十进制调整指令制调整指令1)减法指令)减法指令SUB 格式:格式:SUB: dest,src; 功能:(功能:(dest)(dest)-(src)src:立即数,通用寄存器,存储器。:立即数,通用寄存器,存储器。dest:通用寄存器,存储器。:通用寄存器,存储器。例:例: SUB AL, 37HSUB BX, DX 该指令影响标志位该指令影响标志位: A、C、O、P、S、Z标志。标志。例A SUB BX, CX 指令执行前,指令执行前,BX=

17、9543H, CX=28A7H 指令执行后,指令执行后,BX=6C9CH,CX=28A7H 竖式计算参看下图竖式计算参看下图 无符号数运算结果正确(够减)无符号数运算结果正确(够减)两数相减无借位,则两数相减无借位,则CF=0例B 有符号数运算结果出错(负溢出)有符号数运算结果出错(负溢出)两异号数相减,即负数加负数应是负数,但这两异号数相减,即负数加负数应是负数,但这次有符号数减法运算的结果差是正数。次有符号数减法运算的结果差是正数。原因是两负数相加的和负数已超出原因是两负数相加的和负数已超出16位有符号位有符号数所能表示的数值范围数所能表示的数值范围即即BX-CX=-27325-10407

18、-37732这个数已超出最小负数这个数已超出最小负数-32768则则OF1。 其他标志位其他标志位ZF=0,SF=0,PF=1。2)带进位减法指令)带进位减法指令 SBB 格式:格式:SBB dest,src; 功能:(功能:(dest)(dest)-(src)-Csrc:立即数,通用寄存器,存储器:立即数,通用寄存器,存储器dest:通用寄存器,存储器:通用寄存器,存储器 指令影响标志位指令影响标志位 例:例:SBB BX, 100HSBB AL, BP+SI 3)减)减1指令指令 DEC 格式:格式:DEC dest ; 功能:功能:(dest)(dest)-1 dest : 通用寄存器、

19、存储器;通用寄存器、存储器;用途:用于在循环程序中修改地址指针和循环次数。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响标志位影响情况:影响S, Z, A, P, O;不影响;不影响C。例:例: DEC CX DEC BYTE PTR DI4)取补指令)取补指令NEG 格式:格式: NEG dest;功能:对操作数取补,即用零减去操作数,再把结果功能:对操作数取补,即用零减去操作数,再把结果 送回操作数送回操作数 dest : 通用寄存器、存储器;通用寄存器、存储器;影响标志:影响标志:A、C、O、P、S、Z。C:操作数为操作数为0时求补时求补,C=0 ; 一般使一般使C=

20、1.O: 对对128 或或32768求补,求补,OF=1; 否则否则OF=0。 P114两两点注意点注意5)比较指令)比较指令CMP 格式:格式: CMP dest,src;功能:完成两个操作数相减,再把结果反映在标志位功能:完成两个操作数相减,再把结果反映在标志位 上,结果并不送回。上,结果并不送回。 src:立即数,通用寄存器,存储器:立即数,通用寄存器,存储器 dest:通用寄存器,存储器:通用寄存器,存储器 (1) 当比较无符号数时,当比较无符号数时,CMP A, B A=B, ZF=1 AB, CF=0 表示无借位表示无借位 AB; SF=1 则则A0,BB 此时有溢出,此时有溢出,

21、SF=1,单用,单用SF不行,还要考虑不行,还要考虑OF OF=1时,若时,若SF=1 则则AB A0,A=-63,B=+127 OF=1时,若时,若SF=0 则则AB A0,B0,可用,可用SF判断判断 若若SF=0 则则AB 若若SF=1 则则AB 综上所述:综上所述:OF=1时,若时,若SF=0 则则AB 若若SF=1 则则ABOF=0时,若时,若SF=0 则则AB 若若SF=1 则则AB或者表述为或者表述为 OF SF =0时时 AB OF SF =1时时 AB6)减法)减法ASCII调整指令调整指令AAS 功能:减法的功能:减法的ASCII调整(未组合调整(未组合BCD码减法调整)码

22、减法调整) 格式:格式:AAS 执行的操作:执行的操作: 这条指令之前必须执行这条指令之前必须执行SUB或或SBB指令,减法指令必须把两个指令,减法指令必须把两个未组合未组合(非压缩非压缩)BCD码相减,并把结果存放在码相减,并把结果存放在AL寄存器中。寄存器中。 AAS指令影响指令影响AF和和CF标志标志AAS指令的调整步骤是:指令的调整步骤是:(1)如如AL寄存器的低寄存器的低4位在十六进制数位在十六进制数AF之间或之间或AF为为1,则,则AL寄存器的内容减寄存器的内容减6,AH寄存器的内寄存器的内容减容减1,并将,并将AF位置位置1;(2)清除清除AL寄存器的高寄存器的高4位;位;(3)

23、AF位的值送位的值送CF位。位。7)减法十进制调整指令)减法十进制调整指令DAS 功能:组合功能:组合BCD码减法调整码减法调整 格式:格式:DAS 执行的操作:执行的操作: 这条指令之前必须执行这条指令之前必须执行SUB或或SBB指令,减法指令必须把两个指令,减法指令必须把两个组合组合(压缩压缩)BCD码相减,并把结果存放在码相减,并把结果存放在AL寄存器中。寄存器中。 DAS指令影响指令影响AF和和CF标志标志DAS指令的调整步骤是:指令的调整步骤是:如果如果AF标志(辅助进位位)为标志(辅助进位位)为1,或者,或者AL寄存器的寄存器的低低4位是十六进制的位是十六进制的AF,则,则AL寄存

24、器内容减寄存器内容减06H,且将且将AF位置位置1;如果如果CF标志为标志为1,或者,或者AL寄存器的高寄存器的高4位是十六进位是十六进制的制的AF,则,则AL寄存器内容减寄存器内容减60H,并将,并将CF位置位置1。算术运算指令算术运算指令 3 乘法指令乘法指令 MUL src 无符号数乘法指令无符号数乘法指令 IMUL src 有符号数乘法指令有符号数乘法指令 AAM 未组合未组合BCD码乘法调整指令码乘法调整指令MUL指令的用法说明指令的用法说明-1 格式格式: MUL src ;B/W 操作操作: 字操作数字操作数 DX, AXAX*(src) 字节操作数字节操作数 AXAL*(src

25、) 其中目的操作数其中目的操作数dst为累加器,是隐含的。为累加器,是隐含的。 字运算,字运算,必须用必须用AX寄存器存放目的操作数寄存器存放目的操作数(或称或称被乘数被乘数)。 字节运算,字节运算,必须用必须用AL寄存器存放目的操作数寄存器存放目的操作数(或或称被乘数称被乘数)。MUL指令的用法说明指令的用法说明-2 源操作数源操作数src可使用寄存器操作数,各种寻址方式的存可使用寄存器操作数,各种寻址方式的存储器操作数。储器操作数。 不允许使用立即数和段寄存器作源操作数不允许使用立即数和段寄存器作源操作数 当源操作数是存储单元时,必须在操作数前加当源操作数是存储单元时,必须在操作数前加B或

26、或W说明是字节还是字。说明是字节还是字。 两个两个16位数相乘得到的是位数相乘得到的是32位乘积,乘积存放在位乘积,乘积存放在DX和和AX中。中。 DX存放乘积的高位字,存放乘积的高位字,AX存放乘积的低位字。存放乘积的低位字。 两个两个8位数相乘得到的是位数相乘得到的是16位乘积,乘积存放在位乘积,乘积存放在AX中。中。 乘积高乘积高8位存放在位存放在AH中,乘积低中,乘积低8位存放在位存放在AL中。中。若乘积的高半部分不为若乘积的高半部分不为0,则,则OF=CF=1,表示其为有效,表示其为有效数据。否则数据。否则OF=CF=0。MUL指令操作示意图指令操作示意图字节相乘SRC(8位)积1

27、6位字相乘SRC(16位)AX(16位)DX积3 2位*)AHAL(8位)ALAX*)例例 MUL BL 指令执行前,指令执行前,AL=B4H=180,BL11H=17。 指令执行指令执行 指令执行后,指令执行后,AX=0BF4H=3060,BL=11H,CF=1,OF=1。 1801712601803060*)*)10110100000100011011010010110100101111110100例例 MUL DL ; AXAL*DL MUL CX ; (DX,AX)AX*CX MUL BSI ; AXAL*(内存中某内存中某字节字节) MUL WBX ; (DX,AX)AX*(内存中某内存中某字字)qMUL指令执行后影响指令执行后影响CF和和OF标志,如果结标志,如果结果的高半部分(字节操作为果的高半部分(字节操作为AH、字操作为、字操作为DX)不为零,表明其内容是结果的有效位,)不为零,表明其内容是结果的有效位,则则CF和和OF均置均置1。否则,。否则,CF和和OF均清均清0。通。通过测试这两个标志,可检测并去除结果中的过测试这两个标志,可检测并去除结果中的无效前导零。乘法指令使无效前导零。乘法指令使AF、PF、SF和和ZF的状态不定。的状态

温馨提示

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

评论

0/150

提交评论