为什么有的汇编源码在masm上可以正确汇编,但是在gcc -c下汇编会报无法完成链接操作的错误?

DATA SEGMENT
    STR DB 'abcd$'
DATA ENDS
CODE SEGMENT
    MOV AX, DATA
    MOV DS, AX
    MOV DX, OFFSET STR
    MOV AH, 9
    INT 21H
CODE ENDS
END

比如说这段代码

而且这段代码还有一个bug就是,abcd如果换成其他字母,执行就是输出乱码或者是重复好几次输出这个字符串,这是怎么回事呢?

图片描述

阅读 3.5k
2 个回答

GCC可以支持Intel语法的。
要在最前面加上
.intel_syntax
不过不建议用GCC。你的程序中用了DOS的中断21h,所以不建议用对Linux更亲和GCC。

gcc 用的是 AT&T 汇编,应该是不支持 masm 汇编?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进