+ -
当前位置:首页 → 问答吧 → 我只想用汇编写一个输出字符的代码,怎么总是崩溃。。。求教。。。

我只想用汇编写一个输出字符的代码,怎么总是崩溃。。。求教。。。

时间:2011-12-14

来源:互联网

.386
.model flat,stdcall
option casemap:none
.data
.code
start:
  mov AH,02H
  mov DL,'A'
  int 21H  
  mov AH,4CH
  int 21H
end start
貌似这程序有死循环(怎么看都不像啊。。。),一运行就崩溃,求高手指教(我是超级新手,大家对于我来说都是高手啊,不要路过啊)。。。

作者: makailove1   发布时间: 2011-12-14

你这代码是 dos16 的,但前面的设置却是 Win32 类的。你用 debug 看下实际生成的代码就会发现全乱了。
另外,要用 Masm6 这样的汇编程序,不能用 Masm5 (因为对 .386 这样的语句支持出错) 或 Masm32 (如果其 Bin 目录下有 LINK16.EXE 或类似名的也可用它来进行链接) 。
Assembly code

.model small
.386  ; 这个对你的程序来说不是必须。如果要加,也应该在 .model 语句之后
;  option casemap:none  不需要
.data
.code
start:
  mov AH,02H
  mov DL,'A'
  int 21H   
  mov AH,4CH
  int 21H
end start

作者: zara   发布时间: 2011-12-14

引用 1 楼 zara 的回复:
你这代码是 dos16 的,但前面的设置却是 Win32 类的。你用 debug 看下实际生成的代码就会发现全乱了。
另外,要用 Masm6 这样的汇编程序,不能用 Masm5 (因为对 .386 这样的语句支持出错) 或 Masm32 (如果其 Bin 目录下有 LINK16.EXE 或类似名的也可用它来进行链接) 。

Assembly code


.model small
.……

UP
PS:楼主可以把罗云彬的那本32汇编的书的前两章仔细看一下(或者是前三章,具体的不太清楚了)。

作者: yh_no_code   发布时间: 2011-12-14