如果有错误或问题请评论,谢谢!!
注意是是二进制,主要考察汇编移位RCL, RCR指令
SHL(Shift Left): 逻辑左移
SHR(Shift Right): 逻辑右移
SAL(Shift Arithmetic Left): 算术左移
SAR(Shift Arithmetic Right): 算术右移
其中的 SHL 和 SAL 相同, 但 SHR 和 SAR 不同.
SHL、SAL: 每位左移, 低位补 0, 高位进 CF
SHR : 每位右移, 低位进 CF, 高位补 0
SAR : 每位右移, 低位进 CF, 高位不变
它们的结果影响 OF、SF、ZF、PF、CF
它们的指令格式相同:
SHL r/m, i8
SHL r/m, CL
本文使用的AL的值为:10110001
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
code segment assume cx:code start: mov al,10110001b mov cx,8 xuyi: rcl al,1 rcr ah,1 loop xuyi mov al,ah mov ah,4ch int 21h code ends end start |
注意初始时AL的值10110001,即B1
结束时AL的值倒过来了为10001101,即8D
masm 出现错误