|
主题 : : 实验九——使用行、列两层循环嵌套的程序 [待解决] |
回复[ 3次 ]
点击[ 315次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-02-14 09:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2011-02-09 21:07 |
assume cs:codesg, ss:stacksg, ds:datasg
ATTR_BLUEF EQU 00000010B ;绿色
ATTR_REDF_GREENB EQU 00100100B ;绿底红色
ATTR_BLUEF_WHITEB EQU 01110001B ;白底蓝色
datasg segment
db 'welcome to masm!'
db ATTR_BLUEF
db ATTR_REDF_GREENB
db ATTR_BLUEF_WHITEB
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
buff segment
db 4000 dup (0)
buff ends
codesg segment
start:
mov ax, datasg ;用于datasg中数据寻址
mov es, ax
mov ax, 0B800H ;用于显示缓冲区数据寻址
mov ds, ax
mov ax, stacksg ;创建堆栈
mov ss, ax
mov sp, 10h
mov bx, (11 * 0a0h) ;缓冲区第12行起始地址
mov cx, 3 ;12-14行
mov bp, 0
line:
push cx
mov dl, es:10h[bp] ;dl保存该行属性
mov si, 0h
mov di, 0h
mov cx, 10h ;33-48列
column:
mov al, es:0h[di]
mov [bx][64 + si], al ;数据
mov [bx][64 + si + 1], dl ;属性
inc di
add si, 2
loop column
add bx, 0a0h ;下一行
inc bp
pop cx
loop line
;拷贝出当前25*80缓存,即使刷新界面,仍能检查缓存。
check:
mov ax, buff
mov es, ax
mov ax, 0B800H
mov ds, ax
mov bx, 0
mov cx, 2000
s:
mov ax, [bx]
mov es:[bx], ax
add bx, 2
loop s
mov ax, 4c00h
int 21h
codesg ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-02-14 23:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-03-08 00:48 ]
[引用]
[回复]
[ 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 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-09-05 15:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-09-05 09:58 |
|
|