Intel汇编Chapter07整数算术指令

上传人:人*** 文档编号:591890192 上传时间:2024-09-18 格式:PPT 页数:46 大小:263.50KB
返回 下载 相关 举报
Intel汇编Chapter07整数算术指令_第1页
第1页 / 共46页
Intel汇编Chapter07整数算术指令_第2页
第2页 / 共46页
Intel汇编Chapter07整数算术指令_第3页
第3页 / 共46页
Intel汇编Chapter07整数算术指令_第4页
第4页 / 共46页
Intel汇编Chapter07整数算术指令_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《Intel汇编Chapter07整数算术指令》由会员分享,可在线阅读,更多相关《Intel汇编Chapter07整数算术指令(46页珍藏版)》请在金锄头文库上搜索。

1、1计算机科学系计算机科学系汇编课件汇编课件第第7章章 整数算术指令整数算术指令要点:要点:1.移位和循环移位指令移位和循环移位指令2.移位和循环移位的应用移位和循环移位的应用3.乘法和除法指令乘法和除法指令4.扩展加法和减法扩展加法和减法5.ASCII和未压缩十进制算术指令和未压缩十进制算术指令2计算机科学系计算机科学系汇编课件汇编课件1. 简介如何使用移位和循环移位指令移动数字的若干位?为什么计算机能实现大整数的加减法?编译器如何将复杂的表达式分解并翻译成独立的机器语言指令的?在将表达式翻译成汇编语言的时候如何使用运算符优先级和寄存器优化规则?3计算机科学系计算机科学系汇编课件汇编课件2.

2、移位和循环移位指令SHL/SHR:逻辑左右移位SAL/SAR:算术左右移位ROL/ROR:循环左右移位RCL/RCR:带进位的循环左右移位SHLD/SHRD:双精度左右移位所有指令都影响CF和OF4计算机科学系计算机科学系汇编课件汇编课件SHL指令SHL(shift left):对目的操作数执行逻辑左移操作,低位以0填充,移出的最高位被送到CF中;SHL 目的操作数,移位位数目的操作数,移位位数格式:格式:SHL reg/mem,imm8/CL 5计算机科学系计算机科学系汇编课件汇编课件例1:mov bl,8fh shl bl,1SHL指令快速乘法6计算机科学系计算机科学系汇编课件汇编课件SH

3、R指令SHR(shift right):对目的操作数执行逻辑右移操作,移出的数据位以0填充,最低位被送到CF中;SHR 目的操作数,移位位数目的操作数,移位位数格式:格式:SHR reg/mem,imm8/CL 7计算机科学系计算机科学系汇编课件汇编课件例2:mov al,0d0h shr al,1快速除法(无符号)SHR指令8计算机科学系计算机科学系汇编课件汇编课件SAL指令与SHL指令等价;SAR指令:用最高位填充空出的位,最低位拷贝至CF;比较SAR与SHR:SAL和SAR指令MOV AL, 0F0HSAR AL, 1MOV AL, 0F0HSHR AL, 1快速除法(有符号)9计算机科

4、学系计算机科学系汇编课件汇编课件ROL指令ROL(rotate left)指令向左移动,并将最高位同时拷贝到CF和最低位中;MOV AL, 40HROL AL, 1ROL AL, 1ROL AL, 1MOV AL, 26HROL AL, 4交换一个字节的高4位和低4位!10计算机科学系计算机科学系汇编课件汇编课件ROR指令ROR(rotate right)指令向右移动,并将最低位同时拷贝到CF和最高位中;MOV AL, 01HROR AL, 1ROR AL, 111计算机科学系计算机科学系汇编课件汇编课件RCL和RCR指令RCL(rotate carry left)指令按位左移,并将CF拷贝到

5、最低有效位,然后将最高有效位拷贝至CF中;CLCMOV BL, 88HRCL BL, 1RCL BL, 1.datatestval byte 01101010b.codeshr testval, 1jcquitrcltestval, 112计算机科学系计算机科学系汇编课件汇编课件RCL和RCR指令RCR(rotate carry right)指令按位右移,并将CF拷贝到最高有效位,然后将最低有效位拷贝至CF中;STCMOV AH, 10HRCR AH, 113计算机科学系计算机科学系汇编课件汇编课件SHLD/SHRD指令SHLD (shift left double)指令将目的操作数左移指定的

6、位数;左移空出来的位用源操作数的高位来填充;SHLD 目的操作数,源操作数,移位位数目的操作数,源操作数,移位位数格式:格式:SHLD reg16/32, reg16/32, imm8/CLSHLD mem16/32, mem16/32, imm8/CL 14计算机科学系计算机科学系汇编课件汇编课件SHLD/SHRD指令SHRD (shift right double)指令将目的操作数右移指定的位数;右移空出来的位用源操作数的低位来填充;SHRD 目的操作数,源操作数,移位位数目的操作数,源操作数,移位位数格式:格式:SHRD reg16/32, reg16/32, imm8/CLSHRD m

7、em16/32, mem16/32, imm8/CL 15计算机科学系计算机科学系汇编课件汇编课件SHLD/SHRD指令 将wval左移4位并且将ax的高4位插入到wval的低4位中.datawval word 9ba6h.codemov ax, 0ac3bhshld wval, ax, 4; shrd wval, ax, 416计算机科学系计算机科学系汇编课件汇编课件3. 移位和循环移位的应用多双字移位二进制乘法显示二进制位分离位串17计算机科学系计算机科学系汇编课件汇编课件多双字移位例子:一个包含三个双字的数组内所有位集体向右移动1位:将ESI设置为array的偏移值;将ESI+8位置处的

8、双字右移一位,最低位拷贝到CF中;将ESI+4处的值右移一位,最高位以CF值填充,最低位拷贝到CF中;将ESI+0处的双字右移一位,最高位以CF值填充,最低位拷贝到CF中;18计算机科学系计算机科学系汇编课件汇编课件二进制乘法为了应用SHL,将任意二进制乘数分解成2的幂的和:EAX * 36 = EAX * 32 + EAX * 4 = EAX * 25 + EAX * 2219计算机科学系计算机科学系汇编课件汇编课件显示二进制位字节数据在每次左移的时候,最高位都会被拷贝至CF中,我们可以利用这一点!20计算机科学系计算机科学系汇编课件汇编课件分离位串0 0 1 0 0 1 1 0 0 1 1

9、 0 1 0 1 0DHDL年年(915)月月(58)日日(04)将要提取的位移位到寄存器的最低部分,然后清除不相关的位。21计算机科学系计算机科学系汇编课件汇编课件4. 乘法和除法指令无符号乘法MUL指令有符号乘法IMUL指令无符号除法DIV指令有符号整数除法算术表达式的实现22计算机科学系计算机科学系汇编课件汇编课件MUL指令MUL指令:无符号乘法指令 将8位、16位、32位的操作数与AL、AX、EAX相乘。 单操作数指令指令格式:MULr/m8 ;AX MULr/m16 ;DX:AXMULr/m32 ;EDX:EAX23计算机科学系计算机科学系汇编课件汇编课件MUL指令mov al ,

10、5hmov bl , 10hmul bl1.被乘数是AL,乘积被放入AX中2.根据乘积中高半部分是否为0,设置或清除CF位和OF位3.因为处理的是无符号数,所以只关心CF标志位AX=0050HCF = 024计算机科学系计算机科学系汇编课件汇编课件.dataval1 word 2000hval2 word 0100h.codemov ax , val1mul val2MUL指令1.被乘数是AX,乘积被放入DX:AX中;2.根据乘积中高半部分是否为0,设置或清除CF位和OF位;3.因为处理的是无符号数,所以只关心CF标志位;AX=0000HDX=0020HCF = 125计算机科学系计算机科学系

11、汇编课件汇编课件MUL指令mov eax , 12345hmov ebx , 1000hmul ebx1.被乘数是EAX,乘积被放入EDX:EAX中;2.根据乘积中高半部分是否为0,设置或清除CF位和OF位;3.因为处理的是无符号数,所以只关心CF标志位;EAX = 12345000HEDX = 00000000HCF = 026计算机科学系计算机科学系汇编课件汇编课件IMUL指令IMUL指令:有符号乘法指令 保留乘积的符号位指令格式:单操作数IMULr/m8 ;AX IMULr/m16;DX:AXIMULr/m32;EDX:EAX27计算机科学系计算机科学系汇编课件汇编课件双操作数会根据目的

12、操作数的大小裁减乘积如果有效位丢失,则设置CF和OF IMULr16/32, r/m16/32 IMULr16/32,imm8 IMULr/m16/32,imm16/32三操作数IMULr16/32,r/m16/32,imm8IMULr16/32,r/m16/32,imm16/32IMUL指令28计算机科学系计算机科学系汇编课件汇编课件mov al , 48mov bl , 4imul bl1.被乘数是AL,乘积被放入AX中2.根据乘积中高半部分是不是低半部分的扩展,设置或清除CF位和OF位3.因为处理的是有符号数,所以关心OF标志位IMUL指令AX=00C0HOF = 1mov al , -

13、4mov bl , 4imul blAX=FFF0HOF = 029计算机科学系计算机科学系汇编课件汇编课件mov ax ,-16mov bx , 2imul bx,ax1.被乘数是BX,乘积被放入BX中2.根据乘积中的有效位是否被裁减,设置或清除CF位和OF位3.因为处理的是有符号数,所以关心OF标志位IMUL指令BX=-32OF = 0mov ax ,-32000imul ax,2AX=0600HOF = 130计算机科学系计算机科学系汇编课件汇编课件乘法操作的性能测试 编程用移位指令和乘法指令测试其性能。31计算机科学系计算机科学系汇编课件汇编课件DIV指令:无符号除法指令 执行8位、1

14、6位、32位无符号除法 单操作数指令 被除数、商以及余数都有除数的大小决定DIV指令32计算机科学系计算机科学系汇编课件汇编课件DIV指令mov ax , 0083hmov bl , 2div bl1.除数是8位的,那么被除数就应该放入16位的AX中2.商被放入AL中,余数被放入AH中AL = 41HAH = 01H33计算机科学系计算机科学系汇编课件汇编课件DIV指令mov dx , 0mov ax , 8003hmov cx , 100hdiv cx1.除数是16位时,那么被除数的高16位放入DX中,低16位放入AX中2.商被放入AX中,余数被放入DX中AX = 0080HDX = 000

15、3H34计算机科学系计算机科学系汇编课件汇编课件.datadividendqword0020hdivisor dword 00000100h.codemov edx , dword ptr dividend+4mov eax , dword ptr dividenddiv divisorEAX = 08003000HEDX = 00000020HDIV指令35计算机科学系计算机科学系汇编课件汇编课件有符号除法CBW、CWD、CDQ指令IDIV指令除法溢出36计算机科学系计算机科学系汇编课件汇编课件 三条整数符号扩展的指令CBW、CWD、CDQ指令用于整数符号扩展CBW指令将AL中的符号位扩展到

16、AH中CWD指令将AX中的符号位扩展到DX中CDQ指令将EAX中的符号位扩展到EDX中37计算机科学系计算机科学系汇编课件汇编课件 三条整数符号扩展的指令.databyteVal sbyte -65.codemov al,byteValcbw.datawordVal sword -65.codemov ax,wordValcwd.datadwordVal sdword -65.codemov eax,dwordValcdq38计算机科学系计算机科学系汇编课件汇编课件 IDIV指令IDIV指令:有符号除法指令,指令格式DIV相同 当执行8位除法指令前必须把被除数符号扩展到AH中;当执行16位除法

17、指令前必须把被除数符号扩展到DX中;当执行32位除法指令前必须把被除数符号扩展到EDX中;39计算机科学系计算机科学系汇编课件汇编课件8位有符号除法.databyteVal sbyte -48.code mov al,byteVal cbw mov bl , 5 idiv bl1.必须将被除数的符号位从AL扩展到AH2.商被放入AL中,余数被放入AH中AL = -9AH = -340计算机科学系计算机科学系汇编课件汇编课件16位有符号除法.datawordVal sword -5000.code mov ax,wordVal cwd mov bx , 256 idiv bx1.必须将被除数的符

18、号位从AX扩展到DX2.商被放入AX中,余数被放入DX中AX = -19DX = -13641计算机科学系计算机科学系汇编课件汇编课件32位有符号除法.datadwordVal sword -5000.code mov eax,dwordVal cdq mov ebx , 256 idiv ebx1.必须将被除数的符号位从EAX扩展到EDX2.商被放入EAX中,余数被放入EDX中EAX = -195EDX = +8042计算机科学系计算机科学系汇编课件汇编课件 除法溢出当除法产生的商太大而无法容纳在目的操作数中的时候,就会导致除法溢出试图执行除0运算时这会导致CPU触发一个中断,当前程序会被终

19、止43计算机科学系计算机科学系汇编课件汇编课件算术表达式的实现下列内存操作数均为32位整数:var4 = (var1 + var2) * var3var4 = (var1 * 5) / (var2 3)var4 = (var1 * -5) / (-var2 % var3)44计算机科学系计算机科学系汇编课件汇编课件5.扩展加法和减法加减任意大小的数:ADC指令扩展加法的例子SBB指令45计算机科学系计算机科学系汇编课件汇编课件ADC指令ADC指令 将源操作数、目的操作数和进位标志CF相加指令格式和MOV相同结果DL:AL,DX:AX,EDX:EAX46计算机科学系计算机科学系汇编课件汇编课件SBB指令SBB指令 从目的操作数中减去源操作数和进位标志CF指令格式:SBBreg/mem , reg/mem/imm结果AX,DX:AX,EDX:EAX

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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