faecher:informatik:oberstufe:techinf:assembler:logik:start

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
faecher:informatik:oberstufe:techinf:assembler:logik:start [20.09.2021 19:16] – [Die AND-Instruktion] sbelfaecher: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 54: Zeile 54:
    
    MOV BL, 01111010B ;    MOV BL, 01111010B ;
-   AND BL, 0F0H ;+   AND BL, 0F0H      ;
  
-   MOV [tabelle], BL+   MOV [tabelle], BL  ; Was passiert hier?
                  
    ;tabelle ausgeben    ;tabelle ausgeben
Zeile 69: Zeile 69:
        
 </code> </code>
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (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  db  'Gerade Zahl!' 
 +len1  equ  $ - even_msg 
 +   
 +odd_msg db  'Ungerade Zahl!'   
 +len2  equ  $ - odd_msg
 +
 +section .text
 +   global _start            
 +
 +_start:                     ;tell linker entry point
 +   mov   ax, 8h           ;getting 8 in the ax 
 +   and   ax, 1              ;and ax with 1
 +   jz    evnn
 +   
 +   
 +   mov   eax, 4             ;system call number (sys_write)
 +   mov   ebx, 1             ;file descriptor (stdout)
 +   mov   ecx, odd_msg       ;message to write
 +   mov   edx, len2          ;length of message
 +   int   0x80               ;call kernel
 +   jmp   exitprog
 +
 +evnn:   
 +  
 +   mov   ah,  09h
 +   mov   eax, 4             ;system call number (sys_write)
 +   mov   ebx, 1             ;file descriptor (stdout)
 +   mov   ecx, even_msg      ;message to write
 +   mov   edx, len1          ;length of message
 +   int   0x80               ;call kernel
 +
 +exitprog:
 +
 +   mov   eax,             ;system call number (sys_exit)
 +   int   0x80               ;call kernel
 +</code>
 +
 +  * Teste das Programm und überprüfe, ob es korrekte Ausgaben erzeugt.
 +  * Erweitere das Programm um eine Benutzereingabe, die ein Zeichen als Eingabe akzeptiert. Wie kannst du Zahlen testen die größer sind als 10?
 +
 +----
 +{{:aufgabe.png?nolink  |}}
 +=== (A3) ===
 +
 +Bearbeite die Seite https://www.tutorialspoint.com/assembly_programming/assembly_logical_instructions.htm, um Informationen über die weiteren logischen Operatoren zu erhalten.
 +
 +Informationen zu Bedingungen und Sprungbefehlen findest du auf dieser Seite:
 +
 +https://www.tutorialspoint.com/assembly_programming/assembly_conditions.htm
  
  
-An folgendem Beispiel kann man sich einige neue Möglöichkeiten erschließen: 
  • faecher/informatik/oberstufe/techinf/assembler/logik/start.1632165393.txt.gz
  • Zuletzt geändert: 20.09.2021 19:16
  • von sbel