【发布时间】:2010-03-02 15:17:00
【问题描述】:
有些东西我无法消化。我正在学习一些汇编程序,现在我正在处理寻址这一章。我理解用于取消引用的括号的概念,但是当我看到它的用法时,我就是无法理解它的意义。更准确地说,这里是我的困惑开始的地方:
mov al, [L1]
这里我假设 L1 是某种宏,它稍后会替换机器代码中的真实地址,对吧?
所以这条指令的作用是:取消引用al 寄存器(因为您几乎无法更改物理地址)并将值更改为存储在L1 中的值。
如果到目前为止一切正常:
mov [L1], al
类比的意思是,一定已经存储了一个地址(所以这样做是有道理的),你把它改到内存中的其他地方,对吧?
如果您能告诉我,如果您没有发现任何错误,请这样做,这将使我有可能继续学习。
最后一件事,NASM在我的代码下添加了一堆0xAA55(这个序列应该结束程序吧?),为什么会出现这么多次?
【问题讨论】:
-
NASM 增加了一堆 0xAA55。仅当您告诉它使用
TIMES (512-($-$$))/2 DW 0xAA55之类的奇怪东西(或者可能也适用于奇数计数的类似东西)而不是通常使用0字节填充直到最终@ 512 字节块末尾的 987654329@ 引导扇区签名。正常方式(TIMES 510-($-$$) DB 0/dw 0xAA55)见 NASM 手册:nasm.us/doc/nasmdo12.html#section-12.1.3
标签: assembly nasm addressing