这是我写的代码完美无缺的代码,除了我无法弄清楚如何删除控制台的东西(d:\)。 代码在屏幕中间打印hello。
IDEAL
MODEL small
STACK 100h
DATASEG
; --------------------------
msg db 'hello'
; --------------------------
CODESEG
start:
mov ax, @data
mov ds, ax
; --------------------------
;fullscreen
MOV AL, 13H
MOV AH,0
INT 10H
mov si,@data;moves to si the location in memory of the data segment
mov ah,13h;service to print string in graphic mode
mov al,0;sub-service 0 all the characters will be in the same color(bl) and cursor position is not updated after the string is written
mov bh,0;page number=always zero
mov bl,00001111b;color of the text (white foreground and black background)
; 0000 1111
;|_ Background _| |_ Foreground _|
;
mov cx,5;length of string
;resoultion of the screen is 244x126
mov dh,63;y coordinate
mov dl,122;x coordinate
mov es,si;moves to es the location in memory of the data segment
mov bp,offset msg;mov bp the offset of the string
int 10h
; --------------------------
exit:
mov ax, 4c00h
int 21h
END start
中间有黑色背景,中间有白色文字但左上角有d:\
感谢您的帮助!
答案 0 :(得分:2)
当程序完成显示消息时,您可以使用DOS函数4Ch返回操作系统。这意味着DOS将再次将其提示放在屏幕上。那是" d:\"你正在看到的。
要有足够的时间查看邮件,您需要推迟返回DOS 只需等待用户按任意键:
mov ah, 07h ;Input from keyboard without echo to the screen
int 21h
mov ax, 4C00h ;Terminate
int 21h
;resoultion of the screen is 244x126 mov dh,63;y coordinate mov dl,122;x coordinate
我不知道你在哪里得到这个特殊的分辨率数据
您使用的屏幕13h的图形分辨率为320x200,但您用于显示文本的BIOS功能13h需要DL
和{{中的光标坐标 1}}寄存器。列的范围为0到39,行的范围为0到24
要显示文字"你好"在屏幕中间,您需要:
DH