1

为什么指令 109 似乎已被执行,即使它在运行时实际上并没有被指令指针到达。据我所知(C++ 背景),处理器一次处理 1 条指令,并且有条不紊。首先执行地址 100,102,105 和 107,那么为什么 INT 21 可以在成为下一行(尚未声明)之前显示内存位置 109 的内容?

(假设我们在调试时输入这些指令)

100 MOV AH,09
102 Dx,109
105 INT 21
107 JMP 100
109 DB 'Hello World', '$' <Enter> <Enter> 
4

2 回答 2

6

DB不是指令,它是伪指令,也就是汇编指令。它告诉汇编器将以下数据字节存储在当前地址。

于 2013-01-20T12:08:24.120 回答
2

当程序被汇编时,汇编器会将你的字符串放在正确的地址。处理器可以从它没有执行的地址中读取。指令指针只是一个指针,您可以从大于指令指针的地址读取而不会出现问题。毕竟内存是“随机可访问的”。

没有“声明”。只有地址。一些汇编程序有标签,但这些标签在汇编时由汇编器翻译成地址。

于 2013-01-20T12:08:22.497 回答