【发布时间】:2016-04-19 23:45:46
【问题描述】:
我正在尝试逐个字符地打印一个字符串,并对其进行迭代。这就是我所拥有的:
.MODEL SMALL
.STACK 64
.DATA
string DB 'Something',0
len equ $-string
.CODE
xor bx, bx
mov si, offset string
Char:
mov al, byte[si + bx]
inc bx
cmp bx, len
je Fin
mov ah, 2
mov dl, al
int 21h
jmp Char
Fin:
mov ax, 4c00h
int 21h
END
我不知道我是否得到了正确的字符串内存引用,因为它只显示了奇怪的符号。我尝试将 30 添加到 dl,认为这是因为 ascii 表示。
如何逐字符打印?
【问题讨论】:
-
尝试将
.DATA更改为.CODE。 -
@RossRidge 尝试过,但仍然输出奇怪的符号
-
好的,在代码
mov ax,@data; mov ds,ax的开头尝试以下两行。您需要撤消我之前建议的更改。 -
大声笑谢谢,出于某种奇怪的原因,我在写:mov dx,ax,而不是 ds。谢谢,现在工作:)!! @RossRidge 发布它,我可以将您标记为答案:)
-
链接时缺少代码入口点(如何编译代码?)。我需要在第一条指令之前添加标签(例如:
start:然后将其添加到END指令中:END start否则tlink抱怨Fatal: No program entry point