【问题标题】:Wrong character size for Text User Interface in 8086 assembly8086 程序集中文本用户界面的字符大小错误
【发布时间】:2017-05-21 20:08:58
【问题描述】:

我尝试使用 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

【问题讨论】:

  • 您能否提供一个示例来说明您正在尝试做的事情以及到目前为止您已经尝试过的事情?
  • @zbw 已经完成了
  • 您需要显示用于生成此代码的实际汇编代码。那就是我们可以帮助你!
  • @SepRoland 准备就绪

标签: assembly nasm x86-16 dosbox


【解决方案1】:
mov ah,00h
mov al,04h
int 10h

模式 04h 不是文本屏幕!
试试 01h,即 40x25 的文本屏幕。


mov ah,03
int 10h

mov ah,02h
inc dl
int 10h

读写光标位置时,必须在BH寄存器中指定显示页面!使用 BH=0。


当然主要的问题是你用 DOS 输出字符。
DOS 已经把光标向右移动了! 然后你再增加一次。这会在字符之间产生额外的空间。

如果你坚持自己管理光标位置,那么不如使用 BIOS 字符输出功能 0Ah。这个不会自动更新光标。

【讨论】:

  • 我有同样的结果 pd:如果可以的话,我想要 40x25 的分辨率
  • 然后使用模式01h。
  • 我将 mov bh,0x0 添加到所有光标重新定位中,01h 模式的结果相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多