王爽《汇编语言》第九章实验9
第9章实验9我自己编的程序可以运行,但是没有向屏幕输出;我将习题答案的代码复制、编译之后也是屏幕没有输出,这是怎么回事啊?会不会是dos设置的原因??assume cs:code
data segment
db 'Welcome to masm!',0
data ends
;(dh) = 行号 (dl) = 列号 (cl) = 颜色 ds:si指向字符串地址
;在屏幕的8行3列显示绿色的打data段中的数据
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov dh,8;
mov dl,3;
mov cl,2;
mov ax,data;
mov ds,ax;
mov si,0;
mov ax,stack;
mov ss,ax;
mov sp,16;
call show_str
mov ax,4c00h;
int 21h;
show_str:
;首先把该压栈保存的压栈保存 ,
push dx
push ax
push si
push cx
;计算出dh行dl列的数据缓冲地址
;计算行数所用的字节数
mov ax,160
mul dh
mov cx,ax;
;计算列数字节数
mov ax,2
mul dl
;计算要填充数据的缓冲区地址偏移
add ax,cx;
;填充缓冲区
mov si,0;
mov di,ax;
mov ax,0b800h;
mov es,ax;
mov ch,0;
pop ax;
s:
mov cl,ds:;
jcxz funcend;cx为0就填充颜色
mov es:,cl;
mov es:,al;颜色属性
add di,2
inc si;
jmp s;
;函数结束前把该出栈的全部出栈
funcend :
pop si
pop ax
pop dx
ret
code ends
end start这段代码你跑一下看看,这段代码我验证过可以在屏幕显示文字。如果能显示,就表示是程序的问题。如果不能显示就再来分析其他原因 熊文杰 发表于 2013-5-30 22:10 static/image/common/back.gif
这段代码你跑一下看看,这段代码我验证过可以在屏幕显示文字。如果能显示,就表示是程序的问题。如果不能显 ...
还是没法显示哦,也是程序运行没有显示错误,但是没有输出:'(,会不会跟dos的设置有关? 空陌 发表于 2013-5-31 13:50 static/image/common/back.gif
还是没法显示哦,也是程序运行没有显示错误,但是没有输出,会不会跟dos的设置有关?
那你下一个dosbox把,虚拟dos,是64位win7,就是在dos box上跑的 熊文杰 发表于 2013-5-31 14:06 static/image/common/back.gif
那你下一个dosbox把,虚拟dos,是64位win7,就是在dos box上跑的
我的机子是32位win7的,用64位的可以么?? 你重启电脑后再运行那个文件试一下 空陌 发表于 2013-5-31 14:55 static/image/common/back.gif
我的机子是32位win7的,用64位的可以么??
我是64位win7 dosbox下是没什么问题的 2548827329 发表于 2013-5-31 15:33 static/image/common/back.gif
你重启电脑后再运行那个文件试一下
还是没看到输出,好像屏幕一闪,就没有了:( 我也是这样额求解... 真是难得给力的帖子啊。 本帖最后由 2548827329 于 2013-5-31 17:53 编辑
空陌 发表于 2013-5-31 16:23 static/image/common/back.gif
还是没看到输出,好像屏幕一闪,就没有了
试一试这段代码,你刚开电脑就编译执行这段代码试一下
assume cs:code
data segment
db"Beginner's All-purpose Symbolic Instruction Code.",0
data ends
code segment
begin:
mov ax,data
mov ds,ax
mov si,0
call letterc
mov ax,0b800h
mov es,ax
mov di,720h
s0:
mov ch,0
mov cl,
jcxz s1
mov es:,cl
mov ah,01000010b
mov es:,ah
inc si
inc cx
add di,2
loop s0
s1:
mov ax,4c00h
int 21h
letterc:
push ax
push si
s:
mov ch,0
mov cl,
jcxz s4
cmp cl,61h
jb s3
cmp cl,7ah
ja s3
sub cl,20h
mov ,cl
s3: inc si
inc cx
loop s
s4:
pop si
pop ax
ret
code ends
end begin 2548827329 发表于 2013-5-31 17:52 static/image/common/back.gif
试一试这段代码,你刚开电脑就编译执行这段代码试一下
结果还是一样哦,闪频之后就没有反应了
空陌 发表于 2013-5-31 19:21 static/image/common/back.gif
结果还是一样哦,闪频之后就没有反应了
那就是电脑的问题吧,不过不要纠结这个问题了,继续向下学习吧 无回帖,不论坛,这才是人道。 debug下单步是有显示的 是把?
在mov ax,4c00h前面加
mov ah,01h
int 21h
相当于getchar() 熊文杰 发表于 2013-6-2 13:47 static/image/common/back.gif
debug下单步是有显示的 是把?
在mov ax,4c00h前面加
mov ah,01h
终于有显示了,3Q3Q…… 空陌 发表于 2013-6-3 08:07 static/image/common/back.gif
终于有显示了,3Q3Q……
有显示就好{:1_1:} 本帖最后由 双鱼淚 于 2014-11-18 17:17 编辑
为何但不调试能够显示 直接运行却不行呢
已经加了mov ah ,01h
int 21h
页:
[1]