|
主题 : : 实验9不理解,求助 [待解决] |
回复[ 6次 ]
点击[ 370次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-01-05 14:29 ]
[引用]
[回复]
[ top ] | |
荣誉值: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 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-01-05 15:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19 |
晕了,好像在DOSBOX里好使。。。。。。
这是为什么呢?? | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-01-05 17:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
在第四章介绍的环境中,在左上角能显示三个字符串。不知道楼主的实验环境是什么。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-01-06 08:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19 |
我的环境是XP下的CMD形式,窗口和全屏都不能显示。。。。。。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-01-06 14:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-01-15 13:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19 |
噢,知道了,我用的日文系统,好像不怎么OK,换成中文字体后,可以显示了。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-02-10 15:39 ]
[引用]
[回复]
[ top ] | |
荣誉值: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 | | |