|
主题 : : 实验9 刚测试玩,求指点!!!! [待解决] |
回复[ 2次 ]
点击[ 316次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-12-21 23:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2009-09-20 22:11 |
assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
db 02h,24h,71h
datasg ends
codesg segment
start:
mov ax,0b800h
mov ds,ax
mov bx,940h ;定位显存地址
mov ax,datasg
mov es,ax ;定位数据段
mov cx,3 ;要输出3行
s1:mov dx,cx
mov cx,16
mov si,0
s:mov al,es:[si]
mov ah,es:[di+16] ;把字符和原色送给AX
mov [bx+64],ax ;输出到显存
inc si
add bx,2
loop s
sub bx,32 ;减去在循环中显存增加的
add bx,160 ;换行
inc di ;下一个原色
mov cx,dx ;恢复CX
loop s1
mov ax,4c00h
int 21h
codesg ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-12-27 19:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-23 22:29 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-01-09 18:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-02 16:13 |
思路一样,但是程序有差别。
我的debug已经通过。。。
assume cs:code,ds:data
data segment
db 'wife,I love you!'
db 2,36,113;颜色代码
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,0b86eh;es显示器缓冲区地址
mov es,ax
mov bx,0
mov cx,16
mov si,0
mov di,0
s:mov al,[si]
mov ah,[bx+16];得到颜色代码
mov es:[di+64],ax
mov al,[si]
mov ah,[bx+17]
mov es:[di+224],ax
mov al,[si]
mov ah,[bx+18]
mov es:[di+384],ax;按照列将3行字符写入写入内存
add si,1
add di,2
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|