Assembly 我如何在登记簿上写地址?

Assembly 我如何在登记簿上写地址?,assembly,x86-16,addressing-mode,Assembly,X86 16,Addressing Mode,此汇编代码使用“相对基”系统打印字符串(请参见注释代码1)。 此代码工作正常 现在我知道AH中的函数09h使用INT 21h,允许我显示内存中字符串的所有字符,直到到达字符$(参见注释代码2)。 我直接将偏移地址放在要打印的字符串的第一个字符所在的内存位置的DX(MOV DX,000Ah)中 我想了解如何插入此地址,从扇区[0]或简单地从扇区获取它,因为这指向该内存区域中字符串的第一个元素 我尝试过,但没有成功,使用了以下说明: MOV DX,字ptr扇区 注意:WRITE_CHAR过程只是一段

此汇编代码使用“相对基”系统打印字符串(请参见注释代码1)。 此代码工作正常

现在我知道AH中的函数09h使用INT 21h,允许我显示内存中字符串的所有字符,直到到达字符$(参见注释代码2)。 我直接将偏移地址放在要打印的字符串的第一个字符所在的内存位置的DX(MOV DX,000Ah)中

我想了解如何插入此地址,从扇区[0]或简单地从扇区获取它,因为这指向该内存区域中字符串的第一个元素

我尝试过,但没有成功,使用了以下说明: MOV DX,字ptr扇区

注意:WRITE_CHAR过程只是一段代码,它从ASCII码开始向我打印一个字符。
如有必要,我也可以报告该代码,但对于我遇到的问题,似乎没有必要报告该代码。

MOV DX,Word ptr SECTOR
读取位于
SECTOR
的第一个单词,并将值放入
DX
。Word ptr所做的一切就是告诉汇编程序您要读取一个字(在本例中,这个字应该是冗余的,因为目标操作数的大小已知)

您要查找的是
OFFSET
操作符;例如:


MOV-DX,偏移扇区

MOV-DX,偏移扇区
?是。。。这是将该地址写入DX寄存器的正确指令。你能把它作为一个明确的答案吗?在维基百科关于偏移量的解释中,我找到了这个定义,现在一切都清楚了。再次感谢。
DOSSEG
.MODEL SMALL

.STACK

.DATA

    PUBLIC  SECTOR
SECTOR  DB  'R', 'o', 'b', 'e', 'r', 't', 'o', '$'


.CODE

    EXTRN   WRITE_CHAR:PROC

INDEX PROC

    ; ==================================== 1)
    MOV     AX, DGROUP
    MOV     DS, AX                  
    XOR     BX, BX
    MOV     CX, 7
L1:
    MOV     DL, SECTOR[BX]
    CALL    WRITE_CHAR
    INC     BX
    LOOP    L1
    
    ; ==================================== 2) 
    MOV     AH, 09h
    MOV     DX, 000Ah
    INT     21h
            
    MOV     AH, 4Ch
    INT     21h
    RET
INDEX ENDP

    
    END INDEX