《微机原理-第3章第4节.ppt》由会员分享,可在线阅读,更多相关《微机原理-第3章第4节.ppt(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本教案内容第3章 8086CPU指令系统1.汇编语言指令2.8086指令分类3.数据与转移地址的寻址方式4.数据传送类指令5.算术运算类指令6.逻辑运算类指令7.移位类指令8.标志位操作指令9.转移指令10.循环控制指令11.子程序调用返回指令12.中断调用返回指令13.字符串操作指令14.I/O输入输出指令15.其它指令16.宏指令3.5 算术运算类指令算术运算指令可以完成两个操作数的各种算术运算:加、减、乘、除及其BCD数运算的调整运算。属于这一类的指令有:ADD、ADC、SUB、SBB、NEG、CMP、INC、DEC、MUL、IMUL、DIV、IDIV、CBW、CWD、AAA、DAA、A
2、AS、DAS、AAM、AAD。它们又可以分成6个子类:3.5 算术运算类指令 只要ALU涉及到运算,就不能使用段REG;只要ALU涉及到运算,其运算结果会影响6个状态标志位。3.5 算术运算类指令一、加减法指令(一)加法指令(ADD、ADC)(Add byte or word/with carry)格式:ADD DST,SRC;(DST)(SRC)+(DST)ADC DST,SRC;(DST)(SRC)+(DST)(CF)SRC可以取立即数、通用寄存器和存储单元,DST可以取通用寄存器和存储单元,但SRC和DST不能同时取存储单元。3.5 算术运算类指令例如,设变量VAR1为字型变量,VAR2
3、为字节变量,则有ADD AX,56A0H;(AX)(AX)+56A0HADC VAR1,127FH;(VAR1)(VAR1)127FH(CF)ADC AX,BX;(AX)(AX)+(BX)(CF)ADD AX,VAR1;(AX)(AX)+(VAR1)ADD BX,VAR1DI;(BX)(BX)+(VAR1)+(DI))ADD BL,VAR2;(BL)(BL)+(VAR2)ADD BYTE PTR VAR1,AL;(VAR1的低位字节)(VAR1的低位)(AL)3.5 算术运算类指令ADD和ADC指令会正常影响PSW中的6个状态标志位:CF、AF、OF、SF、ZF和PF。例如,设(AX)125A
4、H,则执行ADD AX,78C6H后,(AX)8B00H,CF=0,AF=1,OF=1,SF=1,ZF=0,PF=1。3.5 算术运算类指令例3.2 设在DVAR开始的连续8字节中分别存放着两个数A和B(每个数为32位),求C=A+B,并将结果C放到DVARC开始的内存中。解:设这两个数分别为A=00127654H、B=00049821H,则在数据段中有变量定义语句:DVAR DD 00127654H DD 00049821HDVARC DD?3.5 算术运算类指令为完成双字相加运算,应该先利用ADD指令完成低位字的加法运算,再利用ADC指令完成高位字的带进位加法运算。这样在代码段中可以编写下
5、列程序,完成题目指定的说明:LEA DI,DVAR;MOV AX,4DI;取低位字到(AX)ADD AX,DI;低位字相加MOV WORD PTR DVARC,AX;保存结果的低位字MOV AX,6DI;取高位字到(AX)ADC AX,2DI;高位字相加(带进位)MOV WORD PTR DVARC+2,AX;保存结果的高位字3.5 算术运算类指令(二)减法指令(SUB、SBB)Subtract byte or word/with borrow 格式:SUB DST,SRC;(DST)(DST)(SRC)SBB DST,SRC;(DST)(DST)(SRC)(CF)指令中DST、SRC的说明与
6、ADD指令相同。3.5 算术运算类指令例如,设VAR1为字型变量,VAR2为字节变量,则有SUB AL,2CH;(AL)(AL)2CHSBB AX,BX;(AX)(AX)(BX)(CF)SUB AX,VAR1;(AX)(AX)(VAR1)SUB VAR1,2184H;(VAR1)(VAR1)2184HSBB DL,VAR2SI;(DL)(DL)-(VAR2)(SI)-(CF)3.5 算术运算类指令减法指令SUB和SBB指令会正常影响PSW中的6个状态标志位:CF、AF、OF、SF、ZF和PF。例如:MOV AX,1734H SUB AX,5566H执行后有(AX)=0C1CEH CF=1,AF
7、=1,OF=0,SF=1,ZF=0,PF=03.5 算术运算类指令例3.3 设DVAR1和DVAR2保存有双字数,求DVAR1DVAR2,并将结果保存在双字变量DVARR中。解:设在数据段中有变量定义语句:DVAR1 DD 78127654HDVAR2 DD 12349821HDVARR DD?3.5 算术运算类指令为完成双字相减运算,应该先利用SUB指令完成低位字的减法运算,再利用SBB指令完成高位字的带进位减法运算。这样在代码段中可以编写下列程序,完成题目指定的说明:MOV AX,DVAR1;取被减数的低位字到(AX)SUB AX,DVAR2;低位字相减MOV DVARR,AX;保存结果的低位字MOV AX,DVAR12;取被减数的高位字到(AX)SBB AX,DVAR22;高位字相减(带借位相减)MOV DVARR+2,AX;保存结果的高位字