所有的事实,无论是BIOS功能02H(的setCursor)和DOS功能02H(WriteCharacter)使用DL
寄存器作为参数,这个代码干的问题。不幸的是你的意思在这种情况下是不同的。有几种解决方案。 Ped7g建议使用免费寄存器BL
来保存单独的字符代码。
我介绍的一个简单的解决方案是根本不使用DOS输出功能,并使用BIOS函数0Eh(TeletypeCharacter)写入显示屏。该功能不依赖于DL
作为参数。它宁可使用AL
寄存器。
.model small
.stack
.code
start:
mov al, "A" <<<First character
mov bh, 0 <<<Display page 0
mov cx, 25 <<<Iteration count
mov dl, 0 <<<Start at column 0
mov dh, 0 <<<Start at row 0
again:
mov ah, 02h <<<BIOS function SetCursor
int 10h
mov ah, 0Eh <<<BIOS function TeleType
int 10h
inc dl <<<Next column
inc dh <<<Next row
inc al <<<Next character
loop again
mov ah, 4Ch
int 21h
end start
在标准文本屏幕上工作时,有80列和25行。您不应该将光标置于屏幕外!因此,程序应该执行的最多迭代次数为25.
单击程序输出屏幕截图查看代码的输出。 – Rhye
'int 10h/ah = 02h'使用'dl'作为光标的水平位置。 – Michael
我应该做什么改变? – Rhye