因此,我尝试编码,我不知道如何改变输出颜色。我是新的汇编语言。我想十进制蓝色,十六进制绿色和八进制红色。解释与更新的代码是非常感谢。我仍然是新的汇编语言,我想一些指针如何学习好,或将它脱落很快在未来。
org 100h
.DATA
DECIMAL DB 'Enter Decimal :$'
BINARY DB 0DH, 0AH, 'Binary: $'
HEX DB 0DH, 0AH, 'Hexadecimal: $'
OCTAL DB 0DH, 0AH, 'Octal: $'
D_DATA DB 10 DUP('$') ;DECIMAL
B_DATA DB 10 DUP('$') ;BINARY
H_DATA DB 10 DUP('$') ;HEX
O_DATA DB 10 DUP('$') ;OCTAL
.code
START:
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET DECIMAL
MOV AH, 9H
INT 21H
MOV SI, OFFSET D_DATA
MOV CX, 0
ENTER:
MOV AH, 1H
INT 21H
INC CX
MOV [SI], AL
INC SI
CMP AL, 0DH
MOV DL, D_DATA
MOV AX, 0
JE BIN1
CMP CX, 2
JNE ENTER
MOV AL, 10
MOV AH, 0
MOV DL, D_DATA
SUB DL, 30H
MUL DL
MOV DL, D_DATA + 1
BIN1:
SUB DL, 20H
ADD AL, DL
PUSH AX
MOV BX, 2
MOV CX, 0
BINSOLV:
MOV DX, 0
DIV BX
ADD DX, 48
PUSH DX
INC CX
CMP AX, 0
JNZ BINSOLV
MOV SI, OFFSET B_DATA
BININPUT:
POP AX
MOV [SI], AL
INC SI
DEC CX
JNZ BININPUT
POP AX
PUSH AX
MOV BX, 8
MOV CX, 0
HEX1:
SUB DL, 20H
ADD AL, DL
PUSH AX
MOV BX, 16
MOV CX, 0
HEXSOLV:
MOV DX, 0
DIV BX
ADD DX, 48
PUSH DX
INC CX
CMP AX, 0
JNZ HEXSOLV
MOV SI, OFFSET H_DATA
HEXINPUT:
POP AX
MOV [SI], AL
INC SI
DEC CX
JNZ HEXINPUT
POP AX
PUSH AX
MOV BX, 8
MOV CX, 0
OCT1:
SUB DL, 20H
ADD AL, DL
PUSH AX
MOV BX, 8
MOV CX, 0
OCTSOLV:
MOV DX, 0
DIV BX
ADD DX, 48
PUSH DX
INC CX
CMP AX, 0
JNZ OCTSOLV
MOV SI, OFFSET O_DATA
OCTINPUT:
POP AX
MOV [SI], AL
INC SI
DEC CX
JNZ OCTINPUT
END:
MOV AH, 9
MOV DX, OFFSET BINARY
INT 21H
MOV AH, 9
MOV DX, OFFSET B_DATA
INT 21H
MOV AH, 9
MOV DX, OFFSET HEX
INT 21H
MOV AH, 9
MOV DX, OFFSET H_DATA
INT 21H
MOV AH, 9
MOV DX, OFFSET OCTAL
INT 21H
MOV AH, 9
MOV DX, OFFSET O_DATA
INT 21H
ret
1条答案
按热度按时间cyvaqqii1#
Displaying characters with DOS or BIOS中描述了生成彩色文本的方法。在“全屏应用程序”下,查找标记为
WriteStringWithAttributeTVM:
的代码段。将其代码包含在程序中,然后将八进制数字的输出从至
因为我的子例程使用以零结尾的字符串,所以还需要更改缓冲区定义:
对其他数字表示法应用类似的更改。
您需要减去30 h才能转换。
您需要减去30 h才能转换,而DL被 BINSOLV 中的字长除法破坏了!
您需要减去30 h才能转换,而DL被 BINSOLV 和 HEXSOLV 中的字长除法破坏了!
我仍然是新的汇编语言,我想要一些指针如何学习好
好吧,不要只是提取我告诉你的代码片段,还要阅读我链接的整个Q/A。
还有Displaying numbers with DOS、How buffered input works和Inputting multi-radix multi-digit signed numbers with DOS,它们包含了大量的信息......