У меня есть следующий код, в котором я пытаюсь вызвать функцию сборки в C, который пытается напечатать «е» на VGA дисплее (в QEmu):x86 код сборки не компиляции
void main()
{
extern void put_in_mem();
char c = 'e';
put_in_mem(c, 0xA0);
}
функция put_in_mem определяется следующим образом:
.global _put_in_mem
_put_in_mem:
push bp
mov bp, sp
mov cx, [bp + 4]
mov ax, [bp + 6]
mov ax, 0xb800
mov ds, ax
mov [bx], cx
add bx, 0x1
mov cx, 0x7
mov [bx], cx
pop bp
ret
Когда я компилировать код выше сборки с использованием NASM я получаю следующее сообщение об ошибке:
put_in_mem.asm:1: error: attempt to define a local label before any non-local labels
put_in_mem.asm:1: error: parser: instruction expected
Почему эта ошибка возникает?