当前位置: 代码迷 >> 汇编语言 >> 为啥执行生成的.exe文件会输出乱码
  详细解决方案

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

热度:391   发布时间:2016-05-02 04:57:04.0
为何执行生成的.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 偏址处开始的原因。
  相关解决方案