如何在寄存器中写入地址?

how can I write an address in a register?

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  

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

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

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

我试过,但没有成功,使用这个指令: MOV DX,字指针扇区

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

MOV DX, Word ptr SECTOR 读取位于 SECTOR 的第一个单词并将值放入 DXWord ptr 所做的只是告诉汇编程序您要读取一个单词(在这种情况下应该是多余的,因为目标操作数的大小已知)。

您要查找的是 OFFSET 运算符;如:

MOV DX, OFFSET SECTOR