实验9显示三行welcome to masm(三个程序)
编程:在屏幕中间分别显示绿色,绿底红色,白色蓝底的字符串’welcome tomasm!’
结果显示如下:
直接运行是不会用显示的,请在debug环境下运行:
程序一:最保守的方法先实现实验要求(三个循环)
assume cs:code,ds:data,es:table
data segment
db 'welcome to masm!'
data ends
table segment
dw 4000 dup (0)
table ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov si,0
mov cx,16
s0: mov ax,[bx]
mov es:[bx+720h][si],ax
mov al,2
mov es:[bx+721h][si],al
inc bx
inc si
loop s0
mov bx,0
mov cx,16
mov si,160
s1: mov ax,[bx]
mov es:[bx+720h][si],ax
mov al,36
mov es:[bx+721h][si],al
inc bx
inc si
loop s1
mov bx,0
mov cx,16
mov si,320
s2: mov ax,[bx]
mov es:[bx+720h][si],ax
mov al,113
mov es:[bx+721h][si],al
inc bx
inc si
loop s2
mov ax,4c00h
int 21h
code ends
end start
=========================华丽的分割线1=============================
程序二:一个循环
assume cs:code
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0720h ;设置中间行中间列的首地址
mov si,0
mov cx,16
s: mov ax,[si]
mov ah,2h
mov es:[bx],ax ;设置绿色字体
mov ah,24h
mov es:[bx].0a0h,ax ;设置绿底红色
mov ah,71h
mov es:[bx].0a0h.0a0h,ax ;设置白底蓝色
inc si ;指向下一字符
add bx,2 ;指向下一显存单元
loop s
mov ax,4c00h
int 21h
code ends
end start
=========================华丽的分割线2=============================
程序三:一个循环
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov bx,0 ;ds:bx指向data字符串
mov ax,0b800h
mov es,ax
mov si,0 ;es:si指向显存
mov cx,16
s: mov al,[bx] ;字符赋值al
mov ah,02h ;绿色
mov es:[si].720h,ax ;写入第12行64列
mov ah,14h ;绿底红色
mov es:[si].7c0h,ax ;写入第13行64列
mov ah,71h ;白底蓝色
mov es:[si].860h,ax ;写入第14行64列
inc bx ;指向下一字符
add si,2 ;指向下一显存单元
loop s
mov ax,4c00h
int 21h
code ends
end start