Я получаю сообщение об ошибке при компиляции следующего кода 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