《算术与逻辑运算指令41算术运算指令.ppt》由会员分享,可在线阅读,更多相关《算术与逻辑运算指令41算术运算指令.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 算术与逻辑运算指令4.1&4.2 算术运算指令本章包括加法,减法,乘法,和二进制数据的除法。)加法指令加法指令:ADD、ADC、INC.减法指令减法指令:SUB、SBB、DEC、CMP乘法指令乘法指令:MUL、IMUL、除法指令除法指令:DIV、IDIV INC 与 DEC 指令 用用INC 与与DEC 指令 将寄存器的内容寄存器的内容(除了段寄存器除了段寄存器)或或将内存单元的内容将内存单元的内容增1或 减1。(INC 与DEC 指令)格式格式:标号标号:INC/DEC DST 寄存器寄存器/内存内存选项选项:(DST)(DST)1注意注意:只有一个操作数只有一个操作数清除或置位清除
2、或置位O,S,和和 Z 标志标志;不影响不影响 C。(INC 与DEC 指令)列表列表6-2-4 INC指令格式指令格式 指令注释INC BLINC SPINC EAXINC BYTE PTR BXINC WORD PTR SIINC DWORD PTR ECXINC DATA2(BL)=(BL)+1(SP)=(SP)+1(EAX)=(EAX)+1递增数据段中递增数据段中通过BX寻址得到的字字节节 内容内容递增数据段中递增数据段中通过SI寻址得到的字字的内容递增数据段中递增数据段中通过ECX寻址得到的双字字的内容递增数据段中递增数据段中DATA2所在位置的内容(INC)例例:将将NUMB+1和
3、NUMB相加,结果放到AL中注意:会影响DI 寄存器的内容。SUMS PROC NEAR MOV DI,OFFEST NUMB ;寻址NUMB MOV AL,0 ;清除AL ADD AL,DI ;加上NUMB INC DI ;寻址 NUMB+1 ADD AL,DI ;加上NUMB+1 RETSUMS ENDPDEC-减减1格式格式:DEC DST 寄存器寄存器/内存内存操作:(DST)(DST)-1DEC 指令清除或设置OF,SF,和 ZF标志位,但是不影响不影响CF标志位。标志位。列表列表13-6 DEC递减递减加法和减法加法和减法格式格式:ADD/SUB DST,SCR 寄存器寄存器 寄存
4、器寄存器/内存内存/立即数立即数 内存内存 寄存器寄存器/立即数立即数不可直接内存到内存操作。操作操作:(DST)(DST)(SCR)ADD或SUB操作会设设置置或清清除除溢溢出出标标志志、进位标志进位标志、标志寄存器的右8位。用用 二二进进制制数数的的补补码码表表示示 一一个个负负的的二二进制数进制数。加法指令加法指令减法指令减法指令(加法指令跟减法指令)例 2:MOV DL,12HADD DL,33H执行执行,(DL)=sum=45H 要改变的标志位要改变的标志位:Z=0(结果结果 0)C=0(无进位)无进位)A=0(无辅助进位)无辅助进位)S=0(结果为正)结果为正)P=0(校验是奇数)
5、校验是奇数)O=0(无溢出)无溢出)例例 3:数组相加数组相加 ;累积数组元素累积数组元素3、5、7,结果放在,结果放在AL中中 ;注意执行过程会影响注意执行过程会影响SI的内容的内容SUM PROC NEAR MOV AL,0 ;清除清除总总和和 MOV SI,3 ;指向元素指向元素3 ADD AL,ARRAYSI ;加上元素加上元素3 ADD AL,ARRAYSI+2 ;加上元素加上元素5 ADD AL,ARRAYSI+4 ;加上元素加上元素7 RETSUM ENDPADC带进位的加法带进位的加法 格式格式:ADC DST,SCR 寄存器寄存器 寄存器寄存器/内存内存/立即数立即数 内存内
6、存 寄存器寄存器/立即数立即数操作符操作符:(DST)(DST)+(SCR)+CF设置或清除溢出和进设置或清除溢出和进位标志,改变标志寄存器的右8位。ADC 指令指令(ADC带进位的加法)例例:双字加 将将BX-AX 加加 DX-CX,结结果放在果放在BX-AX中中SUM PROC NEAR ADD AX,CX ADC BX,DX RETSUM ENDP带借位的减法带借位的减法格式格式:SBB DST,SCR 寄存器寄存器 寄存器寄存器/内存内存/立即数立即数 内存内存 寄存器寄存器/立即数立即数操作操作:(DST)(DST)-(SCR)-C 影响标志位影响标志位 带借位的减法带借位的减法 乘
7、法乘法MUL 处理无符号数据IMUL(整数乘法)处理带符号数据两者都会影响溢出和进位标志。乘积 是乘数的双倍长度。乘法操作是字节乘字节,字乘字或双字乘双字。非立即数数据的乘法格式:label:MUL/IMUL 操作数操作数 寄存器寄存器/内存内存(非立即数数据的乘法)操作操作:字节乘法字节乘法:(AX)(AL)(OPR)字乘法字乘法:(DX-AX)(AX)(OPR)MUL之前之前 MUL之后之后AH(忽略忽略)ALMULAX结果结果DX(忽略忽略)AXMUL高高 DXAX 低低结果结果MUL之前之前 MUL之后之后字节乘法字节乘法字乘法字乘法 例例:生成生成 (DX)=(BL)(CL)MOV
8、BL,5 MOV AL,10 MUL BL MOV DX,AX ;结结果放到果放到DX中中如如果果上上述述是是带带符符号号数数据据的的乘乘法法,应应当当用用IMUL 来代替来代替 MUL。除法除法格式格式:DIV OPR ;不不带带符号符号数数 寄存器寄存器/内存内存 IDIV OPR ;带带符号符号数数 寄存器寄存器/内存内存OPR 可以是可以是8位位、16位位 的操作数的操作数,分别对应字节除法、字除法分别对应字节除法、字除法。(除法)除法操作除法操作:字节除法:(AL)(AX)/(OPR)的商(AH)(AX)/(OPR)的余数字除法:(AX)(DX-AX)/(OPR)的商(DX)(DX-AX)/(OPR)的余数AX被除数被除数AH余数余数AL商商 除前除前 除后除后DX-AX高高 被除数被除数 低低DX余数余数AX商商 除前除前 除后除后(除法)当被除数不是除数双倍长度时当被除数不是除数双倍长度时,扩展被除数。扩展被除数。用用0 扩展扩展 无符号数和正数无符号数和正数;用用1 扩展扩展 带符号的负数;带符号的负数;扩展指令扩展指令:CBW ;将将AL的最高有效位的最高有效位D7扩展至扩展至AHCWD ;将将AX的最高有效位的最高有效位D7扩展至扩展至DX