微机原理-第3章第4节.ppt
《微机原理-第3章第4节.ppt》由会员分享,可在线阅读,更多相关《微机原理-第3章第4节.ppt(65页珍藏版)》请在三一办公上搜索。
1、本教案内容,第3章 8086CPU指令系统汇编语言指令8086指令分类数据与转移地址的寻址方式数据传送类指令算术运算类指令逻辑运算类指令移位类指令标志位操作指令,转移指令循环控制指令子程序调用返回指令中断调用返回指令字符串操作指令I/O输入输出指令其它指令宏指令,3.5 算术运算类指令,算术运算指令可以完成两个操作数的各种算术运算:加、减、乘、除及其BCD数运算的调整运算。属于这一类的指令有:ADD、ADC、SUB、SBB、NEG、CMP、INC、DEC、MUL、IMUL、DIV、IDIV、CBW、CWD、AAA、DAA、AAS、DAS、AAM、AAD。它们又可以分成6个子类:,3.5 算术运
2、算类指令,只要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为字节变量,则有ADD AX,56A0H;(AX)(AX)
3、+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)125AH,则执行ADD AX,78C6H后,(AX)8B00
4、H,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 DD00127654H DD 00049821HDVARC DD?,3.5 算术运算类指令,为完成双字相加运算,应该先利用ADD指令完成低位字的加法运算,再利用ADC指令完成高位字的带进位加法运算。这样在代码段中可以编写下列程序,完成题目指定的说明:LEA DI,DVA
5、R;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的说明与ADD指令相同。,3.5 算术运算类指令,
6、例如,设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=1,OF=0,SF=1,ZF=0
7、,PF=0,3.5 算术运算类指令,例3.3 设DVAR1和DVAR2保存有双字数,求DVAR1DVAR2,并将结果保存在双字变量DVARR中。解:设在数据段中有变量定义语句:DVAR1DD78127654HDVAR2DD 12349821HDVARRDD?,3.5 算术运算类指令,为完成双字相减运算,应该先利用SUB指令完成低位字的减法运算,再利用SBB指令完成高位字的带进位减法运算。这样在代码段中可以编写下列程序,完成题目指定的说明:MOV AX,DVAR1;取被减数的低位字到(AX)SUB AX,DVAR2;低位字相减MOV DVARR,AX;保存结果的低位字MOV AX,DVAR12;
8、取被减数的高位字到(AX)SBB AX,DVAR22;高位字相减(带借位相减)MOV DVARR+2,AX;保存结果的高位字,3.5 算术运算类指令,(三)取负指令(NEG)Negate byte or word格式:NEG DST;(DST)0(DST)说明:取负指令NEG为一类特殊的减法运算,其被减数为0,相减结果存放在DST中。DST可以取通用寄存器和存储单元。求负数的补码表示可以直接利用NEG指令完成。NEG指令将正常影响PSW中的6个状态标志位.,3.5 算术运算类指令,例如,设VAR1为字型变量,则有下列指令:NEG BX;(BX)0(BX)NEG VAR1;(VAR1)0(VAR
9、1)NEG BYTE PTR 2BX;(BX)2)0(BX)2),3.5 算术运算类指令,二、比较指令CMP Compare byte or word 格式:CMP DST,SRC;(DST)(SRC),并 设置PSW中的状态标志位说明:CMP指令与减法指令类似,完成DST的内容减去SRC的内容,设置PSW中的状态标志位(简称FLAG),但其结果不保存到DST。指令中的SRC、DST的说明与ADD指令相同。,3.5 算术运算类指令,例如,设VAR1为字型变量,VAR2为字节变量,则有CMP CX,2000;(CX)2000,并置FLAGCMP BX,DX;(BX)(DX),并置FLAGCMP
10、AL,VAR2;(AL)(VAR2),并置FLAGCMP VAR1SI,AX;(VAR1)(SI)(AX),并置FLAG,3.5 算术运算类指令,CMP指令将正常影响PSW中的6个状态标志位:CF、AF、OF、SF、ZF和PF。对两个数进行CMP运算,其主要目的是为了比较两数的大小、相等关系:(1)若两数相减结果为0,即两数相等,则ZF1;(2)SF等同于最高位;(3)CF,OF视具体情况而定。,3.5 算术运算类指令,当两个无符号数进行比较时,如果CF0、ZF0,则表示(DST)(SRC);如果CF1,则表示(DST)(SRC),当OF SF1时,(DST)(SRC)。,3.5 算术运算类指
11、令,例3.4 两个无符号数(AL)49H、(BL)28H进行大小比较。解:指令段为:MOVAL,49HMOV BL,28HCMPAL,BL执行后,CF0,说明49H28H。如果采用CMP BL,AL语句,则CF1,说明28H49H。,3.5 算术运算类指令,例3.5 两个有符号数104、113进行大小比较。解:当采用8位补码表示时,这两个有符号数分别为98H和8FH。程序段为:MOVAL,104MOV BL,113CMPAL,BL执行后,OF0,SF0,说明104113。如果采用CMP BL,AL语句,则OF0,SF1,这说明113104。,3.5 算术运算类指令,例3.6 两个有符号数57、
12、113进行大小比较。解:当采用8位补码表示时,这两个有符号数分别为39H和8FH。程序段为:MOVAL,57MOV BL,113CMPAL,BL执行后,OF1,SF1,说明57113。如果采用CMP BL,AL语句,则OF1,SF0,这说明11357。,3.5 算术运算类指令,三、增量减量指令格式:INC DST;(DST)(DST)1DEC DST;(DST)(DST)1说明:INC(Increment byte or word by 1)为增量指令,每次对DST的内容增加1;DEC(Decrement byte or word by 1)为减量指令,每次对DST的内容减去1。DST可以取通
13、用寄存器和存储单元。INC和DEC指令可以正常影响PSW中的5个标志位:AF、OF、SF、ZF和PF,但它们不会影响CF位。,3.5 算术运算类指令,例如,设VAR1为字型变量,则有 DEC AX;(AX)(AX)1 INC DL;(DL)(DL)1 INC VAR1;(VAR1)(VAR1)1 DEC WORD PTR BX;(BX)(BX)1,3.5 算术运算类指令,四、乘法和除法指令(一)乘法运算两个无符号二进制数的乘法运算与十进制数的乘法类似,可以采用列竖式的方法计算,只是在相加运算时,按逢二进一的规则。而两个有符号二进制数进行乘法运算时,先将负数采用变补的方法变换成正数,进行两个正数
14、相乘,然后统一考虑符号。,3.5 算术运算类指令,(二)乘法指令格式:MUL SRC;无符号数相乘IMUL SRC;有符号数相乘说明:MUL为无符号数乘法指令,IMUL为有符号数乘法指令,指令的目的操作数隐含在AX(或AL)中,SRC可以取通用寄存器和存储单元,它必须有类型,而且只能是字节和字,它们决定了乘法操作的类型。,(Multiply byte or word unsigned)(Integer multiply byte or word),3.5 算术运算类指令,乘法操作的类型:当SRC为字节时,MUL和IMUL为字节运算,这时表示将AL中的数与(SRC)相乘,其结果放入(AX)中;,
15、3.5 算术运算类指令,乘法操作的类型:当SRC为字时,MUL和IMUL为字运算,这时表示将AX中的数与(SRC)相乘,其结果的高16位保存在(DX),低16位保存在(AX)。,3.5 算术运算类指令,MUL和IMUL指令只对PSW的CF、OF位有影响,其规则为:当采用MUL运算时,字运算结果的DX为0时,CF=0,OF0,表示两个字相乘其结果也为一个字;字节运算结果的AH为0时,CF=0,OF0,表示两个字节相乘其结果也为一个字节;否则CF=1,OF1。,CF=0OF=0表示:,字节字节字节字 字 字,3.5 算术运算类指令,当采用IMUL运算时,字运算结果的DX为符号扩展时,CF=0,OF
16、0,表示两个字相乘其结果可以用一个字表示;字节运算结果的AH为符号扩展时,CF=0,OF0,表示两个字节相乘其结果也可以用一个字节表示;否则CF=1,OF1。,CF=0OF=0表示:,字节字节字节字 字 字,例1.下列指令是合法的。MUL CX;(DX:AX)(AX)*(CX),为字操作IMUL CL;(AX)(AL)*(CL),为字节操作 下列指令是非法的。MUL AL,BL DST(被乘数)应为隐含寻址 IMUL 05H SRC(乘数)不能为立即数寻址,3.5 算术运算类指令,3.5 算术运算类指令,例3.7 乘法的字节运算。要计算两个无符号数2CH、42H的乘积,结果保存在AX中。解:程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理
链接地址:https://www.31ppt.com/p-6572749.html