历安毛子种牧大” 目录 XIDIAN UNIVERSITY 数据运算指令与程序设计 微机原理与系统设计 第四章汇编语言指令与程序设计 葚明皓 minghao@xidian.edu.cn 2
2 1 汇编语言基本概念 2 3 4 8086的六类指令 5 总结 数据运算指令与程序设计 数据与转移地址的寻址方式 目录 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
历些毛子代枝大” 8086指令分类(第三版) XIDIAN UNIVERSITY 数据传送指令 通用传送指令、取有效地址指令、取地址指针指令 标志传送指令、数据交换指令、字节转换指令、堆栈操作指令 数据运算指令 加减法指令、比较指令、增量减量指令、乘除法指令 。 符号扩展指令、BCD数运算调整指令 数据位操作指令 逻辑运算指令、移位类指令、标志位操作指令 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 3
数据传送指令 • 通用传送指令、取有效地址指令、取地址指针指令 • 标志传送指令、数据交换指令、字节转换指令、堆栈操作指令 数据运算指令 • 加减法指令、比较指令、增量减量指令、乘除法指令 • 符号扩展指令、BCD数运算调整指令 数据位操作指令 • 逻辑运算指令、移位类指令、标志位操作指令 8086指令分类(第三版) 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 3
历粤毛子种枚大学 数据运算指令 XIDIAN UNIVERSITY 完成两个OPR的各种算术运算:加、减、乘、除及其BCD 数运算的调整运算,分为以下子类: I.加法指令(ADD、ADC、INC) 2.减法指令(SUB、SBB、DEC、NEG、CMP) 3.乘法指令(MUL、IMUL) 4.除法指令(DIV、IDIV 5.符号扩展指令(CBW、CWD) 6.BCD数调整指令(DAA、DAS、AAA、AAS、AAM、AAD)
数据运算指令 4 • 完成两个OPR的各种算术运算:加、减、乘、除及其BCD 数运算的调整运算,分为以下子类: 1. 加法指令(ADD、ADC、INC) 2. 减法指令 (SUB、SBB、DEC、NEG、CMP) 3. 乘法指令(MUL、IMUL) 4. 除法指令(DIV、IDIV 5. 符号扩展指令(CBW、CWD) 6. BCD数调整指令(DAA、DAS、AAA、AAS、AAM、AAD)
历安毛子种枝大多 数据运算指令 XIDIAN UNIVERSITY 共同特点: 1.满足通用语法规则; 2.CPU进行运算(算数、逻辑),就会影响状态标识; 3.段REG不能参加运算; 1514131211109 8 765 4 321 0 OF DF IF TFSF ZF AF PE 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
• 共同特点: 1. 满足通用语法规则; 2. CPU进行运算(算数、逻辑),就会影响状态标识; 3. 段REG不能参加运算; OF DF IF TF SF ZF AF PF CF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 数据运算指令 5
历安毛子种枝大 数据运算指令 XIDIAN UNIVERSITY CF(Carry Flag)进位标志。如果加法时最高位产生进位或减法 时最高位产生进位或借位,则CF=1,否则CF=O。 AF(Auxiliary Carry Flag)辅助进位标志。如果在加法时D3位 有进位或减法时D3位有借位,则AF=1,否则AF=O。 ZF(Zero Flag)零标志位。如果运算结果各位都为零,则ZF=l, 否则ZF=0。 SF(Sign Flag)符号标志。运算结果为负时,SF=l,否则SF=0. OF(Overflow Flag)溢出标志。运算中结果超出8位或者16位 有符号数所能表示的数值范围,产生溢出,OF=1,否则 OF=0。 PF(Parity Flag)奇偶标志。如果操作结果的低8位中含有偶数 个1,PF=1,否则PF=0。 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 6
CF(Carry Flag)进位标志。如果加法时最高位产生进位或减法 时最高位产生进位或借位,则CF=1,否则CF=0。 AF(Auxiliary Carry Flag)辅助进位标志。如果在加法时D3位 有进位或减法时D3位有借位,则AF=1,否则AF=0。 ZF(Zero Flag)零标志位。如果运算结果各位都为零,则ZF=1, 否则ZF=0。 SF(Sign Flag)符号标志。运算结果为负时,SF=1,否则SF=0. OF(Overflow Flag)溢出标志。运算中结果超出8位或者16位 有符号数所能表示的数值范围,产生溢出,OF=1,否则 OF=0。 PF(Parity Flag)奇偶标志。如果操作结果的低8位中含有偶数 个1,PF=1,否则PF=0。 数据运算指令 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn 6
历粤毛子代枝大学 4.2.1加减法指令 XIDIAN UNIVERSITY ●加法指令 1.ADD(普通加法指令) 2.ADC(考虑借位的加法指令) 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn7
加法指令 4.2.1 加减法指令 7 1. ADD(普通加法指令) 2. ADC(考虑借位的加法指令) 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
历安毛子种枝大学 4.2.1加减法指令 XIDIAN UNIVERSITY ●加法指令 ADD DST,SRC (DST)-(SRC)+(DST) ;CPU根据结果设置6个状态标志位 ADC DST,SRC (DST)-(SRC)+(DST)+(CF) ;CPU根据结果设置6个状态标志位 ·SRC:取立即数、通用REG和MEM单元 ·DST:取通用REG、MEM单元 ·SRC和DST不能同时取存储单元。 不区分有/无符号数
加法指令 4.2.1 加减法指令 8 ADD DST, SRC ;(DST) ←(SRC)+(DST) ;CPU根据结果设置6个状态标志位 ADC DST, SRC ;(DST) ←(SRC)+(DST)+(CF) ;CPU根据结果设置6个状态标志位 • SRC:取立即数、通用REG和MEM单元 • DST:取通用REG、MEM单元 • SRC和DST不能同时取存储单元。 不区分有/无符号数
历粤毛子代枝大 4.2.1加减法指令 XIDIAN UNIVERSITY 加法指令(ADD、ADC-Add byte or word/.with carry) 例:设变量VAR1为字型变量,VAR2为字节变量,则有 ADD AX.56AOH ;(AX)←-(AX)+56A0H ADC VARI,127FH (VAR1)(VAR1)+127FH+(CF) ADC AX.BX (AX)(AX)+(BX)+(CF) ADD AX.VARI ;(AX)←-(AX)+(VAR1) ADD BX,VARI[DI] (BX)-(BX)+(OFFSET(VAR1)+(DI)) ADD BL.VAR2 ;(BL)←-(BL)+(VAR2) ADD BYTE PTR VAR1,AL;(VARI的低位字节)-(VARI的低位)+(AL) 微机原理与系统设计 第四章汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
加法指令(ADD、ADC- Add byte or word/ with carry ) 4.2.1 加减法指令 9 例:设变量VAR1为字型变量,VAR2为字节变量,则有 ADD AX, 56A0H ADC VAR1, 127FH ADC AX, BX ADD AX, VAR1 ADD BX, VAR1[DI] ADD BL, VAR2 ADD BYTE PTR VAR1, AL ; (AX) ←(AX)+56A0H ;(VAR1)←(VAR1)+127FH+(CF) ;(AX) ←(AX)+(BX) +(CF) ;(AX) ←(AX)+(VAR1) ;(BX) ←(BX)+(OFFSET(VAR1)+(DI)) ;(BL) ←(BL)+(VAR2) ;(VAR1的低位字节)←(VAR1的低位)+(AL) 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
历安毛子种枝大学 4.2.1加减法指令 XIDIAN UNIVERSITY 加法指令(ADD、ADC-Add byte or word/with carry) (P43例3.2/P70例4.5) 设在DVAR开始的连续8字节中分别存放着两个双字变量A和B (每个数为32位),求C=A+B,并将结果C放到DVARC开始 的内存中。 解:设这两个数分别为A=00127654H、B=00049821H,则在数 据段中有变量定义语句: DVAR DD00127654H DD 00049821H DVARC DD ? 微机原理与系统设计 第四章汇编语言指令与程序设计 葚明皓 minghao@xidian.edu.cn 10
加法指令(ADD、ADC- Add byte or word/ with carry ) 4.2.1 加减法指令 10 (P43例3.2/P70例4.5) 设在DVAR开始的连续8字节中分别存放着两个双字变量A和B (每个数为32位),求C=A+B,并将结果C放到DVARC开始 的内存中。 解:设这两个数分别为A=00127654H、B=00049821H,则在数 据段中有变量定义语句: DVAR DD 00127654H DD 00049821H DVARC DD ? 微机原理与系统设计 第四章 汇编语言指令与程序设计 董明皓 minghao@xidian.edu.cn
历安毛子代枚大学 4.2.1加减法指令 XIDIAN UNIVERSITY 加法指令(ADD、ADC-Add byte or word/with carry) DVAR DVAR DD 00127654H 54H DD 00049821H 76H DVARC DD ? 12H A 00H B 21H 98H 00127654H 04H + 00049821H 00H 0 00177475H 计算机可以这样算吗? 7 ADD,ADC只能进行字节或字数据的相加若遇更长的数据则要分开来加
加法指令(ADD、ADC- Add byte or word/ with carry ) 4.2.1 加减法指令 11 DVAR DD 00127654H DD 00049821H DVARC DD ? 54H 76H 12H 00H 21H 98H 04H 00H DVAR ? ? ? ? A B C C A B 00127654H 00049821H 00177475H 计算机 可以这样算吗 ? ADD,ADC 只能进行字节或字数据的相加若遇更长的数据则要分开来加