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

时间:2021-11-04 00:48:08
实现向屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm'
assume cs:codesg,ds:datasg

datasg segment
db 'welcome to masm!'
datasg ends

color segment
db 00000010B ;黑底绿字
db 00100100B ;绿底红字
db 01110001B ;白底蓝字
color ends

stack segment
dw 0,0,0,0, 0,0,0,0
stack ends

codesg segment
start:
mov ax,stack
mov ss,ax
mov sp,10H
mov ax,color
mov ds,ax
mov bx,2

mov cx,3
colorpush:
mov al,0
mov ah,[bx]
push ax
sub bx,1
loop colorpush

;计算第一个输出位置
mov bx,1824
mov ax,0B800H
mov ds,ax
mov ax,datasg
mov es,ax


mov cx,3
outputloop:
mov si,0
mov di,cx
pop dx;取得输出颜色
mov cx,16
outputline:;向输出位置输出数据
mov dl,es:[si]
mov [bx],dx;字符+属性
;计算下一个输出位置
inc si
add bx,2
loop outputline
mov cx,di
add bx,128
loop outputloop
mov ax,4c00H
int 21H
codesg ends

end start