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

王爽《汇编语言》实验9——根据材料编程

2016-08-07 16:48 232 查看
**编程,在屏幕中间分别显示绿色、红底绿色、白底蓝色的

字符串‘Welcome to masm!’。**

ASSUME CS:CODE,DS:DATA,SS:STACK
;------------------------------------------------------------
;------------------------------------------------------------
DATA SEGMENT
DB 'WELCOME TO MASM!'
COLOR DB 00000010B,00100100B,01110001B
DATA ENDS
;------------------------------------------------------------
;------------------------------------------------------------
STACK SEGMENT

STACK ENDS
;------------------------------------------------------------
;------------------------------------------------------------
CODE SEGMENT
START:
MOV AX,DATA     ;初始化DS
MOV DS,AX

MOV AX,0B800H   ;初始化(ES)=显示缓冲区段地址
MOV ES,AX
MOV SI,0720H    ;0720H=11行的偏移地址
MOV CX,3        ;(CX)=外层循环次数(显示行数)
MOV DI,OFFSET COLOR     ;(DI)=所需颜色的偏移地址

PRINT:
PUSH CX
MOV CX,16       ;(CX)=内层循环次数(字符个数)
MOV BX,0        ;(BX)=字符的位置
S:
MOV AL,[BX]     ;(AL)=字符
PUSH AX
MOV AX,BX       ;计算显示缓冲区中的偏移地址
MOV DL,2
MUL DL
MOV BP,AX       ;(BP)=显示缓冲区中的偏移地址
POP AX          ;恢复(AL)=字符
MOV ES:[BP+SI],AL       ;送入字符到缓冲区
MOV AX,[DI]             ;获取颜色
MOV ES:[BP+SI+1],AL     ;送出颜色到缓冲区
INC BX                  ;准备输出下一个字符
LOOP S                  ;输出下一个字符
POP CX                  ;恢复外层循环次数
;DEC CX
ADD SI,0A0H             ;显示缓冲区偏移地址到下一行的中间
INC DI                  ;下一行颜色的偏移地址
LOOP PRINT              ;输出下一行

MOV AH,07H              ;获取键盘输入(无回显),获得显示结果用
INT 21H

MOV AX,4C00H
INT 21H
CODE ENDS
END START
;------------------------------------------------------------
;------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: