|
主题 : : 〖分享我的实验9〗已调试通过,另类定义法,嵌套循环,这个没有写注释,如果你能看懂证明你很很很用功在学 [待解决] |
回复[ 6次 ]
点击[ 285次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-02-07 19:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-02-07 19:07 |
assume cs:c,ds:d
d segment
db 'w',2,'e',2,'l',2,'c',2,'o',2,'m',2,'e',2,' ',2,'t',2,'o',2,' ',2,'m',2,'a',2,'s',2,'m',2,'!',2
db 'w',24h,'e',24h,'l',24h,'c',24h,'o',24h,'m',24h,'e',24h,' ',24h,'t',24h,'o',24h,' ',24h,'m',24h,'a',24h,'s',24h,'m',24h,'!',24h
db 'w',71h,'e',71h,'l',71h,'c',71h,'o',71h,'m',71h,'e',71h,' ',71h,'t',71h,'o',71h,' ',71h,'m',71h,'a',71h,'s',71h,'m',71h,'!',71h
d ends
c segment
k:
mov ax,d
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov bp,0
add bp,80
dec bp
sub bp,15
mov cx,11
x0:
add bp,160
loop x0
mov cx,3
x2:
mov dx,cx
mov si,0
mov cx,16
x1:
mov ax,[bx]
mov es:[bp][si],ax
add bx,2
add si,2
loop x1
add bp,160
mov cx,dx
loop x2
mov ax,4c00h
int 21h
c ends
end k | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-02-07 20:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-02-07 21:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-02-07 19:07 |
呵呵 谢谢 希望大计共同进步 有更先进或更另类的方法 大家都晒出来看看啊 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-02-07 23:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
也可以把字符及属性以文本的形式给debug,也可以显示出来, 不过瞧那么的字符确实很累 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-02-20 10:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2011-02-16 23:01 |
刚开始我也定义了好多字符,后来看到别人只定义了16个字符然后在循环里赋值,我也写成那样,就是计算每行每列花了许多时间。程序如下:
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,0
mov di,0
mov cx,16
s:mov al,[si]
mov es:[720h+di],al
mov al,02h
mov es:[721h+di],al
mov al,[si]
mov es:[7c0h+di],al
mov al,24h
mov es:[7c1h+di],al
mov al,[si]
mov es:[860h+di],al
mov al,71h
mov es:[861h+di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start
如有错误,大家指导一下 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-03-08 00:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:0
注册日期:2009-12-03 21:13 |
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!'
dw 02h,24h,71h ;三种颜色的代码
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:mov ax,data ;设置字符所在为ds段
mov ds,ax
mov ax,stack ;设置载空间
mov ss,ax
mov sp,16
mov ax,0b800h ;设置输出为ES段
mov es,ax
mov bp,1030 ;bp=80*12行+70=1030差不多在中间了
mov si,16 ;设置si为颜色所在内存地址
mov cx,3 ;显示3行所以设外层loop为3
s1:mov di,0
mov bx,0
push cx ;外层loop用来保存cx值
mov cx,16
s:push [bx] ;把ds:0中的字显示到屏幕第12行中间
pop es:[bp+di] ;这里用di来每显一个字后向2字节
push [si] ;把颜色输入
pop es:1[bp+di]
inc bx
add di,2 ;这里用di来每显一个字后向2字节
loop s
add si,2 ;换一种颜色
add bp,160 ;屏幕显示换一行
pop cx ;取回外层loop的CX值
loop s1
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-03-18 11:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-26 21:21 |
|
|