实验9. 第四次更新。完整答案
本帖最后由 传说。 于 2014-5-9 13:11 编辑assume cs:code,ds:data
data segment
db'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0b70h
mov di,0
mov cx,16
s: mov al,
movbyte ptr es:,al
inc di
add si,2
loop s
mov si,0b71h
mov cx,16
s0: mov byte ptr es:,42h
add si,2
loop s0
mov ax,4c00h
int 21h
code ends
end start
显示了一个。我自己的方法。 和答案不一样。 不过貌似有点麻烦。
简化一次。
assume cs:code,ds:data
data segment
db'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,0
mov si,0b80h
mov cx,16
s: mov bl,
mov byte ptr es:,bl
inc di
inc si
mov byte ptr es:,02h
inc si
loop s
mov ax,4c00h
int 21h
code ends
end start三更:
显示两种颜色的了。 以此类推。 三种颜色也这样
assume cs:code,ds:data
data segment
db'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,0
mov si,0b80h
mov cx,16
s: mov bl,
mov byte ptr es:,bl
inc di
inc si
mov byte ptr es:,02h
inc si
loop s
mov cx,16
mov si,0AE0h
mov di,0
s0: mov bl,
mov byte ptr es:,bl
inc di
inc si
mov byte ptr es:,42h
inc si
loop s0
mov ax,4c00h
int 21h
code ends
end start
第四次更新完整版。 貌似比答案简化点。 有什么不足还请指出。
assume cs:code,ds:data,ss:stack
data segment
db'welcome to masm!'
db 02h,21h,42h
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h;初始化栈顶
mov ax,0b810h;屏幕中位置的段地址
mov es,ax
mov di,0
mov si,0b40h
mov bx,9 ;指向第一个字符属性
mov cx,3
s3: push cx ;保护外循环用到的数据
push si
push di
mov cx,10h
s2: mov al,
mov es:,al
add si,2
inc di
loop s2
mov cx,10h
sub si,1fh ;此处我用减法,算出下一循环si
s1: mov es:,bl
add si,2
loop s1
pop di ;数据出栈
pop si
pop cx
add si,0a0h;指向下一行 ,为下一次循环准备
inc bx
loop s3
mov ax,4c00h
int 21h
code ends
end start
额,分开写入字符和颜色。 只是用自己的方法写一下。 答案还是要细细研究的。 传说。 发表于 2014-5-8 21:14 static/image/common/back.gif
只是用自己的方法写一下。 答案还是要细细研究的。
你不喜欢加注释,这是大忌 xiaosawanjava 发表于 2014-5-8 21:44 static/image/common/back.gif
你不喜欢加注释,这是大忌
:funk:额额、好吧。 这习惯要养成。。。 :big都来提提意见 为何没人提意见? 完美?:mad:
页:
[1]