所有的事實,無論是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