我尝试使用DOS的字符集进行简单的TUI但是当我写字符时它们是非常分离的:
我尝试了几种文本模式但没有成功。 (我使用此页面作为参考:http://www.ctyme.com/intr/rb-0069.htm)
我使用DOSBOX和NASM。
pd:如果我的问题不明确
这是我的代码:
[bits 16]
org 0x100
segment .text
global main
main:
; Ajustamos el modo de video
mov ah,00h
mov al,04h ; I tried with 01h,03h
int 10h
; Dibujamos el campo de juego
call draw_ui
; Terminamos la apliacion
mov ah,00h
int 21h
draw_ui:
mov ah,02h ; Posicionamos el cursor
mov dh,6 ; en la esquina superior
mov dl,17 ; izquierda del campo de
mov bh,0x0
int 10h ; juego.
mov ah,02h ; Imprimimos el caracter
mov dl,0xc9 ; correspondiente a la
int 21h ; esquina del campo
mov bl,6
call draw_top_ui
mov ah,03
int 10h
mov ah,02h
inc dl
mov bh,0x0
int 10h
mov ah,02h
mov dl,0xbb
int 21h
ret
draw_top_ui:
mov ah,03 ; Obtenemos la posicon
int 10h ; del cursor
mov ah,02h ; Movemos el cursor una
inc dl ; columna a la derecha
mov bh,0x0
int 10h
mov ah,02h ; Imprimimos el caracter
mov dl,0xcd ; de la parte superiro
int 21h ; del campo de juego
dec bl ; hacemos esto 6 veces
jnz draw_top_ui
ret
答案 0 :(得分:4)
mov ah,00h mov al,04h int 10h
模式04h不是文本屏幕!
尝试01x,40x25文本屏幕。
mov ah,03
int 10h
mov ah,02h
inc dl
int 10h
读取和写入光标位置时,必须在BH
寄存器中指定显示页面!使用BH = 0。
主要问题当然是用DOS输出字符 DOS已将光标移动到右侧!之后再次增加光标。这会在角色之间产生额外的空间。
如果您坚持自己管理光标位置,那么请使用BIOS字符输出功能0Ah。这个不会自动更新光标。