【发布时间】:2011-04-09 11:31:52
【问题描述】:
我正在使用 NASM 来组装我的汇编代码。我组装的代码是这样的:
[BITS 32]
[ORG 0]
jmp 07c0h:start
testvar db 0, 0, 0, 0, 0, 0, 4, 8, 15, 16, 23, 42
start:
mov byte [testvar], 47
hang:
jmp hang
times 510-($-$$) db 0
dw 0AA55h
我在另一段代码中遇到了问题,我注意到我无法修改内存,所以我编写了这段代码来测试是否确实如此。它是!我将汇编的机器代码复制到软盘的第一个扇区,程序运行(我使用了 MS VirtualPC)。我检查了分配给 Virtual PC 的 RAM 内存并搜索了数字 4 8 15 16 23 42,这样我就可以找到二进制代码的复制位置。数据的第一个字节未被触及。为什么会这样?
【问题讨论】:
-
您使用的是哪个操作系统?你怎么知道你的汇编代码正在被加载和运行?您可以使用调试器单步执行吗?它在哪个地址加载?
-
我使用的是 Windows XP。我知道代码已运行,因为如果我省略“[BITS 32]”,它就可以正常工作。 (为什么不加载它?)它加载到通常加载引导扇区的位置,到 7c00h。我该如何调试它?
-
一点点语言挑剔汇编器是一个汇编你的汇编源代码的程序:)
标签: memory assembly x86 32-bit nasm