关于字符串输出很奇怪,在debug下运行正确却不能直接运行正确?

ww884203 2011-12-27 04:21:33
我想在同一行输出两个字符串,由于第一个字符串最多20个字节,所以第二个字符串就在这一行的第20个位置开始输出,可是输出结果不正确,这是我的代码

;-------------------------------------------------------------------
;输出单个数据
;输入:si存放要输出的数据的地址
;输出:向屏幕输出数据的信息并输出一个换行
info_output proc near
push ax
push bx
push cx
push dx


mov dx , si
mov ah , 9
int 21h
mov ah , 3
int 10h
mov cl , name_length_max
sub cl , dl
mov ch , 0
output_space:
mov dl , ' '
mov ah , 2
int 21h
loop output_space
mov dx , si
add dx , name_size
mov ah , 9
int 21h
call newline

pop dx
pop cx
pop bx
pop ax
ret
info_output endp
;-------------------------------------------------------------------

对字符串

test_1 db 'hehehe$',14 dup(?),'23873824$'

进行了测试,在debug下可以正确输出hehehe 23873824,然而直接运行却只能看见23873824,请问为什么?
...全文
117 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww884203 2012-01-02
  • 打赏
  • 举报
回复
我已经解决了这个问题,我的解决方法是没有使用int 10h,而是采用获取字符串长度然后补上空格,只要不使用int 10h就一点问题也没有,看来是我不会用,谢谢大家
大熊猫侯佩 2012-01-01
  • 打赏
  • 举报
回复
只能打出 23873824$ ?

你传递的是test_1的地址吗?
zara 2011-12-28
  • 打赏
  • 举报
回复
把完整的代码放出来看看?
ww884203 2011-12-27
  • 打赏
  • 举报
回复
那么我想让它可以运行和debug时一样的结果该怎么做呢?谢谢
zara 2011-12-27
  • 打赏
  • 举报
回复
debug 下正常,直接运行却出错,应该是有通用寄存器没有适当地初始化。debug 在载入程序后,将除 bx/cx 外的通用寄存器全清 0 了,bx/cx 存放的是载入文件的有效尺寸;但 dos 运行程序时没有这样做,所以可能会引发怪象。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧