我有一個簡單的功能使用DJGPP和256的VGA DOS框繪製在C聯彙編像素:情節像素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;
}
}
I'm上翻譯它內聯彙編工作,我有這個:
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