我需要使用ah, 09h 技術在螢屏上列印一個完整的句子。我現在不知道為什么它沒有出現在螢屏上。
message db 'game over, to play again press y$'
PROC GAMEOVER
push dx
call cleanscreen
mov dx, offset message
mov ah,9h
int 21h
mov ah,0
int 16h
cmp al, 'y'
jne line
CALL STARTGAME
line:
pop dx
RET
ENDP GAMEOVER
proc cleanscreen ; cleans the screen
push cx
push bx
mov cx,4000d
mov bx,0
clean:
mov [byte ptr es:bx],0
inc bx
loop clean
pop bx
pop cx
ret
endp cleanscreen
uj5u.com熱心網友回復:
查看cleanscreen 程序:
proc cleanscreen ; cleans the screen push cx push bx mov cx,4000d mov bx,0 clean: mov [byte ptr es:bx],0 inc bx loop clean pop bx pop cx ret endp cleanscreen
螢屏設定為 80x25 16 色文本模式。當您清除螢屏中存盤的所有零時,這意味著所有字符單元格都填充了 ASCII 代碼 0(這是一個空格字符)和屬性 00h(這是 BlackOnBlack)。這里重要的是 DOS.PrintString 函式 09h 不關心螢屏上已經存在的屬性,也不輸出任何新的顏色資訊。因此,您的文本字符可以很好地寫入螢屏,但由于黑色前景色和黑色背景色,您看不到任何文字。
以這種方式撰寫程序:
proc cleanscreen ; cleans the screen
push ax
push cx
push di
mov ax, 0720h ; WhiteOnBlack space character
mov cx, 2000 ; 80*25
xor di, di
rep stosw ; write CX words starting at [es:di]
pop di
pop cx
pop ax
ret
endp cleanscreen
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/365367.html
上一篇:匯編程式中將輸入字串轉換為小寫
