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

为啥执行生成的.exe文件会输出乱码

2013-03-01 
为何执行生成的.exe文件会输出乱码?系统:dos6.20编译工具:masm5.0下面是test.asm文件中的代码:**********

为何执行生成的.exe文件会输出乱码?
系统:dos6.20
编译工具:masm5.0
下面是test.asm文件中的代码:


;***************************************  
code    segment                           
        assume  cs:code,ds:code           
        org     100h                      
;---------------------------------------  
start:  jmp     begin                     
mes     db      'Hi, I learn assembly.$'  
begin:  mov     dx,offset mes             
        mov     ah,9                      
        int     21h                       
        mov     ax,4c00h                  
        int     21h                       
;---------------------------------------  
code    ends                              
;***************************************  
        end     start                     



在命令提示符下执行编译和链接命令:

masm test.asm;
link test.obj;
text.exe //这里输出有乱码结果
exe2bin text.exe //转换成com格式
text.com       //输出正常


本人是汇编初学者,想请教下大家:
在用link链接后,为何直接执行test.exe会出现乱码,而通过exe2bin命令转换后,执行生成的test.com文件就正常了呢?
能否说说exe2bin的用途? 
[解决办法]
exe 格式时,要将 ds 赋值以指向 code 段的,否则 ds 指向在 psp 导致错误;com 格式,ds 和 cs 都是指向了 psp 但 code 和 psp 在同一段编址内,这也是为什么 com 文件自己的内容从 0100h 偏址处开始的原因。

热点排行