80x86汇编语言编程:在屏幕上显示彩色 ASCII 码

有个题目,要求按照下图格式显示 ASCII 码、16 进制形式和 10 进制的形式。


80x86汇编语言编程:在屏幕上显示彩色 ASCII 码 - 非著名博主 - 电子信息角落


原题链接: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


程序执行后,显示画面就如本文开头的插图所示。


注:为了显示清晰起见,做而论道设置的字符颜色都使用了“亮”色。


如果想要按照原题要求显示,应该怎样改呢 ?自己试试看吧。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值