INSTRUKSI LOGIKA DASAR Instruksi logika dasar meliputi AND

  • Slides: 26
Download presentation

INSTRUKSI LOGIKA DASAR Instruksi logika dasar meliputi AND, OR, XOR (Exclusive-OR), dan NOT. Instruksi

INSTRUKSI LOGIKA DASAR Instruksi logika dasar meliputi AND, OR, XOR (Exclusive-OR), dan NOT. Instruksi logika lainnya adalah TEST, yang akan dijelaskan pada subbab berikutnya karena instruksi operand TEST merupakan bentuk spesial dari instruksi AND. Juga akan dijelaskan, instruksi NEG, yang hampir serupa dengan instruksi NOT Semua instruksi logika berpengaruh pada bit flag. operasi logika selalu menghapus flag carry dan overflow, pada saat flag yang lainnya berubah untuk menggambarkan kondisi hasil.

AND Operasi AND membentuk perkalian logika, seperti dijelaskan pada tabel kebenaran pada Gambar 5

AND Operasi AND membentuk perkalian logika, seperti dijelaskan pada tabel kebenaran pada Gambar 5 -3. Di sini 2 bit, A dan B, di-AND-kan hasilnya X. Seperti diindikasikan oleh tabel kebenaran, nilai X akan 1 kalau nilai A dan B = 1. Untuk kombinasi input A dan B yang lain, nilai X akan 0.

OR Operasi OR membentuk logika penambahan dan kadang disebut dengan fungsi Inclusive-OR. Fungsi OR

OR Operasi OR membentuk logika penambahan dan kadang disebut dengan fungsi Inclusive-OR. Fungsi OR menghasilkan 1 jika salah satu input lainnya 1. Logika 0 tampil jika semua inputnya 0.

Exclusive-OR (XOR) Instruksi exclusive-OR berbeda dari OR. Perbedaannya adalah kondisi 1, 1 pada fungsi

Exclusive-OR (XOR) Instruksi exclusive-OR berbeda dari OR. Perbedaannya adalah kondisi 1, 1 pada fungsi o. R menghasilkan 1; kondisi 1, 1 pada exclusive-o. R menghasilkan 0.

lnstruksi Test dan Test Bit Instruksi TEST hampir sama dengan operasi AND. Bedanya instruksi

lnstruksi Test dan Test Bit Instruksi TEST hampir sama dengan operasi AND. Bedanya instruksi AND mengubah operand tujuan, sedang instruksi TEST tidak. Instruksi TEST hanya berpengaruh pada kondisi register flag, yang menandakan hasil pengetesan. Instruksi TEST menggunakan model pengalamatan yang sama dengan instruksi AND.

 Instruksi TEST memiliki fungsi yang sama dengan instruksi CMP. Perbedaannya adalah bahwa instruksi

Instruksi TEST memiliki fungsi yang sama dengan instruksi CMP. Perbedaannya adalah bahwa instruksi TEST biasanya mengetes bit tunggal (atau bit ganda), sedangkan instruksi CMP mengetes seluruh data byte atau word. Flag zero (Z) berlogika 1 (menandakan hasilnya zero) jika bit yang dites bernilai zero, dan Z = O (menandakan hasil tidak zero) jika bit yang dites tidak zero. Biasanya instruksi TEST diikuti oleh instruksi JZ (iump Jika zero) atau JNZ jump jika tidak zero).

Test bit Mikroprosesor 80386 sampai Pentium II berisi instruksi tes tambahan untuk mengetes posisi

Test bit Mikroprosesor 80386 sampai Pentium II berisi instruksi tes tambahan untuk mengetes posisi bit singel. Tabel 5 -18 menunjukkan 4 instruksi tes bit yang berbeda, yang tersedia pada prosesor tersebut

NOT dan NEG Invers logika atau komplemen 1 (NOT) dan inversi tanda aritmatika atau

NOT dan NEG Invers logika atau komplemen 1 (NOT) dan inversi tanda aritmatika atau komplemen 2 (NEG) Instruksi NOT menginverskan seluruh bit dalam byte, word atau doubleword. Instruksi NEG mengkomplemenduakan suatu bilangan, yang berarti bahwa tanda aritmetika bilangan bisa berubah dari positif ke negatif atau sebaliknya. Instruksi NOT dianggap sebagai instruksi logika, sedang NEG dianggap sebagai operasi aritmetika

INSTRUKSI SHIFT DAN ROTATE Instruksi shift dan rotate memanipulasi bilangan pada tingkat-tingkat biner, seperti

INSTRUKSI SHIFT DAN ROTATE Instruksi shift dan rotate memanipulasi bilangan pada tingkat-tingkat biner, seperti yang dilakukan dengan menggunakan instruksi AND, OR, Exclusive-OR, dan NOT. Instruksi shift dan rotate banyak ditemukan pada software aplikasi tingkat rendah untukmengontrol peralatan I/O. Mikroprosesor memiliki set instruksi lengkap untuk shift dan rotate yang digunakan untuk pergeseran dan pemutaran data memori atau register.

Penggeseran (Shift) Instruksi shift memposisikan atau memindahkan bilangan ke-kanan atau kiri dari register atau

Penggeseran (Shift) Instruksi shift memposisikan atau memindahkan bilangan ke-kanan atau kiri dari register atau lokasi memori. Instruksi ini juga melakukan instruksi aritmetika sederhana seperti perkalian dengan pangkat dari 2+n (geser ke kiri) dan pembagian dengan pangkat 2 -n (geser ke kanan). Set instruksi yang dimiliki mikroprosesor berisi 4 instruksi penggeseran yang berbeda; 2 instruksi merupakan penggeseran logika dan 2 instruksi penggeseran aritmetika.

Shift Presisi Ganda (hanya untuk 80386 -Pentium II). Prosesor 80386 dan versi di atasnya

Shift Presisi Ganda (hanya untuk 80386 -Pentium II). Prosesor 80386 dan versi di atasnya berisi instruksi 2 penggeseran presisi ganda SHLD (geser ke kiri) dan SHRD (geser ke kanan). Tiap instruksi berisi 3 operand, bukannya 2, seperti ditemukan dengan instruksi penggeseran yang lain. Kedua instruksi tersebut bekerja pada format register 16 - atau 32 -bit atau dengan satu 16 - atau 32 -bit lokasi memori dan sebuah register.

Rotate (Pemutaran) Instruksi rotate memutar posisi data biner dengan memutar informasi dalam register atau

Rotate (Pemutaran) Instruksi rotate memutar posisi data biner dengan memutar informasi dalam register atau lokasi memori baik apakah dari satu ujung ke lainnya atau melalui flag carrynya.

lnstruksi Scan bit Meskipun instruksi scan bit tidak menggeser atau merotasi bilangan, program men-scan

lnstruksi Scan bit Meskipun instruksi scan bit tidak menggeser atau merotasi bilangan, program men-scan bilangan untuk mencari bit 1. Instruksi bit scan BSF (bit scan forward) dan BSR (bit scan reverse) dapat ditemukan dalam prosesor 80386 sampai Pentium II. Kedua bentuk scan tersebut melakukan pencarian bilangan sampai menemukan bit 1 yang pertama. Instruksi BSF melakukan scanning bilangan dari bit paling kiri ke bit paling kanan, dan instruksi BSR melakukan scanning bilangan dari bit paling kanan ke bit paling kiri. Jika ditemukan bit l-selama proses scanning, bit flag zero berubah ke 1 dan posisi bit 1 yang ditemukan dipindahkan ke operand tujuan. Jika tidak ada bit 1 yang ditemukan (misalnya bilangan tersebut bernilai 0 semuanya), bit flag zero diclearkan ke 0. Ini artinya hasilnya tidak nol jika tidak ada bit 1 yang ditemukan.

PERBANDINGAN STRING (STRING COMPARISONS) instruksi string sangatlah berguna karena memungkinkan setiap programer untuk memanipulasi

PERBANDINGAN STRING (STRING COMPARISONS) instruksi string sangatlah berguna karena memungkinkan setiap programer untuk memanipulasi sejumlah besar blok data secara gampang. bahas tentang instruksi string tambahan, yang memungkinkan bagian memori untuk dites terhadap suatu konstanta atau terhadap satu bagian dari memori. Untuk itu digunakan instruksi SCAS (string scan) atau CMPS (compare string).

SCAS Instruksi scan string (SCAS) membandingkan isi register AL dengan satu byte blok memori,

SCAS Instruksi scan string (SCAS) membandingkan isi register AL dengan satu byte blok memori, register AX dengan satu word blok memori, atau EAX (80386 -Pentium. Pro) dengan satu doubleword blok memori. Instruksi SCAS mengurangi AL, AX dan EAX dengan memori tanpa mempengaruhi isi register maupun memori. Opcode yang digunakan untuk perbandingan byte adalah SCASB; untuk perbandingan word opcodenya SCASW dan untuk doubleword opcodenya SCASD. Dalam semua kasus, isi ekstra segmen lokasi memori yang dialamatkan oleh DI dibandingkan dengan AL, AX dan EAX. Untuk mengingatkan bahwa segmen default (ES) tidak dapat diubah dengan penumpukan prefiks segmen.

CMPS Instruksi perbandingan string (CMPS) selalu membandingkan dua bagian data memori dalam byte (CMPSB),

CMPS Instruksi perbandingan string (CMPS) selalu membandingkan dua bagian data memori dalam byte (CMPSB), word (CMPSW), atau doubleword (CMPSD). Catat bahwa perbandingan ddubleword hanya dilakukan pada prosesor 80386 sampai Pentium pro. Isi data segmen yang dialamatkan oleh SI dibandingkan dengan isi lokasi memori segmen ekstra yang dialamatkan oleh DI. Instruksi CMPS biasanya menggunakan prefiks perulangan REPE (repeat while equal) atau REPNE (repeat while not equal). Alternatif perulangan lainnya adalah REPZ (repeat while zero) dan REPNZ (repeat while not zero), tapi biasanya dalam pemrograman digunakan instruksi REPE dan REPNE.

Tugas Bab 5 Latihan No: 4, 5, 11, 29, 35, 40, 51

Tugas Bab 5 Latihan No: 4, 5, 11, 29, 35, 40, 51