Flags
Flags Register – menentukan keadaan prosesor saat ini Flags Register – menentukan keadaan prosesor saat ini. Nilainya berubah secara otomatis oleh CPU setelah operasi tertentu, untuk menentukan jenis hasil, dan untuk menentukan kondisi untuk peralihan kontrol (mis. conditional jump).
Hanya menggunakan 9 dari 16 bit EMU8086 dan DEBUG hanya menampilkan 8 bit Yang tidak ditampilkan TRACE
Layout Layout 12 bit pertama (11 - 0) untuk register FLAGS:
Layout (2)
CF, PF, AF Carry Flag (CF) - diset 1 ketika terjadi unsigned overflow. Mis. penjumlahan byte 255 + 1 (hasilnya di luar 0...255). Jika tidak, diset 0. Parity Flag (PF) - diset 1 ketika bit 1 pada byte terakhir berjumlah genap, dan 0 jika ganjil. Auxiliary Flag (AF) - diset ke 1 jika terjadi unsigned overflow pada low nibble (4 bit).
ZF, SF, TF Zero Flag (ZF) - diset ke 1 jika hasil nol. Jika hasil bukan nol, diset ke 0. Sign Flag (SF) - diset ke 1 jika hasil negatif. Jika hasil positif diset ke 0. Flag ini mengambil nilai MSB. Trap Flag (TF) – digunakan untuk on-chip debugging. Tidak ditampilkan di EMU8086 dan DEBUG.
IF, DF, OF Interrupt enable Flag (IF) – jika flag ini diset ke 1, CPU bereaksi terhadap interrupt dari external device. Direction Flag (DF) - flag ini digunakan beberapa instruksi untuk mengolah rangkaian data. Jika diset 0, SI & DI di-auto-increment; Jika tidak, auto-decrement. Overflow Flag (OF) - diset ke 1 jika terjadi signed overflow. Mis. jika dijumlahkan byte 100 + 50 (hasil di luar rentang -128...127).
Cara Mengubah Register Flag Berubah sebagai pengaruh hasil instruksi assembly
AF MOV AX, 0002Fh MOV BX, 01001h ADD AX, BX Aux carry! AF is set
CF MOV AX, 0F000h MOV BX, 01000h ADD AX, BX carry! CF is set
ZF MOV AX, 0ABCDh MOV BX, 0ABCDh SUB AX, BX Zero result! ZF is set
Latihan 1 Buat suatu program assembly yang menghitung 1 + 2 + 3 + … + n. Nilai n tersimpan di BX. Hasil perhitungan disimpan di AX.
Latihan 2 Buat suatu program assembly yang menghitung: 2 + 4 + 6 + … + n (jika n genap), atau 2 + 4 + 6 + … + n – 1 (jika n ganjil) Nilai n tersimpan di BX. Hasil perhitungan disimpan di AX.
Mencetak Karakter Diketahui pencetakan sebuah karakter dapat dilakukan menggunakan Interrupt 21h service 02h dengan kode karakter disimpan di DL. Service tersebut akan menyimpan kode karakter yang dicetak ke AL. Contoh: MOV CX, 4 MOV DL, 41 MOV AH, 02 ULANG: INT 21 INC DL LOOP ULANG Setelah dijalankan: AL = 43 Output: ABC
Latihan 3 Buat suatu program assembly menggunakan LOOP untuk mencetak: AaBbCcDdEe
Tugas Baca Bagaimana cara: Interrupt 16h Service 0 Interrupt 21h Service 0Ah Bagaimana cara: Menerima input bilangan bulat dan menyimpannya ke register Mencetak nilai suatu register sebagai bilangan bulat basis 10