如何正确地将值转换为eax?

问题描述 投票:0回答:1

我使用的是32位x86。

问题是我无法将位移到左侧。

我想每次读取一个字节并将其放入eax,但我正在搞乱转移。我无法将这些位移到高位。任何的想法?

myStr byte "12345678"

mov ecx, offset myStr
mov dl, myStr[ecx]
sub dl,30h ;convert to real digit
mov al, dl
shl al,4
inc ecx

;eax should look like this end of the operation 12345678
assembly x86 bit-shift
1个回答
1
投票

首先mov al, dl将整个字节从dl移动到al,而不仅仅是半字节

其次,你只是转移al

shl al,4

移位后,剩余的高位字节或eax仍然不受影响。所以你所做的只是按顺序将myStr中的数字移动到al的高半字节。这意味着在每一步之后al将是16,32,48 ...... 128,如果前3个字节eax为0之前,则为eax。最后,eax应该看起来像0xXXXXXX80

© www.soinside.com 2019 - 2024. All rights reserved.