|
主题 : : 实验9不理解,求助 [待解决] |
回复[ 6次 ]
点击[ 370次 ] | |
|
|
|
|
[帖 主] [ 发表时间:2010-01-05 14:29 ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19 |
对于实验9写代码如下,但执行不显示结果,请各位大侠帮助一下。
assume cs:code,ds:data
data segment
db 'welcome to masm!'
db 02h;黒、緑
db 28h;緑、赤
db 71h;白、ブル
data ends
stack segment
dw 16 dup (0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0B800h
mov es,ax
mov ax,stack
mov ss,ax
mov sp,10H
mov cx,3
s: mov bx,3
sub bx,cx
mov ah,[10h+BX]
push cx
mov bx,0
mov cx,10h
s0: mov al,[bx]
mov si,bx
add si,si
mov es:[si],ax
inc bx
loop s0
mov ax,es
add ax,0Ah
mov es,ax
pop cx
loop s
xor ah,ah
int 16h
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第6楼] [ 回复时间:2010-02-10 15:39 ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-02 15:08 |
我的方法类似,编译连接通过,测试能正常显示。
提供给你参考,具体如下:
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!'
db 2h,24h,71h ;设置颜色
data ends
stack segment
dw 8 dup (0)
stack ends
code segment
start:
mov ax,0b800h
mov es,ax
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov cx,3
mov bx,7c0h ;(从第12行显示,每行从第32个字符显示,每个字符2字节)12*160+64=1984=7C0H
mov si,0
s: push cx ;外循环分行写入每行数据到显示内存,内循环处理每个字符,cx入栈
push si ;外循环用si来跟踪颜色,你循环用si跟踪字符,si入栈
mov ah,16[si] ;外循环中把每行颜色数据读入ah
mov si,0 ;初始化内循环所需的各个寄存器
mov di,0
mov cx,16
s1: mov al,[si]
mov es:[bx+di],ax
inc si
add di,2
loop s1
add bx,0a0h
pop si
inc si
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start | | |
|