【发布时间】:2014-04-29 15:41:38
【问题描述】:
我在看assembly language for x86 processor的书
我正在尝试解决其中一个章节问题
问题是:
在您的程序中插入以下变量:
.data
Uarray WORD 1000h,2000h,3000h,4000h
Sarray SWORD -1,-2,-3,-4
编写使用直接偏移寻址的指令将 Uarray 中的四个值移动到 EAX、EBX、ECX 和 EDX 寄存器。
我写了这段代码:
TITLE MASM Template (main.asm)
INCLUDE Irvine32.inc
.data
arr1 WORD 1000h,2000h,3000h,4000h
arr2 SWORD -1,-2,-3,-4
.code
main PROC
mov esi,OFFSET arr1
mov eax,[esi]
call DumpRegs
exit
main ENDP
END main
但是eax的值是20001000!
我不明白为什么不是 00001000 ?为什么第一部分变成2000?
我该如何解决?
【问题讨论】:
-
贴出的代码中eax的值变成了20001000(经过测试!)。为什么你期望 00002000?
-
是的你是对的我编辑我的问题:(
-
因为[esi]返回值在esi的地址..我觉得应该是00001000而不是20001000
标签: assembly x86 masm irvine32