汇编控制台模式一个字符

时间:2018-08-08 02:09:43

标签: assembly dos x86-16 bios

您好,我是论坛的初学者,我花了很短的时间开始编写汇编程序,但我仍然是初学者,想提出一些问题。

1并可以放置背景图像?? 2-是否可以使用图像自定义光标的指针? 3-MS-DOS。 com文件。 exe程序在组装系统中运行?


好吧,我的目标是创建一个系统提示符,但是我是汇编的初学者,我正在学习,并且混合了两个代码来生成所需的内容,但是不明白为什么当我只输入1个字符时尝试了几种使用JMP或M Udar的指令和注册方法。如果有人知道请帮助我,非常感谢。

我的代码:

   DATA SEGMENT
MESSAGE DB "PROMPT>","$"
COMMAND DB ?
ENDS

CODE SEGMENT

START:

ASSUME DS:DATA CS:CODE

;:::::::BACKGROUND (COLOR"S/IMAGES):::::::::
MOV AH,00h      ; Set video mode
MOV AL,000h      ; Mode 3 (Color text)
INT 10H
MOV AX, 0600h        ; AH=06(scroll up window), AL=00(entire window)
MOV BH,10000100b    ; left nibble for background (blue), right nibble for foreground (light gray)
MOV CX, 0000h        ; CH=00(top), CL=00(left)
MOV DH, 50     ; DH=19(bottom), DL=50(right)
MOV DL , 50
INT 10h
;:::::END BACKGROUND:::::::::::::::::::::::




;:::::::POMPT:::::::::::
MOV AX,DATA
MOV DS,AX
LEA DX,MESSAGE
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV COMMAND,AH
MOV AH,4CH
INT 21H
ENDS
END START
;:::::END PROMPT:::::::

1 个答案:

答案 0 :(得分:0)

让我们纠正一些问题:

MOV AH,00h      ; Set video mode
MOV AL,000h      ; Mode 3 (Color text)
INT 10H

评论说视频模式3有80列25行,但是代码要求视频模式0只有40列25行。

mov ax, 0003h
int 10h

MOV AX, 0600h        ; AH=06(scroll up window), AL=00(entire window)
MOV BH,10000100b    ; left nibble for background (blue), right nibble for foreground (light gray)
MOV CX, 0000h        ; CH=00(top), CL=00(left)
MOV DH, 50     ; DH=19(bottom), DL=50(right)
MOV DL , 50
INT 10h

在80x25屏幕上,右下角位于(79,24)。因此,您需要设置DL=79DH=24
拥有1000b的“左半字节”不代表蓝色。该位模式对应于深灰色。如果您想要蓝色背景,则需要在BH高半字节中指定0001b(4-7位)。
同样,持有0100b的“右半字节”并不代表浅灰色。该位模式对应于红色。如果要使用白色字符颜色,则需要在BH(位0-3)的低半字节中指定0111b。

mov ax, 0600h
mov bh, 00010111b ;White (= light gray) on blue background
xor cx, cx        ;(0,0)
mov dx, 184Fh     ;(79,24)
int 10h

MOV AH,1
INT 21H
MOV COMMAND,AH

DOS RetrieveCharacter函数返回AL中的字符。您错误地从AH复制了。

mov ah, 01h
int 21h
mov COMMAND, al

  

1并可以放置背景图像?? 2-是否可以使用图像自定义光标的指针? 3-MS-DOS。 com文件。 exe程序在组装系统中运行?

  1. 在文本视频屏幕上,您可以放置​​背景图像,但由于像素太少而不能实现照片般逼真的效果。
  2. 如果您要管理自己的“光标”并为此重新定义一个字符形状。初学者需要做很多工作...
  3. 为什么不呢?您使用的编程语言或系统开发人员使用的编程语言与运行可执行文件无关。