300 likes | 603 Views
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.
E N D
INSTRUKSI LOGIKA DASAR • Instruksilogikadasarmeliputi AND, OR, XOR (Exclusive-OR), dan NOT. • Instruksilogikalainnyaadalah TEST, yang akandijelaskanpadasubbabberikutnyakarenainstruksi operand TEST merupakanbentukspesialdariinstruksi AND. • Jugaakandijelaskan, instruksi NEG, yang hampirserupadenganinstruksi NOT • Semuainstruksilogikaberpengaruhpada bit flag. operasilogikaselalumenghapus flag carry dan overflow, padasaat flag yang lainnyaberubahuntukmenggambarkankondisihasil.
AND • Operasi AND membentukperkalianlogika, sepertidijelaskanpadatabelkebenaranpadaGambar 5-3. • Di sini 2 bit, A dan B, di-AND-kanhasilnya X. Sepertidiindikasikanolehtabelkebenaran, nilai X akan 1 kalaunilai A dan B = 1. • Untukkombinasi input A dan B yang lain, nilai X akan 0.
OR • Operasi OR membentuklogikapenambahandankadangdisebutdenganfungsi Inclusive-OR. • Fungsi OR menghasilkan 1 jikasalahsatu input lainnya 1. • Logika 0 tampiljikasemuainputnya 0.
Exclusive-OR (XOR) • Instruksi exclusive-OR berbedadari OR. • Perbedaannyaadalahkondisi 1,1 padafungsioRmenghasilkan 1; kondisi 1,1 pada exclusive-oRmenghasilkan 0.
lnstruksi Test dan Test Bit • Instruksi TEST hampirsamadenganoperasi AND. • Bedanyainstruksi AND mengubah operand tujuan, sedanginstruksi TEST tidak. • Instruksi TEST hanyaberpengaruhpadakondisi register flag, yang menandakanhasilpengetesan. • Instruksi TEST menggunakan model pengalamatan yang samadenganinstruksi AND.
Instruksi TEST memilikifungsi yang samadenganinstruksi CMP. Perbedaannyaadalahbahwainstruksi TEST biasanyamengetes bit tunggal (atau bit ganda), sedangkan • instruksi CMP mengetesseluruh data byte atau word. • Flag zero (Z) berlogika 1 (menandakanhasilnya zero) jika bit yang ditesbernilai zero, dan Z = O (menandakanhasiltidak zero) jika bit yang ditestidak zero. • Biasanyainstruksi TEST diikutiolehinstruksi JZ (iump • Jika zero) atau JNZ jump jikatidak zero).
Test bit • Mikroprosesor 80386 sampai Pentium II berisiinstruksitestambahanuntukmengetesposisi bit singel. Tabel 5-18 menunjukkan 4 instruksites bit yang berbeda, yang tersediapadaprosesortersebut
NOT dan NEG • Inverslogikaataukomplemen 1 (NOT) daninversitandaaritmatikaataukomplemen 2 (NEG) • Instruksi NOT menginverskanseluruh bit dalam byte, word ataudoubleword. • Instruksi NEG mengkomplemenduakansuatubilangan, yang berartibahwatandaaritmetikabilanganbisaberubahdaripositifkenegatifatausebaliknya. • Instruksi NOT dianggapsebagaiinstruksilogika, sedang NEG dianggapsebagaioperasiaritmetika
INSTRUKSI SHIFT DAN ROTATE • Instruksi shift dan rotate memanipulasibilanganpadatingkat-tingkat bit biner, seperti yang dilakukandenganmenggunakaninstruksi AND, OR, Exclusive-OR, dan NOT. • Instruksi shift dan rotate banyakditemukanpada software aplikasitingkatrendahuntukmengontrolperalatan I/O. • Mikroprosesormemiliki set instruksilengkapuntuk shift dan rotate yang digunakanuntukpergeserandanpemutaran data memoriatau register.
Penggeseran (Shift) • Instruksi shift memposisikanataumemindahkanbilanganke-kananataukiridari register ataulokasimemori. • Instruksiinijugamelakukaninstruksiaritmetikasederhanasepertiperkaliandenganpangkatdari 2+n (geserkekiri) danpembagiandenganpangkat 2-n (geserkekanan). • Set instruksi yang dimilikimikroprosesorberisi 4 instruksipenggeseran yang berbeda; 2 instruksimerupakanpenggeseranlogikadan 2 instruksipenggeseranaritmetika.
Shift PresisiGanda (hanyauntuk 80386-Pentium II). • Prosesor 80386 danversidiatasnyaberisiinstruksi 2 penggeseranpresisiganda SHLD (geserkekiri) dan SHRD (geserkekanan). Tiapinstruksiberisi 3 operand, bukannya 2, sepertiditemukandenganinstruksipenggeseran yang lain. • Keduainstruksitersebutbekerjapada format register 16- atau 32-bit ataudengansatu 16- atau 32-bit lokasimemoridansebuah register.
Rotate (Pemutaran) • Instruksi rotate memutarposisi data binerdenganmemutarinformasidalam register ataulokasimemoribaikapakahdarisatuujungkelainnyaataumelalui flag carrynya.
lnstruksi Scan bit • Meskipuninstruksi scan bit tidakmenggeserataumerotasibilangan, program men-scan bilanganuntukmencari bit 1. • Instruksi bit scan BSF (bit scan forward) dan BSR (bit scan reverse) dapatditemukandalamprosesor 80386 sampai Pentium II. • Keduabentuk scan tersebutmelakukanpencarianbilangansampaimenemukan bit 1 yang pertama. • Instruksi BSF melakukan scanning bilangandari bit paling kirike bit paling kanan, daninstruksi BSR melakukan scanning bilangandari bit paling kananke bit paling kiri. • Jikaditemukan bit l-selamaproses scanning, bit flag zero berubahke 1 danposisi bit 1 yang ditemukandipindahkanke operand tujuan. • Jikatidakada bit 1 yang ditemukan (misalnyabilangantersebutbernilai 0 semuanya), bit flag zero diclearkanke 0. Iniartinyahasilnyatidaknoljikatidakada bit 1 yang ditemukan.
PERBANDINGAN STRING (STRING COMPARISONS) • instruksi string sangatlahbergunakarenamemungkinkansetiapprogrameruntukmemanipulasisejumlahbesarblok data secaragampang. • bahastentanginstruksi string tambahan, yang memungkinkanbagianmemoriuntukditesterhadapsuatukonstantaatauterhadapsatubagiandarimemori. Untukitudigunakaninstruksi SCAS (string scan) atau CMPS (compare string).
SCAS • Instruksi scan string (SCAS) membandingkanisi register AL dengansatu byte blokmemori, register AX dengansatu word blokmemori, atau EAX (80386-PentiumPro) dengansatudoublewordblokmemori. • Instruksi SCAS mengurangi AL, AX dan EAX denganmemoritanpamempengaruhiisi register maupunmemori. • Opcode yang digunakanuntukperbandingan byte adalah SCASB; untukperbandingan word opcodenya SCASW danuntukdoublewordopcodenya SCASD. • Dalamsemuakasus, isiekstrasegmenlokasimemori yang dialamatkanoleh DI dibandingkandengan AL, AX dan EAX. • Untukmengingatkanbahwasegmen default (ES) tidakdapatdiubahdenganpenumpukanprefikssegmen.
CMPS • Instruksiperbandingan string (CMPS) selalumembandingkanduabagian data memoridalam byte (CMPSB), word (CMPSW), ataudoubleword (CMPSD). • Catatbahwaperbandinganddublewordhanyadilakukanpadaprosesor 80386 sampai Pentium pro. • Isi data segmen yang dialamatkanoleh SI dibandingkandenganisilokasimemorisegmenekstra yang dialamatkanoleh DI. Instruksi CMPS biasanyamenggunakanprefiksperulangan REPE (repeat while equal) atau REPNE (repeat while not equal). • Alternatifperulanganlainnyaadalah REPZ (repeat while zero) dan REPNZ (repeat while not zero), tapibiasanyadalampemrogramandigunakaninstruksi REPE dan REPNE.
TugasBab 5 • Latihan No: 4, 5, 11, 29, 35, 40, 51