微机原理第三章3.

上传人:我** 文档编号:116870327 上传时间:2019-11-17 格式:PPT 页数:46 大小:711KB
返回 下载 相关 举报
微机原理第三章3._第1页
第1页 / 共46页
微机原理第三章3._第2页
第2页 / 共46页
微机原理第三章3._第3页
第3页 / 共46页
微机原理第三章3._第4页
第4页 / 共46页
微机原理第三章3._第5页
第5页 / 共46页
点击查看更多>>
资源描述

《微机原理第三章3.》由会员分享,可在线阅读,更多相关《微机原理第三章3.(46页珍藏版)》请在金锄头文库上搜索。

1、第三章 8086/8088指令系统 微型计算机系统原理及应用 主讲人主讲人: : 沈虹沈虹 燕山大学电气工程学院燕山大学电气工程学院 Institute of Electrical Engineering 3.4 8086的指令系统 可以分为以下几类: 数据传送指令 算术运算指令 逻辑运算指令 串操作指令 控制传送指令 处理器控制指令 3.3.2 算术运算指令 四种类型算术运算操作数举例 二进制码 (B) 十六进制数 (H) 无符号 十进制数 (D) 压缩 十进制数 (D) 带符号 十进制数 (D) 非压缩 十进制数 (D) 0000 0111 1000 1001 1100 0101 07 8

2、9 C5 7 137 197 +7 -119 -59 7 无效数 无效数 07 89 无效数 加减法运算特点 无符号数和有符号数可采用同一套加减运算指令 q无符号数和有符号数的乘除运算不能采用同一套指令 q无符号数和有符号数各有一条乘除运算指令 两个条件: 要求参加运算的加数(或减数)和被加数(或被减数)都必须 同为一种类型的数 只能是二个无符号数相加(或相减) 或是二个有符号数 相加(或相减) 要用不同的方法检测无符号数或有符号数的运算结果是否 有溢出。 加减法运算特点 对于无符号数,加法和减法除了运算方法不同 外,溢出的定义也有所不同。 加法:向高位的进位(如8位相加,D7位向D8位的进

3、位) 减法:向高位的借位(如8位相减,不够减时,D7位 向D8位借1) 对于有符号数,可以采补码运算。减法可以转 换为加法进行。如8-5=8+(-5)。 下面仅以8位数的加法为例进行溢出判断讨论 标志位(条件码)判断规则 v总的来说,有下列规则: 当无符号数运算产生溢出时,CF=1。 当有符号数运算产生溢时,OF=1。 如果运算结果为0,则ZF=1。 如果运算结果为负数,则SF=1。 如果运算结果中有偶数个1,则PF=1。 3.3.2 算术运算指令 包括: 加法指令、减法指令、乘法指令、除法指令 1、加法指令 8086具有5条加法指令: ADD(Addition) 加法指令 ADC(Add w

4、ith 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:通用寄存器,存储器 例: ADD CL,10 ADD DX,SI ADD AX, 2F00H ADD 100HBX, AL ADD DI, 30H 特点: 可进行8位或16位的无符号数或

5、有符号数加法运算; 源操作数和目标操作数不能同时为存储器, 不能为段 寄存器; 指令影响标志位 8位(有符号)数相加,和超出范围(128 127),或16位(有符号)数相加,和超出范围(-32768 +32767),则 O=1 8位(无符号)数相加,和超过255,或16位(无符 号)数相加,和超过65535,则 C=1, 其他标志(S,A,P,Z)由运算结果按定义确定。 2)带进位加法指令ADC 格式: ADC dest,src ; 功能:(dest)(dest)+(src)+C C: 进位标志C的现行值(上条指令C值) 特点: 与ADD同。 用途:主要用于多字节运算中。 类型举例: ADC

6、CX, 300 ADC AL, BL ADC DX, SI ADC BYTE PTR 2000H, 6 【例】无符号双字加法运算,两个32位数 02344652H与0F0F0F0F0H之和 。 MOV AX,4652H;(AX)=4652H ADD AX,0F0F0H;(AX)=3742H,CF=1 MOV DX,0234H;(DX)=0234H ADC DX,0F0F0H;(DX)=0F325H,CF=0 用途: ADC 指令主要用于多字节运算中。 3)加 1 指令 INC 格式: INC dest ; 功能: (dest)(dest)+1 dest : 通用寄存器、存储器; 用途:用于在循

7、环程序中修改地址指针和循环次数。 标志位影响情况:影响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 ;存储器1(字操作) INC DS ; 错 4)加法ASCII调整指令AAA 功能:加法的ASCII调整(未组合BCD码加法调整) 格式:AAA 执行的操作: 这条指令之前必须执行ADD或ADC指令,加法指令必须把两 个未组合(非压缩)BCD码相

8、加,并把结果存放在AL寄存器中 。 (AL)把AL中的和调整到未组合BCD码 (AH)(AH)+调整产生的进位值 AAA指令除影响AF和CF标志外,其余标志位均无定义 。 AAA指令的调整步骤是: (1)如AL寄存器的低4位在十六进制数A F之间或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码。 第一条指令执行完后,(AL)=6EH,AF0。 第二条指令进行ASCII

9、调整的结果使 (AX)0604H, AF1,CF1。 5)加法十进制调整指令DAA 功能:对组合(压缩)BCD码加法结果作十进制调整 格式:DAA 执行的操作: 这条指令之前必须执行ADD或ADC指令,加法指令必须把两 个组合BCD码相加,并把结果存放在AL寄存器中。 (AL)把AL中的和调整到组合BCD格式 DAA指令对OF标志无定义,但影响所有其它条件标志 。 DAA指令的调整方法是: 如果AF标志(辅助进位位)为1,或者AL寄存器的 低4位是十六进制的AF,则AL寄存器内容加06H, 且将AF位置1; 如果CF标志为1,或者AL寄存器的高4位是十六进制 的AF,则AL寄存器内容加60H,

10、并将CF位置1。 例:ADD AL, BL DAA 其中初值:(AL)=28, (BL)=68 2、减法指令(Subtraction) 8086有7条减法指令: SUB(Subtraction) 不含借位减法指令 SBB(Subtraction with Borrow)含借位减法指令 DEC(Decrement by 1) 减1指令 CMP(Compare) 比较指令 NEG(Negate) 求补指令 AAS(ASCII Adjust for Subtraction) 减法ASCII 调整指令 DAS(Decimal Adjust for Subtraction) 减法十进 制调整指令 1)减

11、法指令SUB 格式:SUB: dest,src; 功能:(dest)(dest)-(src) src:立即数,通用寄存器,存储器。 dest:通用寄存器,存储器。 例: SUB AL, 37H SUB BX, DX 该指令影响标志位: A、C、O、P、S、Z 标志。 例A SUB BX, CX 指令执行前,BX=9543H, CX=28A7H 指令执行后,BX=6C9CH,CX=28A7H 竖式计算参看下图 无符号数运算结果正确(够减) 两数相减无借位,则CF=0 例B 有符号数运算结果出错(负溢出) 两异号数相减,即负数加负数应是负数,但这 次有符号数减法运算的结果差是正数。 原因是两负数相

12、加的和负数已超出16位有符号 数所能表示的数值范围 即BX-CX=-27325-10407-37732 这个数已超出最小负数-32768 则OF1。 其他标志位 ZF=0,SF=0,PF=1。 2)带进位减法指令 SBB 格式:SBB dest,src; 功能:(dest)(dest)-(src)-C src:立即数,通用寄存器,存储器 dest:通用寄存器,存储器 指令影响标志位 例:SBB BX, 100H SBB AL, BP+SI 3)减1指令 DEC 格式:DEC dest ; 功能:(dest)(dest)-1 dest : 通用寄存器、存储器; 用途:用于在循环程序中修改地址指针

13、和循环次数。 标志位影响情况:影响S, Z, A, P, O;不影响C。 例: DEC CX DEC BYTE PTR DI 4)取补指令NEG 格式: NEG dest; 功能:对操作数取补,即用零减去操作数,再把结果 送回操作数 dest : 通用寄存器、存储器; 影响标志:A、C、O、P、S、Z。 C:操作数为0时求补,C=0 ; 一般使C=1. O: 对128 或32768求补,OF=1; 否则OF=0。 P114两 点注意 5)比较指令CMP 格式: CMP dest,src; 功能:完成两个操作数相减,再把结果反映在标志位 上,结果并不送回。 src:立即数,通用寄存器,存储器 d

14、est:通用寄存器,存储器 (1) 当比较无符号数时,CMP A, B A=B, ZF=1 AB, CF=0 表示无借位 AB; SF=1 则A0,BB 此时有溢出,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 则AB OF=0时,若SF=0 则AB 若SF=1 则AB 或者表述为 OFSF =0时 AB OFSF =1时 AB 6)减法ASCII调整指令AAS 功能:减法的ASCII调

15、整(未组合BCD码减法调整) 格式: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)AF位的值送CF位。 7)减法十进制调整指令DAS 功能:组合BCD码减法调整 格式:DAS 执行的操作: 这条指令之前必须执行SUB或SBB指令,减法指令必须把两个 组合(压缩)BCD码相减,并把结果存放在AL寄存器中。 DAS指令影响AF和CF标志 DAS指令的调整步骤是: 如果AF标志(辅助进位位)为1,或者AL寄存器的 低4位是十六进制的AF,则AL寄存器内容减06H, 且将AF位置1; 如果CF标志为1,或者AL寄存器的高4位是十六进 制的AF,则AL寄存器内容减60H,并将CF位置1。 算术运算指令 3 乘法指令 MUL src 无符号数乘法指令 IMU

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号