Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么指令 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>
DB不是指令,它是伪指令,也就是汇编指令。它告诉汇编器将以下数据字节存储在当前地址。
DB
当程序被汇编时,汇编器会将你的字符串放在正确的地址。处理器可以从它没有执行的地址中读取。指令指针只是一个指针,您可以从大于指令指针的地址读取而不会出现问题。毕竟内存是“随机可访问的”。
没有“声明”。只有地址。一些汇编程序有标签,但这些标签在汇编时由汇编器翻译成地址。