指令系统(算术运算类)

上传人:e****s 文档编号:26198810 上传时间:2017-12-23 格式:PPT 页数:17 大小:408.50KB
返回 下载 相关 举报
指令系统(算术运算类)_第1页
第1页 / 共17页
指令系统(算术运算类)_第2页
第2页 / 共17页
指令系统(算术运算类)_第3页
第3页 / 共17页
指令系统(算术运算类)_第4页
第4页 / 共17页
指令系统(算术运算类)_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《指令系统(算术运算类)》由会员分享,可在线阅读,更多相关《指令系统(算术运算类)(17页珍藏版)》请在金锄头文库上搜索。

1、,算术运算指令, 1. 加法指令,(1)不带进位加法指令ADD,指令格式: ADD DST,SRC; 执行操作: DST(SRC)(DST),注意:(1)目的操作数不能为立即数。(2)不允许两个操作数都为存储器操作数。(3)段寄存器不能参与加法操作。(4)指令执行结果影响CF、OF、PF、SF、ZF和AF标志位。OF位可以用来表示带符号数的运算是否溢出,而CF位则可用来表示无符号的运算是否有进位。,1,例:ADD AX,BX ADD AL,2000H ADD BX,AL ADD BL,6H ADD BYTE PTR SI,5H ADC AX,BX ADC AL,2000H ADC BX,AL

2、ADC BL,6H ADC WORD PTR DI,89H,2,例:有两个4字节的无符号数相加: 2C 56 F8 AC + 30 9E 47 BE = ? 设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。 因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。,3,程序段如下: MOV CX,4 ;置循环次数 MOV SI,0 ;置SI初值为零 CLC ;清进位标志CFLL: MOV AL,BUFFER2SI ADC BUFFER1SI,AL ;带进位加 INCSI ;(SI)+1 DEC CX ;(CX)-1

3、JNZ LL ;若(CX)0,则转LL思考:若最高位有进位,如何改?,4, 1. 加法指令,(3),指令格式: INC OPR 执行操作: OPR(OPR)1,加1指令INC,例:INC AX INC BYTE PTRBX,例:INC AL前:AL=7FH,AF=0,CF=1,OF=0,SF=1,PF=0,ZF=1后:AL=80H, AF=1,CF=1,OF=1,SF=1,PF=0,ZF=0,使用INC指令应注意:(1)目的操作数不能为立即数和段寄存器。(2)目的操作数为存储器操作数时,应指明按字类型还是字节类型操作。(3)本指令影响标志OF、PF、SF、ZF和AF,但不影响CF标志位。,5,

4、6, 2. 减法指令,(4),求补指令NEG,指令格式: NEG OPR 执行操作: OPR 0 (OPR),(1)目的操作数可以是通用寄存器寻址或存储器寻址方式,若是存储器操作数,应指明按字类型还是字节类型操作。(2)指令执行结果影响标志AF、OF、PF、SF、ZF和CF。仅当目的操作数为零时,CF=0;否则CF=1。(3)对一个操作数求补相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。 例: 若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。,7,8,例:在内存中有从BUF开始的

5、10个无符号字数据,求出最大值存放到MAX单元中。,9, 3.,(1)无符号数乘法指令MUL,乘法指令,指令格式: MUL SRC 指令操作:AX(AL)*(SRC);字节操作数 DX,AX (AX)*(SRC);字操作数,例:MUL BL 前:AL=00000011B,BL=00000010B 后:AH=00000000B,AL=00000110B,OF=CF=0,源操作数可以采用寄存器寻址或存储器寻址方式,若是存储器操作数,应指明按字类型还是字节类型操作。,MUL WORD PTR SI,10,1) 乘法指令中源操作数不能为立即数;2) AL(AX)为隐含的乘数寄存器;3) AX(DX,A

6、X)为隐含的乘积寄存器。4) MUL指令,影响CF和OF标志位;当结果的高一半等于0时(即AH或DX的内容),CF、OF都为0,否则CF、OF都为1;5)IMUL指令,同样影响CF和OF标志位;当结果的高一半是低一 半的符号扩展时,CF、OF都为0,否则CF、OF都为1;,11,除法指令, 4.,(1)无符号数除法指令DIV,指令格式: DIVSRC指令操作: 字节除法: AL(商)、AH(余数)(AX)/(SRC) 字除法: AX(商)、DX(余数)(DX,AX)/(SRC)源操作数可以采用寄存器或存储器操作数寻址方式。,DIV CL DIV WORD PTRBX,12,13,(3)字节转换

7、为字指令CBW,指令功能:将源操作数由字节转换为字指令格式:CBW CBW指令默认(AL)为源操作数,若(AL)的最高有效位为0, 则执行CBW后,(AH)=00H,若(AL)最高有效位为1,则执 行CBW后,(AH)=0FFH。,14,例: 写出两带符号数34H25H的程序段。,MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到AH IDIV BL ; 0034H25H,结果为 ; (AH)=0FH, (AL)=01H,15,ASCII的加法调整指令AAAASCII的减法调整指令AAS十进制的加法调整指令DAA十进制的减法调整指令DAS乘法的ASCII调整指令AAM除法

8、的ASCII调整指令AAD,十进制调整指令, 5.,8086提供了6种调整指令,注意:加法、减法和乘法的调整指令都是紧跟在算术指令之后,将二进制的运算结果调整为十进制数。而除法的调整指令必须放在除法指令之前进行,以防止除法出现错误的结果。,16,例如:计算(X*YZ)/X,其中X、Y、Z均为16位带符号数,分别存 入存储单元BUFF1、BUFF2、BUFF3中。MOVAX,BUFF1;将BUFF1存入默认被乘数寄存器AXIMULBUFF2;带符号乘法运算,结果在(DX,AX)MOVCX,AX;中间结果转移,让出AX寄存器MOVBX,DX;中间结果转移,让出DX寄存器MOVAX,BUFF3;CWD;将Z转换为双字放入(DX,AX)ADDCX,AX;ADCBX,DX;双字加法运算MOVAX,CX;MOVDX,BX;将被除数存入默认寄存器(DX,AX)IDIVBUFF1;带符号除法运算,结果商(AX)余数(DX),17,

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

当前位置:首页 > 大杂烩/其它

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