您好,我是论坛的初学者,我花了很短的时间开始编写汇编程序,但我仍然是初学者,想提出一些问题。
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:::::::
答案 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=79
和DH=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程序在组装系统中运行?