Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: Pikselin piirrossa error (C)

Sharph [05.05.2004 14:36:13]

#

#include <conio.h>
#include <stdlib.h>

int AdrIO;
static char ValIO;

const int MAXX=1024;
const int MAXY=768;
const int COLORS=255;

int setsvga() {
 __asm("mov ax,0x4f02");
 __asm("mov bx,0x105");
 __asm("int 0x10");

}

int settext(void) {
 __asm("mov ax,0x0003");
 __asm("int 0x10");
}

int putpixel(unsigned int x,unsigned int y,unsigned char color) {
 __asm("mov ah,0x0c");
 __asm("mov al,color");
 __asm("mov ecx,x");
 __asm("mov edx,y");
 __asm("mov bx,0x01");
 __asm("int 0x10");
}

int main() {
setsvga();

putpixel(100, 100, 5);

settext();
return 0;
}

Tollanen koodi. Miksei se toimi. Yritetään siis piirtää pikseliä kohtaan 100x100. Errorit on:

Rivit 12, 13, 30, 50-54: too many memory references for `mov'
Rivit 14, 31, 55: suffix or operands invalid for `int'

Kääntäjä on Dev-C++, koodi on peräisi koodivinkistä

Sharph [05.05.2004 19:25:54]

#

Eikö täällä ole yhtään assembly-tietäjää, joka osais korjata ton?

Antti Laaksonen [05.05.2004 19:39:30]

#

Koodissa saattaa olla muutakin vikaa, mutta Windows-ohjelman ei ole mahdollista siirtyä DOSin näyttötiloihin keskeytyksiä käyttämällä. Asiaa on puitu aiemmin mm. täällä:
https://www.ohjelmointiputka.net/keskustelu/4517-käsitinkö-osoitinmuuttujat-oikein

thefox [05.05.2004 23:08:55]

#

Ja vielä lisäksi GCC (jota Dev-C++ käyttää, ja toistetaan nyt vielä kerran että Dev-C++ on IDE, joka käyttää kääntäjänään GCC:n Windows-porttia [ainakin defaulttina])haluaa asminsa at&t:n syntaksilla (antamasi koodi on Intelin syntaksia).

edit: jaajaa, taitaapa GCCkin nykyisin syödä ihan Inteliäkin, tosin pientä muokkausta tarvitsee tehdä.

Sharph [06.05.2004 16:27:08]

#

Luin juuri tosta intel - at&t:nä, ja siinä neuvottiin tekemään tolleen. Ennen yritinkin intelin syntaksilla, eikä sekään toiminut.

thefox [12.05.2004 14:54:26]

#

Tuo koodisi on kyllä nimenomaan Intelin syntaksia. En sitten tarkemmin tiedä miten tarkalleen GCC asminsa haluaa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta