Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
ef_informatik:assembler [2024-09-10 08:08] – [1. Hexadezimalsystem] spsef_informatik:assembler [2024-09-24 14:04] (aktuell) – [6. Funktionen] sps
Zeile 3: Zeile 3:
 ===== - Hexadezimalsystem ===== ===== - Hexadezimalsystem =====
  
-Assembler ist eine etwas besser leserliche Form der Maschinensprache (Sprache, die die CPU 'versteht'). Wahrscheinlich hast du mit beiden Sprachen bereits Bekanntschaft gemacht: +Assembler ist eine etwas besser leserliche Form der Maschinensprache (Sprache, die die CPU 'versteht'). Mit Assembler hast du bereits im Little Man Computer Bekanntschaft gemacht.
-   * Assembler: Little Man Computer +
-   * Maschinensprache: Programmieren der 8-Bit CPU+
  
 Befehle in Maschinensprache werden im Binärsystem ausgedrückt. Selbst für relativ kleine Zahlen resultiert dies daher in ziemlich langen Ausdrücken. Deshalb schreibt man diese oft ins Hexadezimalsystem um, was folgende Vorteile hat: Befehle in Maschinensprache werden im Binärsystem ausgedrückt. Selbst für relativ kleine Zahlen resultiert dies daher in ziemlich langen Ausdrücken. Deshalb schreibt man diese oft ins Hexadezimalsystem um, was folgende Vorteile hat:
Zeile 20: Zeile 18:
 **Beispiele:** **Beispiele:**
    * Umrechnung Hexadeimalsystem -> Dezimalsystem $0xB3 = 11 \cdot 16^1 + 3 \cdot 16^0 = 179$    * Umrechnung Hexadeimalsystem -> Dezimalsystem $0xB3 = 11 \cdot 16^1 + 3 \cdot 16^0 = 179$
-   * Umrechnung Hexadeimalsystem -> Binärsystem $0xB3 = 11 \cdot 16^1 + 3 \cdot 16^0 = 1011  0011$ +   * Umrechnung Hexadeimalsystem -> Binärsystem $0xB3 = 11 \cdot 16^1 + 3 \cdot 16^0 = 1011 0011$ 
-   * Umrechnung Binärsystem -> Hexadezimalsystem  $1100  1011 = 1100 \cdot 16^1 + 1011 \cdot 16^0 = (8+4) \cdot 16^1 + (8+2+1) \cdot 16^0 = C \cdot 16^1 + B \cdot 16^0 = 0xCB$+   * Umrechnung Binärsystem -> Hexadezimalsystem  $1100 1011 = 1100 \cdot 16^1 + 1011 \cdot 16^0 = (8+4) \cdot 16^1 + (8+2+1) \cdot 16^0 = C \cdot 16^1 + B \cdot 16^0 = 0xCB$
  
 <box 100%> <box 100%>
Zeile 252: Zeile 250:
 <box 100%> <box 100%>
 **Aufgabe 8:** **Aufgabe 8:**
-  Schreibe ein Programm, das Zahlen 1 bis 100 addiert und am Ende die Summe ausgibt.+ 
 +a) Schreibe ein Programm, das einen Countdown 10,9,...1,0 ausgibt. 
 + 
 +<nodisp 1> 
 +++++Lösung| 
 +<code> 
 +        MOV R1,#10 
 +        MOV R2,#1 
 +LOOP:   OUT R1,4 
 +        SUB R1,R2 
 +        CMP R1,#0 
 +        BGE LOOP 
 +        HLT 
 +</code> 
 +++++ 
 +</nodisp> 
 + 
 +b) Schreibe ein Programm, das Zahlen 1 bis 100 addiert und am Ende die Summe ausgibt.
  
 <nodisp 1> <nodisp 1>
Zeile 271: Zeile 286:
  
 <box 100%> <box 100%>
-**Aufgabe 9:** +**Aufgabe 9:** Schreibe ein Programm, welches das Maximum zweier Zahlen bestimmt: Der Benutzer soll hintereinander aufgefordert werden, zwei Zahlen einzugebenVon diesen wird die grössere bestimmt und ausgegeben.\\ \\ 
-  * Öffne in //Select// das Beispiel //max//+Wenn man dieses Programm z.Bin Python schreibt, implementiert man dazu eine Verzweigung (if-el(se)if)In Assembler wird dies wie eine Schleife (z.Bin letzter Aufgabemit Sprüngen implementiert
-  * Dem Kommentar kannst du entnehmen, was das Programm macht + 
-  * Probiere es mit drei Zahlenpaaren ausWelche Ausgabe erwartest du? +<nodisp 1> 
-    * Erste Zahl > zweite Zahl +++++Lösung| 
-    * Erste Zahl < zweite Zahl +<code> 
-    * Erste Zahl = zweite Zahl +        INP R0,2 
-  * Wie wird die Verzweigung (if...else...) implementiert?+        INP R1,2 
 +        CMP R0,R1 
 +        BLE LOWER 
 +        OUT R0 
 +        BRA DONE 
 +LOWER   OUT R1 
 +DONE    HLT 
 +</code> 
 +++++ 
 +</nodisp>
 </box> </box>
  
Zeile 377: Zeile 401:
 Iterativ: Iterativ:
         INP R0,2         INP R0,2
- MOV R1,#1 //Zähler +        PSH R0 
-        MOV R2,#1 //Produkt+        JMS FCLT 
 +        POP R0 
 +        OUT R0,4 
 +        HLT 
 +FCLT:   POP R0 
 +        MOV R1,#1    //Zähler 
 +        MOV R2,#1    //Produkt
 LOOP:   MUL R2,R1 LOOP:   MUL R2,R1
         ADD R1,#1         ADD R1,#1
         CMP R1,R0         CMP R1,R0
         BLE LOOP         BLE LOOP
-        OUT R2,4 +        PSH R2 
-        HLT+        RET 
  
  
  • ef_informatik/assembler.1725955721.txt.gz
  • Zuletzt geändert: 2024-09-10 08:08
  • von sps