我从一个十六进制数字分别操作每个字节的问题,例如:
键:DD 0xCAEFBABE
从这里,我想拿CA并制作另一个像
的DWord0x CA notCA CA notCA
并使用它,然后传递给第二个字节EF
并执行相同的操作。
你能给我一些建议或方法来处理吗?
答案 0 :(得分:1)
这应该很容易:
key: dd 0xCAEFBABE
foo: dd 0
mov ah,[key + 3] ; 0xCA
mov al,ah
not al ; ax = (0xCA << 8) | not CA
mov [foo],ax
mov [foo+2],ax ; foo = 0xCA(not CA)CA(not CA)
答案 1 :(得分:0)
是。在x86程序集(我使用MASM语法)中,这很简单。您使用寄存器来修复地址并引用它:
lea esi, key
然后你访问它的内容并屏蔽结果(在x86的小端格式中,最低字节按顺序存储顺序排在第一位,这样就可以了。)
mov eax, dword ptr [esi]
and eax, 0FFh
访问下一个DWORD看起来像
mov eax, dword ptr [esi+1]
and eax, 0FFh