programm kommentieren < Assembler < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 14:19 Mo 26.07.2010 | Autor: | sal123 |
Analysieren Sie folgendes Assembler Programm. Kommentieren Sie das Programm ausführlich und beschreiben Sie seine Funktion !
00000000 MOV AX,0001
00000003 MOV BX ,0002
00000006 MOV CX ,0003
00000009 MOV DX ,0004
0000000C MOV SI , 0005
0000000F MOV DI , 0006
00000012 INC AX
00000013 ADD BX,02
00000016 SAL CX
00000018 OR DX,CX
0000001A ADD SI,BX
0000001C XOR DI,CX
0000001E JMP 0E
END
Hoffe das jemand in der Lage ist mir weiter zu helfen !!!!!!
Liebe Grüße
sal123
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:01 Mo 26.07.2010 | Autor: | felixf |
Moin!
> Analysieren Sie folgendes Assembler Programm. Kommentieren
> Sie das Programm ausführlich und beschreiben Sie seine
> Funktion !
>
> 00000000 MOV AX,0001
> 00000003 MOV BX ,0002
> 00000006 MOV CX ,0003
> 00000009 MOV DX ,0004
> 0000000C MOV SI , 0005
> 0000000F MOV DI , 0006
> 00000012 INC AX
> 00000013 ADD BX,02
> 00000016 SAL CX
> 00000018 OR DX,CX
> 0000001A ADD SI,BX
> 0000001C XOR DI,CX
> 0000001E JMP 0E
> END
>
> Hoffe das jemand in der Lage ist mir weiter zu helfen
> !!!!!!
Nun, du wirst doch zumindest bei ein paar der Befehle wissen, was sie tun. Zum Beispiel ganz vorne. Schreib doch erstmal auf, was jeder Befehl genau tut. (Du wirst sicher eine Referenz haben in der du das nachschauen kannst, z.B. in der Vorlesung.)
Dann arbeite das Programm Schritt fuer Schritt ab und schau, was passiert (vor allen mit den Registern). Versuche daraus eine Idee zu bekommen, was es tut.
So, und nun bist du dran. Leg mal los.
LG Felix
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:32 Mo 26.07.2010 | Autor: | sal123 |
00000000 MOV AX,0001 // in das prozessorregister Ax den wert 0001 kopierte .der register A x steht an der stelle 00000000
> 00000003 MOV BX ,0002 // in das prozessorregister Bx den wert 0010 kopierte
> 00000006 MOV CX ,0003 //in das prozessorregister cx den wert 0011 kopierte
> 00000009 MOV DX ,0004 // dx den wert 0100 kopierte
> 0000000C MOV SI , 0005 // S i den wert 0101 kopierte
> 0000000F MOV DI , 0006 // di den wert 0110 kopierte
> 00000012 INC AX // 0001+1=0010
> 00000013 ADD BX,02 // 0010+0010=0100
> 00000016 SAL CX
> 00000018 OR DX,CX
> 0000001A ADD SI,BX
> 0000001C XOR DI,CX
> 0000001E JMP 0E
> END
Mehre weisse ich leider nicht.Hoffe das jemand in der Lage ist mir weiter zu helfen !!!!!! Liebe Grüße
sal123
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:20 Mo 26.07.2010 | Autor: | felixf |
Moin!
> 00000000 MOV AX,0001 // in das prozessorregister Ax den
> wert 0001 kopierte .der register A x steht an der stelle
> 00000000
Das ist doch Quark! Der Befehl steht im Speicher an der (relativen?) Adresse 00000000. Das Register AX befindet sich auf der CPU und hat keine Adresse im Speicher!
Genauer: an der Adresse 00000000 im Programmcode wird dem Register der Wert 1 zugewiesen.
> > 00000003 MOV BX ,0002 // in das prozessorregister Bx den
> wert 0010 kopierte
> > 00000006 MOV CX ,0003 //in das prozessorregister cx den
> wert 0011 kopierte
> > 00000009 MOV DX ,0004 //
> dx den wert 0100 kopierte
> > 0000000C MOV SI , 0005 //
> S i den wert 0101 kopierte
> > 0000000F MOV DI , 0006 //
> di den wert 0110 kopierte
Kannst du sowas nicht besser aufschreiben, oder gibst du dir einfach keine Muehe?
> > 00000012 INC AX // 0001+1=0010
> > 00000013 ADD BX,02 // 0010+0010=0100
> > 00000016 SAL CX
Falls du nicht weisst, was SAL ist: guck hier.
> > 0000001E JMP 0E
Um etwas ueber diese Zeile sagen zu koennen muesste man mehr ueber den verwendeten Assembler und die Ziel-CPU kennen. Ist 0E eine relative Adresse? Eine absolute Adresse (macht keinen Sinn, falls es sich auf die angegebenen Adressen bezieht)? Oder etwas ganz anderes?
LG Felix
|
|
|
|