Hallo, programmiere zur Zeit mit dem MSP 430 und habe dazu folgende Fragen: Mainloop xor.b #001h,&P1OUT mov.w #010000,R15 L1 dec.w R15 jn(u)z L1 jmp Mainloop Was sind hierbei mnemonischer Code und Operationscode? Wir schreib ich dieses Programm als Codesequenz in C? Vielen Dank im voraus
Ewald schrieb: > Was sind hierbei mnemonischer Code und Operationscode? http://de.wikipedia.org/wiki/Assemblersprache Ewald schrieb: > Wir schreib ich dieses Programm als Codesequenz in C? Brian Kernighan & Dennis Ritchie, "Programmieren in C", 2. Auflage, Hanser-Verlag
Kenn mich in Assembler nicht so aus, aber in C programmierst Du einen Main Loop z.B. so: while(1) { // Hier Dein Code... }
Lass mich raten: Das ist eine Hausaufgabe. Ich wüsste nicht, wie du sonst auf die Fragen kommst.
nein, ich schreib eine Arbeit, und der Lehrer hat das in einer alten klausur gefragt.
>Mainloop xor.b #001h,&P1OUT Ein byteweise XOR wird ausgeführt. Das Register P1OUT ist Quelle und Ziel, die Konstante 0x01 ist Quelle. Das hat den Effekt, dass das Bit 0 in P1OUT getoggelt wird. Das hat allerdings keinen Effekt, wenn nicht zuvor der Entsprechende Pin als Ausgang gesetzt wurde. >mov.w #010000,R15 Es wird die Konstante 10000 in das Registerpaar R16:R15 kopiert. >L1 dec.w R15 Der Wert im Registerpaar R16:R15 wird um eins verringert. >jn(u)z L1 Wenn das vorherige dec.w kein zero gesetzt hat, nach L1 springen. >jmp Mainloop Nach Mainloop springen. In C sieht das so aus:
1 | int main() |
2 | {
|
3 | unsigned int x; // Das war vorher R16:15 |
4 | P1DIR |= 0x01; // sonst macht das Pintoggeln keinen Sinn, siehe oben |
5 | |
6 | for(;;) // die Endlosschleife "Mainloop" |
7 | {
|
8 | P1OUT^=0x01; // P1.1 toggeln |
9 | x = 10000; |
10 | while (x > 0) x--; |
11 | }
|
12 | return 0; |
13 | }
|
Beim Übernehmen in irgendeine Arbeit bitte einen Link hierauf als Quelle angeben. Grüße, Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.