为什么即使指令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>
答案 0 :(得分:6)
DB
不是指令,它是伪指令又名汇编程序指令。它告诉汇编器在当前地址存储以下数据字节。
答案 1 :(得分:2)
组装程序时,汇编器会将您的字符串放在正确的地址。处理器可以从它未执行的地址读取。指令指针只有一个指针,可以从大于指令指针的地址读取而没有问题。毕竟,内存是“随机可访问的”。
没有“声明”。只有地址。某些汇编程序具有标签,但这些标签在汇编时由汇编器转换为地址。