装配x86图形模式13h光标放置

时间:2014-01-30 13:56:15

标签: assembly

我对装配很新,我无法理解光标放置在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

我将不胜感激。

1 个答案:

答案 0 :(得分:2)

哦,我知道那种痛苦。

首先根据Wikipediathis 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

也是一个建议:尽可能多地写出评论;在集会中从来没有太多人;)