Я пытаюсь сделать довольно простую графическую игру в 16-битной сборке x86.Особенно, я хочу иметь возможность менять цвет пикселя.
У меня уже есть эмулируемый загрузчик (qemu) и фрагмент кода, который позволяет запускать игру при загрузке, чтобы она могла получить доступ к определенным компонентам, связанным с графикой.
После некоторых исследованийЯ наткнулся на следующую бумагу , которая документирует использование прерывания 10h и, таким образом, дает нам следующий код для изменения цвета пикселя:
mov al, 13h #Desired video mode: graphics mode
mov ah, 0 #Set video mode
int 10h #Interrupt
mov al, 1100b #Set color of the pixel(I believe it is light red)
mov cx, 10 #Set x coordinate
mov dx, 20 #Set y coordinate
mov ah, 0ch
int 10h
Однако я делаю игрус синтаксисом AT & T (в образовательных целях).Поэтому я попытался выяснить это с помощью этого синтаксиса, в результате чего получился следующий код:
mov $0x00, %ah #00h interpreted as hexadecimal
mov $0x13, %al #13h interpreted as hexadecimal
int $0x10 #10h interpreted as hexadecimal
mov $12, %al #1100 interpreted as bits
mov $5, %cx #Set x coordinate to immediate value 5
mov $5, %dx #Set y coordinate to immediate value 5
mov $0x0c, %ah #0ch interpeted as hexadecimal
int $0x10 #10h interpreted as hexadecimal
Однако это не работает, и я не совсем понимаю, почему.Поэтому я надеюсь, что кто-то может указать мне правильное направление, как изменить цвет пикселя.