概述
有个题目,要求按照下图格式显示 ASCII 码、16 进制形式和 10 进制的形式。
原题链接:http://zhidao.baidu.com/question/510082443.html
做而论道编写的程序如下:
ASSUME CS:CODE, DS:DATA
;-------------------------------------------
DATA SEGMENT
HHH DW ? ;(0 ~ 24) * 160
LLL DW ? ;(0 ~ 79) * 2
NNN DB ? ;0 ~ 255
G1 DB ?
G0 DB ?
B2 DB ?
B1 DB ?
B0 DB ?
DATA ENDS
;-------------------------------------------
CODE SEGMENT
START:
MOV AX, DATA
MOV DS, AX
MOV AX, 0B800H
MOV ES, AX
;------------------------------
MOV NNN, 0
MOV LLL, 0
M_L:
MOV HHH, 0
M_H:
CALL NNN_G2_B3
CALL PRINT_ONE
ADD HHH, 160
INC NNN
CMP NNN, 0
JE EXIT
MOV AL, NNN
MOV AH, 0
MOV BL, 25
DIV BL
CMP AH, 0
JNE M_H
ADD LLL, 14
JMP M_L
EXIT:
MOV AX, 4C00H
INT 21H
;------------------------------
NNN_G2_B3 PROC
MOV AL, NNN
MOV AH, 0
MOV BL, 16
DIV BL
CMP AL, 10
JB A30
ADD AL, 7
A30:ADD AL, '0'
MOV G1, AL
CMP AH, 10
JB A31
ADD AH, 7
A31:ADD AH, '0'
MOV G0, AH
;--------------------
MOV AL, NNN
MOV AH, 0
MOV BL, 10
DIV BL
ADD AH, '0'
MOV B0, AH
MOV AH, 0
DIV BL
ADD AH, '0'
MOV B1, AH
ADD AL, '0'
MOV B2, AL
RET
NNN_G2_B3 ENDP
;------------------------------
PRINT_ONE PROC
MOV AL, NNN
MOV AH, 0CH ;C亮红
MOV BX, HHH
MOV DI, LLL
MOV ES:[BX + DI], AX
;----------------
MOV AL, G1
MOV AH, 0AH ;A亮绿
MOV ES:[BX + DI + 2], AX
MOV AL, G0
MOV ES:[BX + DI + 4], AX
;----------------
MOV AL, B2
MOV AH, 09H ;9亮兰
MOV ES:[BX + DI + 6], AX
MOV AL, B1
MOV ES:[BX + DI + 8], AX
MOV AL, B0
MOV ES:[BX + DI + 10], AX
;----------------
MOV AL, ' '
MOV ES:[BX + DI + 12], AX
RET
PRINT_ONE ENDP
;------------------------------
CODE ENDS
;-------------------------------------------
END START
程序执行后,显示画面就如本文开头的插图所示。
注:为了显示清晰起见,做而论道设置的字符颜色都使用了“亮”色。
如果想要按照原题要求显示,应该怎样改呢 ?自己试试看吧。
最后
以上就是忧郁饼干为你收集整理的80x86汇编语言编程:在屏幕上显示彩色 ASCII 码的全部内容,希望文章能够帮你解决80x86汇编语言编程:在屏幕上显示彩色 ASCII 码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复