实验九“想多了”版程序
“在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'”,你怎么理解这段话?反正我的理解是“先显示绿色,然后显示绿底红色,然后再显示白底蓝色,后面的显示覆盖掉前面的显示”,后来我发现我想多了。。。
不管怎么说,贴代码吧。。。
assume cs:code, ds:data
data segment
db 'welcome to masm!'
db 2, 24h, 71h
data ends
stack segment stack
dw 8 dup(0)
stack ends
code segment
start: mov ax, data
mov ds, ax
mov ax, 0b800h
mov es, ax
; 初始颜色为黑底绿色
mov bl, 2
; 初始化cx的值
mov cx, 29
draw: push cx
xor si, si
xor di, di
; 初始化完毕
mov cx, (2000 - 16) / 2
before: mov byte ptr es:, 0 ; 抹掉原来的内容
inc di
mov es:, bl ; 颜色
inc di
loop before
; 前面的内容绘制完了
mov cx, 16
line: mov al,
mov es:, al
inc di
inc si
mov es:, bl ; 颜色
inc di
loop line
; 文字绘制完了
mov cx, (2000 - 16) / 2
after: mov byte ptr es:, 0 ; 抹掉原来的内容
inc di
mov es:, bl ; 颜色
inc di
loop after
; 绘制完毕
; 简单的延时
mov dx, 2000
delay: mov cx, 3000
loop $
dec dx
jnz delay
pop cx
; 用计数的余数来获取字体信息的位置
mov ax, cx
mov bx, 3
div bl
mov bl, ah
xor bh, bh
; 获取字体信息
mov al, 10h
mov bl, al
loop draw
mov ax, 4c00h
int 21h
code ends
end start
我复制了代码 为什么运行程序啥都没有 很好的样子,学习一下! 过来 看一看 呵呵。
页:
[1]