У меня есть простая функция для построения пикселя с встроенным ассемблером в с использованием DJGPP и 256 VGA в DOS Box:Участка пиксели VGA с встроенным ассемблером
byte *VGA = (byte *)0xA0000;
void plot_pixel(int x, int y, byte color){
int offset;
if(x>32 && x <=320 && y>0 && y<180){
//x=x-1;
//y=y-1;
if(x<0){x=0;}
if(y<0){y=0;}
offset = (y<<8) + (y<<6) + x;
VGA[offset]=color;
}
}
я работаю над переводом его встраивать в сбор и У меня есть следующее:
void plot_pixel(int x, int y, byte color){
int offset;
if(x>32 && x <=320 && y>0 && y<180){
//x=x-1;
//y=y-1;
if(x<0){x=0;}
if(y<0){y=0;}
// offset = (y<<8) + (y<<6) + x;
// VGA[offset]=color;
__asm__ (
"mov $0xA000,%edx;"
"mov $320,%ax;"
"mul y;" //not sure how to reference my variable here
"add x,%ax;" //not sure how to reference my variable here
"mov %ax,%bx;"
"mov color,%al;" //not sure how to reference my variable here
"mov %al,%bx:(%edx);"
);
}
}
Однако я получаю несколько ошибок в компиляторе. Я не ознакомлен с встроенной сборкой GCC, поэтому любая помощь в исправлении моего кода будет оценена.
Возможный дубликат [Печатать символ с встроенной сборкой в C (компилятор gcc)] (http://stackoverflow.com/questions/34748733/printing-character-with-inline-assembly-in-c-gcc-compiler) – Olaf