|
主题 : : 一个循环解决实验9?~~~~ [已解决] |
回复[ 6次 ]
点击[ 317次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-11-06 23:28 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
assume cs:code
data segment
db 'welcome to masm!'
db 10b,100100b,1110001b---定义颜色
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b8b7h---定义要显示到显存的起始段地址
mov es,ax
mov di,0--------指向DATA段
mov si,0--------指向显存元素
mov cx,16
s: mov al,[di]
mov ah,ds:[16]
mov es:[si],ax ----复制 绿色 字符到第1行显存第一列
mov ah,ds:[17]
mov es:160[si],ax---复制 绿底红色 字符到第2行显存第一列
mov ah,ds:[18]
mov es:320[si],ax---复制 白底蓝色 字符到第3行显存第一列
inc di--------------以下2行为下次循环所需的数据做准备
add si,2
loop s
mov ax,4c00h
int 21h
code ends
end start
实验9,我想用行来循环居然老出错,现在改用列来循环只用了19行代码!追踪结果正确
接着琢磨用行来编 | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-11-06 23:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
这程序太呆板了,不能灵活选用自己想要的颜色。如果把颜色定义一个变量就好了 | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-11-07 18:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
由于定义颜色时,总出错。我先复制3个字符窜试试(行模式循环)
assume cs:code
data segment
db 'welcome to masm!'
db 10b,100100b,1110001b
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b8b7h
mov es,ax
mov bx,0
mov cx,3
s: push cx
mov di,0
mov si,0
mov cx,16
s1: mov al,[di]
mov es:[bx+si],al
inc di
add si,2
loop s1
pop cx
add bx,160
loop s
mov ax,4c00h
int 21h
code ends
end start---------------------没问题。。接着加属性代码进去试试 | | |
|
|
|
|
[第3楼]
[ 回复时间:2008-11-07 18:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
总算搞定2个循环。 不过好像用的变量太多了。怎么弄出4个变量来了唉,DI SI BX AX(20行代码)。看来我真的是没前途啊。要是还多几个要复制的属性,怎么编啊? 接着弄 看还能不能减少变量
assume cs:code
data segment
db 'welcome to masm!'
db 10b,100100b,1110001b
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b8b7h
mov es,ax
mov bx,0
mov cx,3
s: push cx
mov es,ax----用AX跳转到下一行
mov di,0 ----指向DATA
mov si,0-----指向ES
mov cx,16
mov dh,16[bx]---复制属性
s1: mov dl,[di]
mov es:[si],dx-----用DX存放有属性字符
inc di
add si,2
loop s1
pop cx
add ax,10h
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第4楼]
[ 回复时间:2008-11-07 19:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
休息会 听听MP3,好伤神。 勤有功 戏无益戒之哉 宜勉力 | | |
|
|
|
|
[第5楼]
[ 回复时间:2008-11-07 19:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
add ax,10h ------改为 add ax,10 | | |
|
|
|
|
[第6楼]
[ 回复时间:2008-11-09 11:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36 |
此贴由 贴主 于 [ 2008-11-09 11:41 ] 结贴。 结贴原因:问题已解决 | | |
|