资源描述:
《汇编语言程序设计06整数运算指令与高级过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序设计_06_整数运算指令与高级过程大连理工大学软件学院_朱明2009年5月31日_V1.1提问与回顾第五章内容中我们介绍并练习了外部链接库中的一些常用过程调用这些过程使用什么指令?在逻辑运算部分内容中AND指令用于进行逻辑与运算,但他在改变标志位的同时也改变了目的操作数,什么指令能够实现逻辑与运算功能但只改变标志位而不改变操作数?同样,哪条指令与SUB类似但只改变标志位?该条指令比较后,如相等则跳转,应使用什么指令?尝试将下面的为指令转化成为汇编代码和决策伪指令汇编语言程序设计-朱明2if(bx>cx)X=1;提问与回顾…SHL(ShiftLeft),逻辑左移操作最低位以
2、0填充,最高位传送到CF中SHR(ShiftRight),逻辑右移操作最高位以0填充,最低位传送到CF中左移和右移的意义:乘法和除法逻辑移位汇编语言程序设计-朱明3B7B6B5B4B3B2B1B00SHL/SHRreg,imm8mem,imm8reg,CLmem,CLB7B6B4B3B2B1B0CFB5moval,0D0hAL=11010000bCF0shral,1AL=01101000bCF=1Section1…逻辑移位课堂练习题目——位串分离如果需要从一个字或者字节中的特定区域提取一系列位,这些位称为位串例如文件的时间戳(文件最后访问时间)的分离汇编语言程序设计-朱明4Secti
3、on1…0010011001101010DHDLyearmonthdaymoval,dlandal,01Fhmovday,almovax,dxshrax,5andal,0Fhmovmonth,almoval,dhshral,1andah,0haddax,1980movyear,axSAL(ShiftArithmeticLeft),算术左移操作最低位以0填充,最高位传送到CF中,同SHLSAR(ShiftArithmeticRight),算术右移操作最高位以自身填充,最低位传送到CF中右移的算术意义:有符号数除法算术移位汇编语言程序设计-朱明5B7B6B5B4B3B2B1B00SAL/
4、SARreg,imm8mem,imm8reg,CLmem,CLB7B6B4B3B2B1B0CFB5moval,-128AL=10000000bCFsaral,4AL=11111000bSection1…ROL(RotateLeft),循环左移操作最低位以最高位填充,最高位传送到CF中ROR(RotateRight),循环右移操作最高位以最低位填充,最低位传送到CF中循环移位不丢弃数据可用来将特定的位移入CF中循环移位汇编语言程序设计-朱明6B7B6B5B4B3B2B1B0ROL/RORreg,imm8mem,imm8reg,CLmem,CLB7B6B4B3B2B1B0CFB5CFSe
5、ction1…SHLD(ShiftLeftDouble),双精度左移操作目的操作数向左移指定位数空位用源操作数的高位填充源操作数不会有任何改变SHRD(ShiftRightDouble)目的操作数向右移指定位数空位用源操作数的低位填充源操作数不会有任何改变双精度移位汇编语言程序设计-朱明71001SHLD/SHLRreg16,reg16,CL/imm8mem16,reg16,CL/imm8reg32,reg32,CL/imm8mem32,reg32,CL/imm8Section1…1011101001101001101110100110bxaxmovbx,9BA6hmovax,0AC
6、36hshldbx,ax,4乘法指令MUL无符号数乘法指令8位、16位或32位被乘数依次为AL、AX或EAX对应的乘数可以是尺寸相等的寄存器或内存对应结果保存在AX、DX:AX、EDX:EAX中CF标值位的影响高半部分如果不为0则CF位置位汇编语言程序设计-朱明8MULreg/mem8reg/mem16reg/mem32Section2…moveax,12345hmovebx,10000hmulebxEDX:EAX=0000000123450000hCF=1乘法指令IMUL有符号数乘法指令IMUL有单操作数、双操作数和三操作数三种格式单操作数的情况与MUL相同此时如果高半部分是结果的
7、符号位扩展则OF=0汇编语言程序设计-朱明9moval,48movbl,4imulblAX=00C0hOF=1IMULreg/mem8reg/mem16reg/mem32moval,-4movbl,4imulblAX=FFF0hOF=0movax,48movbx,4imulbxDX=0000hAX=00C0hOF=0Section2…乘法指令IMUL有符号数乘法指令IMUL有单操作数、双操作数和三操作数三种格式双操作数的乘积存储在第一个操作数中,但只能是寄