前言
本次是该系列的的第0x08篇
实验环境:
- Windows10 + VS2022 + masm
0x08
代码片段链接:xorpd | xchg rax,rax 0x08
add rax,rdx
rcr rax,1
代码分析
本节也没啥陌生的指令,这里使用rcr指令进行循环右移操作,对两数和进行循环右移
rcr指令会把溢出位当作是数的最高位进行运算,如果两数和的最后一位是1,则溢出标记位会标志为1
测试代码:
.code
main proc
lea rax, [0h]
lea rdx, [0fffh]
add rax,rdx ;两数相加
rcr rax,1 ;循环右移1位,相当于除以二
ret
main ENDP
END
测试数据:
rax + rdx = 0xfff
rcr rax, 1
rax = 0x00000000000007ff,CY=1
rcr rax, 2
rax = 0x80000000000003FF,CY=1