Instruksi Logika Dasar Instruksi logika dasar meliputi AND, OR, Eksklusif-OR, dan NOT. Instruksi lainnya, yaitu TEST juga akan dijelaskan pada bagian ini karena operasi instruksi TEST merupakan bentuk khusus dari instruksi AND Selain itu, dipaparkan instruksi NEG yang mirip dengan NOT. Operasi logika menyediakan kontrol bit biner pada perangkat lunak tingkat rendah (low-level software). Instruksi logika memungkinkan bit untuk diset, clear, atau dikomplemen. Perangkat lunak tingkat rendah terdapat pada bahasa mesin atau bahasa assembly, dan sering digunakan untuk mengontrol peranti 1/0 dalam sebuah sistem. Semua instruksi logika mempengaruhi bit flag. Operasi logika selalu membersihkan flag carry dan overflow, sementara flag yang lain berubah untuk mencerminkan kondisi hasil. Ketika data biner dimanipulasi dalam register atau lokasi memori, posisi bit paling kanan selalu diberi nomor 0. Nomor posisi bit meningkat dari bit 0 di kiri, hingga bit 7 untuk satu byte data, dan sampai bit 15 untuk satu word data. Data doubleword (32-bit) menggunakan posisi bit 31 sebagai bit paling kiri. NEXT
AND Operasi AND membersihkan perkalian logika, seperti yang diilustrasikan dengan tabel kebenaran pada Gambar 5-3. Di sini, dua bit A dan B di-AND untuk memperoleh hasil X. Seperti yang ditandakan oleh tabel kebenaran, X berlogika 1 hanya jika A dan B berlogika 1. Bagi semua kombinasi rnasukan lain untuk A dan B, X berlogika 0. Penting untuk diingat bahwa 0 AND ada pun selalu 0, dan 1 AND 1 selalu 1. Contoh 5-26 0000 BB 3135 MOV BX,3135H ;load ASCII 0003 81 E3 OFOF AND BX,OFOFH ;mask BX
Bahasa Assembly Operasi Tabel 5-14 Instruksi AND Bahasa Assembly Operasi AND AL,BL AL = AL AND BL AND CX,DX CX = CX AND DX AND ECX, EDI ECX = ECX AND EDI AND CL, 33 H CL = CL AND 33H AND DI,4FFFH DI = DI AND 4F FFH AND ESI,34H ESI = ESI AND 34H AND AX,[DI] AX di-AND dengan isi lokasi memori segmen data berukuran word yang dialamati oleh DI AND AX,[DI] Isi byte dari lokasi memori segmen data yang dialamati oleh penjumlahan ARRAY plus SI di-AND-kan dengan AL; hasil dipindahkan dalam memori AND [EAX],CL CL di-AND dengan isi lokasi memori segmen data berukuran byte yang dialamati oleh EAX; hasil dipindahkan dalam memori
OR Operasi OR melakukan penjumlahan logika dan sering disebut fungsi inklusif-OR. Fungsi OR menghasilkan keluaran berlogika I jika salah satu masuknya adalah 1. Keluaran akan memperlihatkan 0 hanya ketika semua masukannya adalah 0. Tabel kebenaran untuk fungsi OR terilliat pada Gambar 5-5. Di sini, masukan A dan B di-OR bersama untuk menghasilkan keluaran X. Penting untuk diingat bahwa I yang di-OR dengan apa pun akan menghasilkan I.
Gambar 5-5 (a) Tabel kebenaran Operasi OR dan (b) simbol gate OR
Ekskfusif-OR Instruksi Eksklusif-OR (XOR) berbeda dengan Inklusif-OR (OR). Perbedaannya adalah jika kondisi 1,1 pada fungsi OR menghasilkan 1 maka kondisi 1,1 pada operasi EksklusifOR menghasilkan 0. Operasi Eksklusif-OR mengabaikan kondisi ini, sedangkan InklusifOR memasukkannya. Gambar 5-7 (a) Tabel kebenaran Untuk operasi Eksklusif-OR dan (b) simbol gate Eksklusif-OR
Tabel 5-16 Instruksi Eksklusif-OR Bahasa Assembly Operasi XOR CH,DL CH = CH XOR CL XOR SI,BX S1 = S1 XOR BX XOR EBX,EDI EBX = EBX XOR EDI XOR AH,OEEHX AH = AH XOR OEEH OR DI,0DDH DI = DI XOR ODDH XOR ESI,100 ESI = ESI XOR 100 XOR DX,[SI] DX di-Eksklusif-OR dengan isi lokasi memori segmen data berukuran word yang dialamati oleh SI XOR DATES[DI + 2],AL ALdi-Eksklusil-OR dengan isi lokasi memori segmen data berukuran byte yang dialamati oleh penjumlahan DATES, DI , dan 2
Instruksi Test dan Bit Test Instruksi TEST melakukan operasi AND. Perbedaannya adalah bahwa instruksi AND mengubah operand tujuan, sedangkan instruksi TEST tidak. Instruksi TEST hanya memengaruhi kondisi register flag, yang menandakan hasil dari tes. Instruksi TEST menggunakan inode pengalamatan yang sama dengan instruksi AND. Tabel 5-17 berisi deftar beberapa instruksi TEST dan operasinya. Tabel 5-17 Instruksi TEST Bahasa Assembly Operasi TEST DL,DH DL di-AND dengan DH TEST CX,BX CX di-AND dengan BX TEST EDX,ECX EDX di-AND dengan ECX TEST AH,4 AH di-AND dengan 4 TEST EAX,256 EAX di-AND dengan 256
BTC Mengetes dan mengomplemen suatu bit dalam operand tujuan yang Tabel 5-18 Instruksi bit tes Bahasa AssemblyOperasi BT Mengetes suatu bit dalam operand tujuan yang ditentukan oleh operand sumber BTC Mengetes dan mengomplemen suatu bit dalam operand tujuan yang ditentukan oleh operand sumber BTR Mengetes dan mereset suatu bit dalam operand tujuan yang ditentukan oleh operand sumber BTS Mengetes dan mengeset sualu bit dalam operand tujuan yang ditentukan oleh
NOT dan NEG Invers logika, atau komplemen satu (NOT); dan invers tanda aritinatika, atau komplemen dua (NEG) merupakan dua fungsi logika terakhir yang akan dijelaskan (kecuali shift dan rotate pada bagian selanjutnya). NOT dan NEG adalah dua dari sedikit instruksi yang hanya mempunyai satu operand. Tabel 5-19 berisi daftar beberapa variasi instruksi NOT dan NEG. Seperti kebanyakan instruksi lain, NOT dan NEG dapat menggunakan semua mode pengamatan, kecuali pengalamatan register segmen.
Tabel 5-19 Instruksi NOT dan NEG Bahasa Assembly Operasi NOT CH CH dikomplemen satu NEG CH CH dikomplemen dua NEG AX AX dikomplemen dua NOT EBX EBX dikomplemen satu NEG ECX ECX dikomplemen dua NOT TEMP Isi lokasi memori segmen data TEMP dikomplemen satu NOT BYTE PTR[BX] Isi lokasi memori segmen data yang dialamati oleh BX dikomplemen satu
Pergeseran Instruksi pergeseran (shift) meletakkan atau memindahkan angka ke sebelah kiri ataU kanan dalam suatu register atau lokasi memori. Instruksi ini juga melaksanakan aritmatika sederhana seperti perkalian dengan pangkat 2+n (geser kiri – left shift) dan pembagiall dengan pangkat 2+n (geser kanan – right shift). Set instruksi mikroprosesor berisi empat instruksi pergeseran yang berbeda: dua adalah pergeseran logika dan dua yang lain adalah pergeseran aritmatika. Keempat operasi pergeseran tersebut terlihat pada Gambar 5-9.
Gambar 5-9 Instruksi pergeseran yang menunjukkan operasi dan arah pergeseran Memori atau register target
Perputaran Instruksi perputaran menentukan posisi data biner dengan memutar informasi dalam suatu register atau lokasi memori, baik dari ujung ke ujung maupun melalui flag cairy. Instruksi ini sering digunakan untuk menggeser atau menempatkan posisi angka yang lebih lebar dari 16-bit pada mikroprosesor 8086-80286 atau lebih lebar dari 32-bit pada 80386 sampai Pentium 4. Empat instruksi perputaran terlihat pada Gambar 5-10.
Memori atau register target Gambar 5-10 Instruksi perputaran yang memperlihatkan aran dan operasi setiap perputaran Memori atau register target
PERBANDINGAN STRING Seperti yang diilustrasikan pada Bab 4, instruksi string merupakan sarana penting bagi programer untuk memanipulasi blok data besar dengan mudah. Manipulasi blok data dapat dilakukan dengan instruksi string MOVS, LODS, STOS, INS, dan OUTS. Pada bagian ini, akan dibahas instruksi string tambahan yang memungkinkan pengetesan bagian memori dibandingkan dengan konstanta, atau dengan bagian memori lain. Untuk mengerjakan tugas ini, gunakanlah instruksi SCAS (string scan) atau CMPS (string compare).
CONTOH 5-34 0000 BF 0011 R MOVDI,OFFSET BLOCK ; address data 0003 FC CLD ; auto-increment 0004 B9 0064 MOVCX , 100 ; load counter 0007 32 C0 XORAL , AL ; clear AL 0009 F2 / AE REPNESCASB ; search
Soal Buatlah tabel dari instruksi AND! Soal Buatlah tabel dari instruksi AND! Buatlah tabel kebenaran dari gerbang Ekslusif-OR! Gambarkan instruksi pergeseran yang menunjukkan operasi dan arah pergeseran! Apa yang dimaksud dengan perbandingan string dan buatlah tabel dari perbandingan string tersebut! NEXT
TUTUP Terima Kasih