Assembly 使用INT进行显示

Assembly 使用INT进行显示,assembly,x86,dos,Assembly,X86,Dos,为什么即使在运行时指令指针实际上没有到达指令109,指令109似乎也会被执行。据我所知,在C++背景下,处理器一次有序地处理指令1。地址100102105和107首先被执行,那么为什么INT 21可以在成为下一行之前显示内存位置109的内容呢 假设我们在调试时输入这些指令 100 MOV AH,09 102 Dx,109 105 INT 21 107 JMP 100 109 DB 'Hello World', '$' <Enter> <Enter> 组装程序时,汇编程

为什么即使在运行时指令指针实际上没有到达指令109,指令109似乎也会被执行。据我所知,在C++背景下,处理器一次有序地处理指令1。地址100102105和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不是一条指令,它是一条伪指令,也称为汇编程序指令。它告诉汇编程序将以下数据字节存储在当前地址。

所以你告诉我,当我在命令提示符下使用debug.exe时,键入类似于-100 A db‘我的名字是Paul R’、‘美元’、,然后我一按enter键,它就会自动更新地址100并将我的字符串放在那里?差不多,是的-这和汇编程序一样。你是说,当我在命令提示符下使用debug.exe时,键入-100a db‘我的名字是Paul R’,‘$’,,然后我一按enter键,它就会自动更新地址100并将我的字符串放在那里?差不多,是的,它只是做了与汇编程序相同的事情。