25. april 2004 - 15:13Der er
19 kommentarer og 1 løsning
C og assembler på 8086, int to char[] m.m.
Hejsa
Vi sidder og laver noget C programmering, som skal arbejde sammen med noget assembler.
Vores største problem er, at vi har et char array, DISP[9], som er delt direkte med assembler delen, så denne kan og skal kunne læse i den.
Nu vil vi gerne skrive noget i dette char array, men vi kan ikke rigtig få det til at spille.
Vi har nogle forskellige int, som skal sættes sammen med noget tekst, og så skrives i DISP.
Et eksempel kunne være, at vi har en int, som indeholder 2300. Vi vil så gerne have DISP til at indeholde f.eks. "8 H 2300". Det skal dog laves i flere omgange.
8 taller ligger i en int, denne skal så lægges ind på den første plads i DISP, det gør vi med: DISP[0] = (char)gear; Men det virker ikke, for idet vi lavet gear om fra int til char, kommer der jo et \0 bagefter, og det er så dette der kommer ind i DISP[0], hvordan klare vi den?
De næste to er nemme nok, det er bare: DISP[1] = ' '; DISP[2] = 'H*;
Men nu bliver den kedelig igen, vi har en int, der er mellem 0 og 99999, og dette skal ind i DISP, men hvordan? Hvis nu int'en er " 2300", så skulle man: DISP[3] = ' '; DISP[4] = '2'; DISP[5] = '3'; DISP[6] = '0'; DISP[7] = '0';
Men det holder jo ikke, er der ikke noget smart her? Vi har ikke de vilde funktioner, idet vi programmere direkte på en 8086, så det er svært at finde noget ordentlig på nettet, der refereres altid til noget strcpy osv, men det virker ikke for os.
Vi har lige lært det, så vi er ikke så skarpe. Vi har haft en del Java, så vi er blevet dovne og forventet, det jo ikke sådan når man ligefrem skal til at tænke :)
Det kan være kanon besværligt at lave selv de mest simple ting i assembler, men man får en god fornemmelse for hvad der faktisk sker, når man lige fyrer en linie C/Java/whatever af.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.