在使用Turbo Debugger执行我的代码时,我的bx
寄存器中有一个0001
值。
(我只能在Turbo Debugger中查看bx
注册,但无法找到如何查看整个ebx
。方问题:如何查看整个eax / ebx / ...寄存器?)
当我将ebx
发送到DD
变量sum1
后,发送的值立即变为30310001h
。
它是什么原因以及如何避免它?
我唯一猜测的原因是:sum1
收到了一个不可见的值,该值包含在ebx
中但不包含bx
(由ebx
包含)。
(我是ebx / eax / ...注册的新手。)
如果我猜对了,那我怎样才能访问ebx
中看不见的部分?
这是缩短的代码,loop2a
将字符串转换为十进制值char-by-char,并将其放入ebx
。
loop2a:
mov eax, [di]
mov ah, 0
sub eax, '0'
imul eax, ecx
add ebx, eax
mov sum1, ebx
imul ecx, ten
dec di
cmp di, a
jne loop2a
mov sum1, ebx
(编译器:Turbo汇编程序,处理器:Intel x86。)
答案 0 :(得分:1)
您初始化代码中的任何地方BX
(xor bx,bx
或mov bx,0
)。只需将其更改为EBX
(xor ebx,ebx
或mov ebx,0
)。您不能单独访问32位寄存器的高位字。