Прерывание на газе - PullRequest
2 голосов
/ 28 мая 2010

Я пытаюсь преобразовать мою простую программу из синтаксиса 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: Ошибка: несоответствие размера операнда для int'<br> hello.S:19: Error: no such instruction: msg db "Hello, World!", 0Ah '

Что мне нужно сделать?

1 Ответ

6 голосов
/ 28 мая 2010

В GAS, константы должны $. Измените эту строку на:

int $10

И ваше сообщение должно быть:

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

Или даже лучше:

msg: .asciiz "Welcome to Track!\n" 
...