在图形模式下使用 DOS int 21h 在屏幕上的特定位置打印消息



我想在汇编中打印出字符串,我已经设法打印出一个字符串,但我无法弄清楚如何在屏幕上的特定位置打印它

这是我正在使用的代码:

IDEAL
MODEL small
STACK 100h
DATASEG
message db 'Hello World',10,13,'$'
CODESEG
start:
    mov ax, @data
    mov ds, ax
       ;graphic mode:;
    mov ax, 13h
    int 10h
    pop ds
    mov dx, offset message
    mov ah, 9h
    int 21h
exit:
    mov ax, 4c00h
    int 21h
END start

图形模式是因为这是我正在从事的一个更大项目的一部分,但据我所知,这应该不是问题。

该程序确实打印出消息,它只是将其打印在我的屏幕右上角。我非常想知道如何在特定位置打印消息,并在可能的情况下确定其大小。

您只需要将光标放置在需要显示字符串的位置即可。
屏幕 13h 有 40 列和 25 行。
使用 BIOS 功能 02h:

mov dl, 20    ;Center column
mov dh, 12    ;Center row
mov bh, 0     ;Display page 0
mov ah, 02h   ;SetCursor
int 10h
mov dx, offset message
mov ah, 09h   ;DispayString
int 21h

pop ds

这在你的代码中做了什么?


。如果可能,还要确定其大小。

编写以下内容:

message db 'Hello World',10,13,'$'
size    equ ($-1)-message

$ 是当前行(代码(开始的位置。
这里大小将得到 13 个字节。

然后像这样使用它:

mov cx, size

最新更新