инструкция NASM ожидается INB Outb - PullRequest
1 голос
/ 28 марта 2020

Я получаю сообщение об ошибке при компиляции следующего кода nasm:

global _ports_read
global _ports_write
extern _ports_port
extern _ports_data

section .text
bits 64

_ports_read:
    inb [_ports_data], [_ports_port]
    ret

_ports_write:
    outb [_ports_data], [_ports_port]
    ret

Ошибка:

.../ports.asm:10: error: parser: instruction expected
.../ports.asm:14: error: parser: instruction expected

Это указывает на строки inb [_ports_data], [_ports_port] и outb [_ports_data], [_ports_port] .

Как это исправить?

Контекст: я пишу свое собственное ядро ​​операционной системы и связываю эту сборку, чтобы я мог связываться с аппаратными портами на x86_64 в моем C код.

РЕДАКТИРОВАТЬ

Моя сборка теперь выглядит следующим образом (надеюсь, все ошибки ушли)

...

_ports_read:
    mov dx, _ports_port
    inb al, dx
    mov _ports_data, al
    ret

_ports_write:
    mov dx, _ports_port
    mov al, _ports_data
    outb dx, al
    ret
...