segment:x86程序集中的偏移量

时间:2017-04-08 07:17:54

标签: assembly x86

在程序集中定义变量时,只能使用segment:offset操作数输出它。您可以通过关键字偏移本身获得偏移值。但是为什么对于我的代码,我仍然得到正确的输出,即使我没有使用offset指令。但是如果我的变量是一个字符串并且我在dos中使用了输出字符串,即mov,9h然后是int21h,我使用mov dx,offset msg然后将dos中断输出到字符串得到正确的输出。

.model small

.stack 100h

.data
msg1 db 50d         ;2 in ascii table
msg2 db 51d         ;3 in ascii table
msg3 db 52d         ;4 in ascii table

.code

main proc
mov ax, @data       ;point to the data segment
mov ds, ax

mov dl, msg1        ;why does this work, it was suppose to be ds:offset msg1
mov ah, 2h          ;output character
int 21h  

mov dl, msg2        ;why does this work, it was suppose to be ds:offset msg1
mov ah, 2h          ;output character
int 21h

mov dl, msg3        ;why does this work, it was suppose to be ds:offset msg1
mov ah, 2h          ;output character
int 21h 


mov ax, 4c00h
int 21h

main endp
end main

我只需要知道int21h需要什么。我认为如果你在变量中加入一些东西,你总是需要段和偏移量。谢谢您的帮助。

0 个答案:

没有答案