5c. lnstruksi Aritmetika dan Logika

Download Report

Transcript 5c. lnstruksi Aritmetika dan Logika

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-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 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 oR
menghasilkan 1; kondisi 1,1 pada exclusive-oR
menghasilkan 0.
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 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 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 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 bit 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 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 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 16atau 32-bit lokasi memori dan sebuah register.
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 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 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, register AX dengan satu word
blok memori, atau EAX (80386-PentiumPro) 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), 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