您的位置:首页 > 编程语言

80x86汇编语言编程:利用写显示缓冲区的方法,显示彩色文字

2016-01-25 12:04 405 查看
要求将数据段的数字,显示在屏幕的指定位置上。显示《红底绿字》。

题目链接:http://zhidao.baidu.com/question/541265076.html

程序如下:

ASSUME   CS:CODE, DS:DATA, SS:STACK
;-----------------------------------
DATA   SEGMENT
    DW   123, 12666, 1, 8, 3, 38
DATA   ENDS
;-----------------------------------
STACK   SEGMENT
    DB   16   DUP(0)
STACK   ENDS
;-----------------------------------
CODE   SEGMENT

START:
    MOV   AX, DATA
    MOV   DS, AX
    MOV   AX, STACK
    MOV   SS, AX
    MOV   SP, 16
;-----------------------
    MOV   SI, 0
    MOV   DI, 506H     ;显示屏的偏移地址

    MOV   CX, 6        ;数据段的6个数据
S1:
    PUSH  CX     
    CALL  DTOC         ;调用函数,将整型转化为字符串,在显示屏显示
    ADD   SI, 2
    ADD   DI, 2        ;DI指向下一个显示的位置
    POP   CX
    LOOP  S1
    MOV   AX, 4C00H
    INT   21H
;-----------------------------------
DTOC:
    MOV   AX, [SI]
    MOV   BX, 10
    MOV   CX, 0
D_LOOP1:
    SUB   DX, DX       ;DX清零
    DIV   BX
    PUSH  DX
    INC   CX
    CMP   AX, 0
    JNZ   D_LOOP1
    MOV   AH, 2
D_LOOP2:
    POP   DX
    CALL  SHOW_STR     ;每求的一个余数就调用显示函数
    LOOP  D_LOOP2
    RET
;-----------------------------------
SHOW_STR:              ;显示每个数据除10后的余数功能
    MOV   BX, 0B800H
    MOV   ES, BX
    ADD   DX, 4A30H    ;余数转化为ASCII码进行显示
    MOV   ES:[DI], DX
    ADD   DI, 2        ;DI指向下一个显示的位置
    RET
;-----------------------------------
CODE   ENDS
    END   START

程序执行后,显示截图如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: