首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-04 
关于字符串输出很奇怪,在debug下运行正确却不能直接运行正确?我想在同一行输出两个字符串,由于第一个字符

关于字符串输出很奇怪,在debug下运行正确却不能直接运行正确?
我想在同一行输出两个字符串,由于第一个字符串最多20个字节,所以第二个字符串就在这一行的第20个位置开始输出,可是输出结果不正确,这是我的代码

Assembly code
;-------------------------------;输出单个数据;输入:si存放要输出的数据的地址;输出:向屏幕输出数据的信息并输出一个换行info_output proc nearpush axpush bxpush cxpush dxmov dx , simov ah , 9int 21hmov ah , 3int 10hmov cl , name_length_maxsub cl , dlmov ch , 0output_space:mov dl , ' 'mov ah , 2int 21hloop output_spacemov dx , siadd dx , name_sizemov ah , 9int 21hcall newlinepop dxpop cxpop bxpop axretinfo_output endp;-------------------------------

对字符串
Assembly code
test_1                db 'hehehe$',14 dup(?),'23873824$'

进行了测试,在debug下可以正确输出hehehe 23873824,然而直接运行却只能看见23873824,请问为什么?

[解决办法]
debug 下正常,直接运行却出错,应该是有通用寄存器没有适当地初始化。debug 在载入程序后,将除 bx/cx 外的通用寄存器全清 0 了,bx/cx 存放的是载入文件的有效尺寸;但 dos 运行程序时没有这样做,所以可能会引发怪象。
[解决办法]
把完整的代码放出来看看?
[解决办法]
只能打出 23873824$ ?

你传递的是test_1的地址吗?

热点排行