Как изменить цвет пикселя при вызовах BIOS? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь сделать довольно простую графическую игру в 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 

Однако это не работает, и я не совсем понимаю, почему.Поэтому я надеюсь, что кто-то может указать мне правильное направление, как изменить цвет пикселя.

...