资源预览内容
第1页 / 共48页
第2页 / 共48页
第3页 / 共48页
第4页 / 共48页
第5页 / 共48页
第6页 / 共48页
第7页 / 共48页
第8页 / 共48页
第9页 / 共48页
第10页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
二二 算术运算指令(算术运算指令(Arithmetic)Arithmetic)内容:内容: 8086/80888086/8088提供加、减、乘、除、转换五种基本算术操作提供加、减、乘、除、转换五种基本算术操作; ; 利用十进制调整指令和利用十进制调整指令和ASCIIASCII调整指令对调整指令对BCDBCD码表示的码表示的十进制数进行算术运算十进制数进行算术运算; 对带符号数与无符号数进行乘、除运算。对带符号数与无符号数进行乘、除运算。(一)加法指令(一)加法指令(Arithmetic)Arithmetic)(二)减法指令(二)减法指令(Subtraction)Subtraction)(三)乘法指令(三)乘法指令(Multiplication)Multiplication)(四)除法指令(四)除法指令(Division)Division)(五)转换指令五)转换指令特点:特点: 大部分都影响标志位大部分都影响标志位,不同指令影响不同,不同指令影响不同: :(1) (1) 加、减法指令影响加、减法指令影响 SF,ZF,AF,PF,CF,OF;SF,ZF,AF,PF,CF,OF;(2) (2) 加加1 1和减和减1 1指令不影响指令不影响CF;CF;(3) (3) 乘法指令影响乘法指令影响CF,OF;CF,OF;(4) (4) 除法指令使大部分标志位的状态不确定除法指令使大部分标志位的状态不确定; ;(5) (5) 对对BCDBCD码调整指令对标志位的影响不同码调整指令对标志位的影响不同; ;(6) (6) 转换指令对标志位无影响转换指令对标志位无影响 都可以用于字节、字的运算都可以用于字节、字的运算; ; 双操作数指令除源为立即数外,其余必须有一个操作数双操作数指令除源为立即数外,其余必须有一个操作数 为寄存器;单操作数指令不能为立即数。为寄存器;单操作数指令不能为立即数。(一)加法指令(一)加法指令(Arithmetic)Arithmetic)8088 8088具有具有5 5种加法操作指令种加法操作指令: :1 1、 ADD(Addition)ADD(Addition)加法指令加法指令2 2、 ADC(Add with carry)ADC(Add with carry)带进位加法指令带进位加法指令3 3、 INC(Increment by 1)INC(Increment by 1)加加 1 1指令指令4 4、 AAA(ASCII adjust for addition)AAA(ASCII adjust for addition)加法加法ASCIIASCII调整指令调整指令5 5、 DAA(Decimal adjust for addition)DAA(Decimal adjust for addition)加法十进制调整指令加法十进制调整指令1 1、 ADD(Addition)ADD(Addition)加法指令加法指令指令格式:指令格式:ADD ADD destdest , , srcsrc ;( ;(destdest) ) ( (dest)+(srcdest)+(src) )SrcSrc:立即数,寄存器,存储器。立即数,寄存器,存储器。destdest:寄存器,存储器。寄存器,存储器。例:例:ADD CL,10ADD CL,10; ;寄存器寄存器+ +立即数立即数ADD DX,SIADD DX,SI; ;寄存器寄存器+ +寄存器寄存器ADD AX, MEMADD AX, MEM; ;寄存器寄存器+ +存储器存储器ADD DATABX, ALADD DATABX, AL; ;存储器存储器+ +寄存器寄存器ADD BYTE PTR ALPHADI, 30H;ADD BYTE PTR ALPHADI, 30H;存储器存储器+ +立即数立即数特点:特点: 可以进行可以进行8 8位、位、1616位的无符号数和带符号数的加法运算;位的无符号数和带符号数的加法运算; 源操作数和目标操作数源操作数和目标操作数不能同时为存储器不能同时为存储器, , 不能为段寄存器不能为段寄存器 ; 指令影响标志位的情况:指令影响标志位的情况:OF=1,OF=1, 8 8位带符号数相加,和超出范围(位带符号数相加,和超出范围(128128127127), ,16 16位带符号数相加,和超出范围位带符号数相加,和超出范围(-32768+32767);(-32768+32767);CF=1, 8CF=1, 8位无符号数相加,和超过位无符号数相加,和超过255255,1616位无符号数相加,和超过位无符号数相加,和超过6553565535。其他条件标志(其他条件标志(SF,AF,PF,ZF)SF,AF,PF,ZF)根据定义设定。根据定义设定。例例MOV AL,7EHMOV AL,7EH;(AL)=7EH;(AL)=7EHMOV BL, 5BHMOV BL, 5BH;(BL)=5BH;(BL)=5BHADD AL,BLADD AL,BL;(AL)=7EH+5BH=D9H;(AL)=7EH+5BH=D9H影响标志位的情况影响标志位的情况: :SF=1SF=1, , 结果最高位结果最高位1 1ZF=0ZF=0,结果不等于结果不等于0 0AF=1AF=1 ,D D3 3 位向位向D D4 4 有进位有进位PF=0PF=0,” ”1”1”的个数为奇数的个数为奇数CF=0CF=0 ,无进位无进位OF=1OF=1 ,和超过和超过127127(两个正数相加,结果为负;反之亦是)(两个正数相加,结果为负;反之亦是)1111110001011011+11011001AF=12 2、 ADC(Add with carry)ADC(Add with carry)带进位加法指令带进位加法指令格式:格式:ADC ADC destdest,srcsrc ;(;(destdest)(destdest)+ +(srcsrc)+ +CFCFCF:CF: 进位标志进位标志CFCF的现行值的现行值( (上条指令上条指令CFCF值值) )特点特点: : 与与ADDADD同。同。用途:主要用于多字节运算中。用途:主要用于多字节运算中。类型举例:类型举例:ADC CX, 300ADC CX, 300 ; ;寄存器寄存器+ +立即数立即数+CF+CFADC AL, BLADC AL, BL; ;寄存器寄存器+ +寄存器寄存器+CF+CFADC DX, COUNTSIADC DX, COUNTSI; ;寄存器寄存器+ +存储器存储器CFCFADC BLOCKDI, BXADC BLOCKDI, BX; ;存储器存储器+ +寄存器寄存器+CF+CFADC BYTE PTR MEM, 6ADC BYTE PTR MEM, 6 ; ;存储器存储器+ +立即数立即数+CF+CF用途举例:用途举例: 计算两个多字节数相加计算两个多字节数相加 3B74AC60F8H+20D59E36C1H=?3B74AC60F8H+20D59E36C1H=? 两个多字节数存放在:两个多字节数存放在: DATA1,DATA2DATA1,DATA2的开始单元。的开始单元。F8H 60H ACH 74H 3BH .C1H 36H 9EH D5H 20H .DATA1DATA1DATA2DATA2流程图流程图多字节数内存存放多字节数内存存放开始初始化,置循环次数CX 清SI、CF取一个字节加数取一个被加数字节 相加送内存(SI)+1送(SI)(CX)-1送(CX)(CX)=?0结束NY程序:程序: MOV CX, 5MOV CX, 5 MOV SI, 0MOV SI, 0; ; 清清SISI CLCCLC;清;清CFCF LOOPER:LOOPER:MOV AL, DATA2SIMOV AL, DATA2SI ADC DATA1SI, ALADC DATA1SI, AL INC SIINC SI;(SI)+1 ;(SI)+1 (SI) (SI) DEC CXDEC CX;(CX)-1 ;(CX)-1 (CX)(CX) JNZ LOOPERJNZ LOOPER;(CX);(CX) 0 0转转 HLTHLT;停机停机溢出溢出-是指带符号数的补码溢出。是指带符号数的补码溢出。字长为字长为 n n 位带符号数,补码运算能表示范围为位带符号数,补码运算能表示范围为:-2 :-2 n-1n-1 +2 +2 n+1 n+1 11如果运算结果超出该范围,叫补码溢出,简称溢出。在溢出时,如果运算结果超出该范围,叫补码溢出,简称溢出。在溢出时,造成运算错误。造成运算错误。进位进位-是指运算结果的最高位向更高位的进位。是指运算结果的最高位向更高位的进位。有进位,有进位,CF=1CF=1;无进位,无进位, CF=0CF=0以以8 8位二进制数为例位二进制数为例分析一下数的溢出与进位情况分析一下数的溢出与进位情况:下面分下面分4 4种情况加以讨论:种情况加以讨论:(1 1) 带符号数和无符号数都不溢出带符号数和无符号数都不溢出(2 2) 无符号数溢出无符号数溢出(3 3) 带符号数溢出带符号数溢出(4 4) 带符号数和无符号数都溢出带符号数和无符号数都溢出(1 1) 带符号数和无符号数都不溢出带符号数和无符号数都不溢出。二进制数看作无符号数看作带符号数0 0 0 0 0 1 0 00 0 0 0 1 0 1 1+0 0 0 0 1 1 1 1411+15+ 4+1 1+1 5相 加标志CF=0,OF=0CF=0OF=0溢出不溢出不溢出不溢出 同符号数相加, 结果符号与其相同(2 2) 无符号数溢出无符号数溢出二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1+ +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 07 7251251+ +258258+ 7+ 7- 5- 5+ + 2+ 2相相 加加标志标志CF=1,OF=0CF=1,OF=0CF=1CF=1OF=0OF=0溢出溢出无符号数溢出无符号数溢出溢出溢出 结果应为结果应为2 2,错,错不溢出不溢出 异号数相加异号数相加 不可能有溢出不可能有溢出CF=1CF=1(3 3) 带符号数溢出带符号数溢出二进制数看作无符号数看作带符号数0 0 0 0 1 0 0 10 111 1 1 1 0 0+1 0 0 0 0 1 0 19124+133+ 9+1 2 4+1 3 3相 加标志CF=0,OF=1CF=0OF=1溢出带符号数溢出不溢出溢出结果为123 结果错(4 4) 带符号数和无符号数都溢出带符号数和无符号数都溢出二进制数看作无符号数看作带符号数1 0 0 0 0 1 1 11 1 1 1 0 1 0 1+0 1 1 1 1 1 0 0135245+380121- 11+132相 加标志CF=
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号