汇编语⾔-位操作指令逻辑和移位指令
1.逻辑运算指令
·逻辑与指令AND
两位都是逻辑1,则结果是1;否则,结果是0。
按位进⾏逻辑与,结果返回⽬的操作数。
·逻辑或指令OR
两位都是逻辑0,则结果是0;否则,结果是1。
按位进⾏逻辑或,结果返回⽬的操作数。
·逻辑⾮指令NOT
原来为0的位变成1,原来为1的为就是0。
按位进⾏逻辑⾮,结果返回操作数。
·
逻辑异或指令XOR
两位不同,则结果是1;否则,结果是0。
按位进⾏逻辑异或,结果返回⽬的操作数。
·测试指令TEST
除了NOT指令不影响标志外,其他逻辑指令
·使OF=CF=0
·根据结果按定义影响ZF、SF和PF
2.移位指令
·逻辑左移指令SHL
各位同时左移,最低位补0,最⾼位进⼊CF。
·逻辑右移指令SHR
各位同时右移,最⾼位补0,最低位进⼊CF。
·算术左移指令SAL
各位同时左移,最低位补0,最⾼位进⼊CF。
·算术右移指令SAR
各位同时右移,最⾼位不变,最低位进⼊CF。
3.移位指令和乘法运算
·移位操作是最基本的数据处理⽅法
·左移⼀位相当于数值乘以2
·右移⼀位相当于数值除以2(余数在CF中)
·逻辑右移⼀位是⽆符号数除以2
·算术右移⼀位是有符号数除以2
4.循环移位指令汇编语言结束指令
·不带进位循环左移指令ROL
各位同时左移,最⾼位循环进⼊最低位和CF。
·不带进位循环右移指令ROR
各位同时右移,最低位进⼊最⾼位和CF。
·带进位循坏左移指令RCL
CF作为附加位,各位同时左移,CF进⼊最低位。
·带进位循环右移指令RCR
CF作为附加位,各位同时右移,最低位进⼊CF。
5.64位数据的移位问题
IA-32⽀持8、16、32位数据的各种移位操作
对于64位数据需要分成⾼32位、低32位分别移位·⾼低32位中间的D32和D31位,需要利⽤CF衔接·不仅要使⽤移位指令(SHL、SHR、SAR)
·必然要使⽤带进位的循环移位指令(RCL或RCR)⾼32位+CF+低32位
6.编码转换
程序设计中要将数据在不同编码间相互转换
熟悉编码的规律和特点
ASCII(±30H)BCD
·⼆进制编码的⼗进制数
⼀个⼗进制数⽤4位⼆进制编码表⽰
常⽤8421BCD码
低10个4位⼆进制编码表⽰0~9
·BCD码很直观⽅便
⼀个字节表⽰⼀位BCD码
·压缩BCD码
⼀个字节表⽰两位BCD码

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。