如何在DOS中用汇编显示字符?

3

我有以下代码,我试图显示它,但我的调试器(AFD)一直在调试但没有显示任何东西。

[org 0x100]
                mov ax, 0xb800
                mov es, ax
                mov di, 0

nextchar:       mov   word [es:di], 0x0720
                add   di, 2
                cmp   di, 40
                jne   nextchar

    mov ax,0x0003  ; 80x25 text mode, 16 colors
    int 0x10

嗯,0x20 是空格字符,并且您指定了黑色作为背景颜色,所以我认为您看到的是预期的行为。 - Michael
除了在顶部行打印空格之外,当你完成后设置视频模式通常会清除屏幕,这也没有帮助。 - Michael Petch
我把 0x0720 改成了 0x0741,但是还是一样的。 - Azzam asad
1
在运行程序之前,请使用 dos 命令提示符下的“cls”命令清除屏幕。有可能您所进行的更改将使屏幕顶部的内容滚动消失。在写入显示器之前,您还可以输入“mov ax,0x0003”和“int 0x10”,以设置显示模式并清除屏幕。 - Michael Petch
1个回答

1

在退出之前,给自己一个机会实际看到你的输出结果,等待键盘按键:

[org 0x100]
    mov ax, 0xb800
    mov es, ax
    mov di, 0
nextchar:
    mov   word [es:di], 0x0741 ; Will show 20x "A"
    add   di, 2
    cmp   di, 40
    jne   nextchar

    mov   ah,0x00
    int   0x16                 ; Wait for a key

    mov ax,0x0003              ; 80x25 text mode, 16 colors
    int 0x10

很抱歉,我已经找到了问题所在,那不过是我的错误。我对DOS不太熟悉。 - Azzam asad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接