如何解决如何在寄存器中写入地址?
DOSSEG
.MODEL SMALL
.STACK
.DATA
PUBLIC SECTOR
SECTOR DB 'R','o','b','e','r','t','$'
.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,Word ptr行业
注意:WRITE_CHAR过程只是一段代码,该代码从ASCII码开始向我打印一个字符。 如有必要,我也可以报告该代码,但是对于我遇到的问题似乎没有必要。
解决方法
MOV DX,Word ptr SECTOR
读取位于SECTOR
的第一个单词,并将值放在DX
中。 Word ptr
所做的全部工作就是告诉汇编程序您要读取一个单词(在这种情况下,这是多余的,因为目标操作数的大小是已知的。)
您要寻找的是OFFSET
运算符;如:
MOV DX,OFFSET SECTOR
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。