Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:techinf:assembler:logik:start [20.09.2021 18:59] – [Die AND-Instruktion] sbel | faecher:informatik:oberstufe:techinf:assembler:logik:start [20.09.2021 19:41] (aktuell) – sbel | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Logik, Sprünge und Unterprogramme | + | ====== Logik, Sprünge und Sprungmarken |
Zeile 19: | Zeile 19: | ||
Die AND-Anweisung vergleicht zwei Operanden indem sie eine bitweise AND-Operation durchführt. Die bitweise UND-Verknüpfung ergibt 1, wenn die übereinstimmenden Bits beider Operanden 1 sind, andernfalls ergibt sie 0. | Die AND-Anweisung vergleicht zwei Operanden indem sie eine bitweise AND-Operation durchführt. Die bitweise UND-Verknüpfung ergibt 1, wenn die übereinstimmenden Bits beider Operanden 1 sind, andernfalls ergibt sie 0. | ||
+ | |||
+ | Das Ergebnis der Operation wird im ersten Operand gespeichert. | ||
Beispiel: | Beispiel: | ||
Zeile 25: | Zeile 27: | ||
| | ||
| | ||
- | ---------------------------- | + | ---------------------------------- |
AND -> Operand1: | AND -> Operand1: | ||
</ | </ | ||
+ | |||
+ | Die AND-Verknüpfung kann verwendet werden, um ein oder mehrere Bits zu löschen. Beispiel: Das BL-Register enthält 0011 1010. Wenn du die höherwertigen Bits auf Null setzen willst, verknüpfe BL mit 0FH: | ||
+ | |||
+ | <code asm> | ||
+ | mov BL, 00111010B; Schreibe 00111010 ins Register BL | ||
+ | and BL, 0FH ; Jetzt steht in BL das Bitmuster 00001010 | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Analysiere den folgenden Code. Welchen Inhalt hat das Register BL nach der AND Operation? Welche Ausgabe erzeugt das Programm? | ||
+ | |||
+ | <code asm> | ||
+ | | ||
+ | tabelle TIMES 10 DW 97 | ||
+ | |||
+ | section .text | ||
+ | | ||
+ | _start: | ||
+ | |||
+ | |||
+ | MOV BL, 01111010B ; | ||
+ | AND BL, 0F0H ; | ||
+ | |||
+ | MOV [tabelle], BL ; Was passiert hier? | ||
+ | | ||
+ | ; | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | An folgendem Beispiel kann man sich einige neue Möglichkeiten erschließen - das folgende Programm testet eine Zahl, ob sie gerade oder ungerade ist. | ||
+ | |||
+ | <code asm> | ||
+ | section .data | ||
+ | even_msg | ||
+ | len1 equ $ - even_msg | ||
+ | |||
+ | odd_msg db ' | ||
+ | len2 equ $ - odd_msg | ||
+ | |||
+ | section .text | ||
+ | | ||
+ | |||
+ | _start: | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | evnn: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | exitprog: | ||
+ | |||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * Teste das Programm und überprüfe, | ||
+ | * Erweitere das Programm um eine Benutzereingabe, | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Bearbeite die Seite https:// | ||
+ | |||
+ | Informationen zu Bedingungen und Sprungbefehlen findest du auf dieser Seite: | ||
+ | |||
+ | https:// | ||
- | An folgendem Beispiel kann man sich einige neue Möglöichkeiten erschließen: |