|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
“在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'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:[di], 0 ; 抹掉原来的内容
- inc di
- mov es:[di], bl ; 颜色
- inc di
- loop before
- ; 前面的内容绘制完了
-
- mov cx, 16
- line: mov al, [si]
- mov es:[di], al
- inc di
- inc si
- mov es:[di], bl ; 颜色
- inc di
- loop line
- ; 文字绘制完了
-
- mov cx, (2000 - 16) / 2
- after: mov byte ptr es:[di], 0 ; 抹掉原来的内容
- inc di
- mov es:[di], 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[bx]
- mov bl, al
-
- loop draw
-
- mov ax, 4c00h
- int 21h
- code ends
- end start
复制代码
最终效果
|
评分
-
查看全部评分
|