我对装配很新,我无法理解光标放置在13h模式下的位置。例如,(0,0)最终出现在屏幕中间。我无法理解如何让它成为我想要的地方。
我正在使用的代码:
mov al, 13h
mov ah, 0h
int 10h
mov ax, dseg
mov ds, ax
mov dl, 0 ;row
mov dh, 0 ;col
mov bx, 0
mov ah, 2h
int 10h
mov dx, offset string
mov ah, 9h
int 21h
mov al, 3h
mov ah, 0h
int 10h
int 3h
我将不胜感激。
答案 0 :(得分:2)
哦,我知道那种痛苦。
首先根据Wikipedia和this site对于代码为int 10h
的中断AH=2h
,DL代表列,DH代表行。
还有为什么int 3
在最后?
无论如何,这段代码对我有用 - 它在pos 2,3处打印字符串。用tasm编译,在dosbox下运行。
; AH=0h: Set video mode
mov al, 13h ; Video mode number
mov ah, 0h
int 10h
; AH=2h: Set cursor position
mov dl, 2 ; Column
mov dh, 3 ; Row
mov bx, 0 ; Page number, 0 for graphics modes
mov ah, 2h
int 10h
; AH=9h: Print string
mov dx, offset string
mov ah, 9h
int 21h
; Wait for keypress
mov ah, 08h
int 21h
; AH=0h: Set video mode
mov al, 3h ; Video mode number
mov ah, 0h
int 10h
; Exit
mov ah, 4ch
mov al, 0
int 21h
也是一个建议:尽可能多地写出评论;在集会中从来没有太多人;)