当前位置: 代码迷 >> 汇编语言 >> []dos汇编创建保存并改写文件出错
  详细解决方案

[]dos汇编创建保存并改写文件出错

热度:3049   发布时间:2013-02-26 00:00:00.0
[求助]dos汇编创建保存并改写文件出错
上课的时候没有讲这方面的知识,但是现在要用了。我就看了一些书和网页,找到一个创建一个文本文档的程序,编译和链接都通过了,但是运行的时候出现了问题。
  系统是WIN7 64位 ,用DOSBOX0.74跑的 MASM6.0.
  执行生成的应用程序的时候,会一直卡住。然后DOSBOX就崩了。没有输出的“Data.txt”文本文件。
Assembly code
.386DATA    SEGMENT        Error1 DB "Create file fail.",13,10,"$"        Error2 DB "Open file fail.",13,10,"$"        Error3 DB "Write file fail.",13,10,"$"        FileName DB "Data.txt",0        Msg DB "Hello World!",13,10DATA    ENDSSTACK     SEGMENT  STACK         DB   200  DUP(0)STACK     ENDSCODE SEGMENTAssume DS:DATA,SS:STACK,CS:CODEStart:    Mov AX,DATA    Mov DS,AX    Mov AX,3c00H    Mov CX,20H ;文件属性为归档    Mov DX,Offset FileName    Int 21H ;建立文件    Jc Err1    Mov BX,AX    Mov AX,3e00H    Int 21H ;关闭文件    Mov AX,3d02H    Mov DX,Offset FileName    Int 21H ;按读写方式打开文件    Jc Err2    Mov BX,AX    Mov AX,4000H    Mov CX,14 ;要写的字节数    Mov DX,Offset Msg    Int 21H ;写数据到文件    Jc Err3    Mov AX,3e00H    Int 21H ;关闭文件Exit:    Mov AH,4CH        Int 21HErr1:    Mov DX,Offset Error1        Jmp ShowErrErr2:        Mov DX,Offset Error2        Jmp ShowErrErr3:            Mov DX,Offset Error3        Jmp ShowErrShowErr:Mov AX,900H        Int 21H        Jmp ExitCode EndsEnd Start


------解决方案--------------------------------------------------------
用的什么汇编软件啊?Masm 的话需要在 .386 语句前加上 .model small 或类似的语句如下面的样子以说明这个是 dos16 类的程序,否则会以 win32 类的程序创建了错误的指令。用 debug 载入各自的 exe 程序文件看下就明白区别了。
Assembly code
.model small.386DATA    SEGMENT        Error1 DB "Create file fail.",13,10,"$"
  相关解决方案