Version 2.0 Aktualisiert: 30.03.04

NOP Null Operation. Ausser IP wird nichts verändert. [90] NOT Invertiert alle Bits im Operanden: 0 --> 1 ; 1 --> 0 Beispiel: mov ah,10010100b ;ah=10010100b not ah ;ah=01101011b OR Logische ODER-Verknüpfung: Der Zieloperand wird bitweise mit dem Quelloperand verknüpft. OR Ziel,Quelle. Das Ergebnis wird im Zieloperand abgelegt. Beispiel: mov ah,10010100b ;ah=10010100b mov al,10110101b ;al=10110101b or ah,al ;ah=10110101b OUT Ausgabe eines Bytes oder Words an eine Portadresse: OUT Portadresse,AX bzw. AL. Wenn die Portadresse grösser als 255 ist muss der Wert in DX stehen sonst kann der als Direktwert angegeben werden. Beispiel: mov al,´%´ out 60h,al ;Schreibt das Zeichen % in den Tastaturpuffer (Adresse 60h) !POP Der Befehl POP holt den letztgespeicherten WORD Wert vom Stack und erhäht danach den Stackpointer um den Wert 2. Beispiel: push ax ;ax sichern pop ax ;ax holen POPF Holt analog zum Befehl POP das Statusregister, d.h. die Flags vom Stack. Beispiel: pushf ;Flags sichern popf ;Flags holen !PUSH PUSH verringert den Stackpointer um 2 und Speichert ein WORD auf dem Stack. Beispiel: push es ;es sichern pop ds ;Gesicherten Wert nach ds PUSHF Speichert analog zum Befehl PUSH das Statusregister, d.h. die Flags auf dem Stack. Beispiel: pushf ;Flags sichern popf ;Flags holen REP REP wiederholt (REPeat) den nachfolgenden Stringbefehl bis CX gleich null ist. REP decrementiert selbständig. Es existieren folgende Varianten des Befehls: REPE/REPZ wiederhole bis CX = 0 und ZF = 1 ; REPNE/REPNZ wiederhole bis CX = 0 und ZF = 0 Beispiel: Siehe die einzelnen Stringbefehle !RET RET (RETurn) kehrt aus einem Unterprogramm zurück, welches durch einen CALL - Befehl aufgerufen wurde. Beispiel: . . call Write ;Das Unterprogramm Write aufrufen . . Write PROC Near ;Deklaration des Unterprogramms mov ah,09h ;Beispielcode int 21h ret ;Zurück Write ENP ;Ende der Prozedur [C3;CB;C2;CA] STC STC setzt das Carry Flag auf 1 (SeT Carry flag). Beispiel: clc ;CF = 0 stc ;CF = 1 STD Setzt das Direction Flag, dadurch verlaufen alle Stringoperationen von rechts nach links zur kleineren Adresse hin. STI Mit STI (SeT Interrupt flag) werden die Interrups die mit CLI gesperrt wurden wieder zugelassen. Siehe auch CLI. STOS STOSB überträgt den Inhalt von AL in einen durch ES:DI adressierten Speicherbereich. STOSW überträgt den Inhalt von AX. Mit REP können mehrere Daten übertragen werden. SUB SUB Ziel,Quelle subtrahiert den Inhalt des Quelloperanden vom Zieloperanden. Das Ergebnis wird im Zieloperanden abgelegt. Beispiel: mov ah,100 ; ah=100 sub ah,25 ; ah=75 mov ah,99 ; ah=99 mov al,09 ; al=9 sub ah,al ; ah=90 TEST TEST verknüpft den Zieloperanden bitweise mit dem Quelloperanden durch eine UND Verknüpfung. Das Ergebnis wird nicht abgespeichert, sondern verändert nur das Statusregister. Beispiel: Man will pr&uumL;fen, ob das Bit 6 von ah gleich eins oder null ist: test ah,01000000b je Label1 ;Springe wenn Bit 6 = 1 jne Label2 ;Springe wenn Bit 6 = 0 XCHG Tauscht den Inhalt eines Registers mit einem anderem Register oder einem Speicherplatz. Beispiel: mov ax,70h ; ax=70h mov bx,40h ; bx=40h xchg ax,bx ; eXCHanGe: Austauschen der Inhalte ==> ax = 40h bx = 70h !XOR Logische XOR-Verknüpfung: Der Zieloperand wird bitweise mit dem Quelloperand verknüpft. XOR Ziel,Quelle. Das Ergebnis wird im Zieloperand abgelegt. Beispiel: mov ah,10010100b ;ah=10010100b mov al,10110101b ;al=10110101b xor ah,al ;ah=00100001b xor ax,ax ;ax=0 (Schneller als mov ax,00)Weiter geht es mit einem Programm.