2

我正在尝试将我的简单程序从 Intel 语法转换为 AT&T(用 GAS 编译它)。我已经成功地转换了我的应用程序的很大一部分,但我仍然遇到int(中断)错误。我的功能是这样的:

printf:
    mov $0x0e, %ah
    mov $0x07, %bl

    nextchar:
       lodsb
       or %al, %al
       jz return
       int 10
       jmp nextchar

    return:
       ret

msg db "Welcome To Track!", 0Ah

但是当我编译它时,我得到了这个:

hello.S:汇编程序消息: hello.S:13:错误: msg db“Hello,World!”的
操作数大小不匹配,0Ah'int'
hello.S:19: Error: no such instruction:

我需要做什么?

4

1 回答 1

6

GAS中,常量需要一个$。将该行更改为:

int $10

你的信息应该是:

msg: .byte "Welcome to Track!", 0x0a

甚至更好:

msg: .asciiz "Welcome to Track!\n" 
于 2010-05-28T18:18:46.247 回答