kleines problem mit inline assembler
-
hi ihr,
ich hab ein kleines problemchen mit inline assembler beim borland builder 5.
ich möchte an den parallel port nacheinander alle werte von 0x00 bis 0xFF schicken.
dazu hab ich das kleine programm unten geschrieben.
das klappt auch ganz supi, bis auf die tatsache, dass ich die zählvariable 'a' nicht richtig einbinden kann. der builder (genauer gesagt der TASM32) beschwert sich jedesmal über ungleiche operanden ('operands do not match') an der stelle wo er das 'a' einfügen soll.
welchen datentyp muss 'a' haben damit es klappt?
ich hab schon so ziemlich alle INT typen ausprobiert, da geht wohl nix...hier ist das programm:
#include <stdlib.h> #include <stdio.h> #include <windows.h> #include <dos.h> #include <conio.h> #define BASE 0x378 int main(int argc, char* argv[]) { short int a=0; while(!kbhit() && (a<=0xFF)) { printf("lpt -> %i\n", a); _asm{ mov DX, [BASE] mov AL, [a] out DX, AL }; Sleep(100); a++; } getch(); return 0; }
danke euch.
root2
-
Original erstellt von root2:
**```cpp
mov AL, [a]Also wenn du was in AL tust, solltest du als Variablentyp auf jeden Fall char, besser unsigned char nehmen, weil nur das hat die richtige größe.
Ich kenn zwar den Inline-ASM von borland nicht, aber versuch doch dann mal Varianten wie
mov AL, a
mov AL, BYTE PTR
mov AL, OFFSET a[ Dieser Beitrag wurde am 27.09.2002 um 13:46 Uhr von TriPhoenix editiert. ]
-
mov AL, OFFSET a
funzt
danke!
root2