打印不出内容,求高手指导
互联网的朋友大家早上,中午,下午,晚上好。小人我在学习汇编第九章的最后的一条材料分析难倒了,求高手指导。先不说,小甲老师的程序在屏幕打印welcome to masm的复杂,小弟我只想在屏幕中打印一个字母也不能显示啊。急死了!
程序如下:
assume cs:code
code segment
start: mov ax,0b800H ;显存起始地址
mov ds,ax
mov dx,0AC65H ;字母E及样式
mov ds:,dx ;定位第四行
q: mov ax,4c00H
int 21H
code ends
end start
生成exe后,在cmd中输入debug XX.exe 用单步调试一句句可以正常显示,但如果直接输入XXX.exe,屏幕什么动静也没有,这是什么问题啊!
看来论坛里没什么高手啊,还是高手不屑于这种简单问题,还是我来回答吧。
先不谈这个程序的优化问题,从整体上看,你的思路是没错的,你很会灵活变通,比起只会一味模仿别人的人来说,是很不错的。
这个程序你错就错在,在汇编源程序中,不该用ds:来表示这个最终地址,因为,汇编规定:在源程序中,mov ax,这种形式它等价于mov ax,2.所以在汇编源程序中,你只能用ds:[寄存器]的形式来表示。而
ds:这种形式仅在debug中编写程序时适用,注意区别。下边,我对你的程序进行了下改动,并成功运行了。
assume cs:code
code segment
start:mov ax,0b800h
mov ds,ax
mov bx,280h
mov dx,0ac65h
mov ds:,dx ;之所以不用ds:,这是因为在汇编程序中,不能表示偏移地址,它只表示280h这个数字。ds:,这种情况仅在debug中,才表示偏移地址,注意区别。
q:mov ax,4c00h
int 21h
code ends
end start 这是运行结果:绿底红e
估计是程序运行完就退出了呗 牡丹花下死做鬼 发表于 2013-8-16 16:56 static/image/common/back.gif
估计是程序运行完就退出了呗
哦,但小甲鱼老师的视频中讲解中没有啊,在程序中打印的内容,运行完后,依然还在啊!或者要看内容,版主你觉得我上面的程序应该点解改? 可能是你在运行程序的时候,cmd向下翻页了,然后你的程序打印的东西在上一页,可能是这样的,因为我自己遇到过这样的问题 XOR ax , ax
mov ah ,1
int 21h;输入在你的代码里输入这三句(用来输入的,功能和scanf()差不多),试试行不行 用xp系统吧,可能是系统的问题,用2003最好,有时候xp有问题,2003就能过 看来论坛里没什么高手啊,还是高手不屑于这种简单问题,还是我来回答吧。
先不谈这个程序的优化问题,从整体上看,你的思路是没错的,你很会灵活变通,比起只会一味模仿别人的人来说,是很不错的。
这个程序你错就错在,在汇编源程序中,不该用ds:来表示这个最终地址,因为,汇编规定:在源程序中,mov ax,这种形式它等价于mov ax,2.所以在汇编源程序中,你只能用ds:[寄存器]的形式来表示。而
ds:这种形式仅在debug中编写程序时适用,注意区别。下边,我对你的程序进行了下改动,并成功运行了。
assume cs:code
code segment
start:mov ax,0b800h
mov ds,ax
mov bx,280h
mov dx,0ac65h
mov ds:,dx ;之所以不用ds:,这是因为在汇编程序中,不能表示偏移地址,它只表示280h这个数字。ds:,这种情况仅在debug中,才表示偏移地址,注意区别。
q:mov ax,4c00h
int 21h
code ends
end start这是运行结果:红底绿e
页:
[1]