• Tidak ada hasil yang ditemukan

BAB 8 OPERASI LOGIKA

N/A
N/A
Protected

Academic year: 2017

Membagikan "BAB 8 OPERASI LOGIKA"

Copied!
6
0
0

Teks penuh

(1)

BAB 8

OPERASI LOGIKA

Ada empat operasi logika yang sering dilakukan, yaitu AND, OR, XOR dan NOT, dimana pada masing-masing operasi dilakukan untuk

pengaturan bit pada suatu data biner.

Operasi AND

Operasi AND sering digunakan untuk operasi masking bit tertentu menjadi nol, maupun untuk mendeteksi apakah suatu bit aktif atau tidak, setelah dilakukan operasi AND, maka akan diperiksa ZF=1, jika benar artinya bit tersebut tidak aktif. Adapun operasi dari AND adalah sebagai berikut:

0 and 0 = 0 0 and 1 = 0 1 and 0 = 0 1 and 1 = 1

Contoh:

MOV AL, 'a' ; AL = 01100001b

AND AL, 11011111b ; AL = 01000001b ('A') RET

Operasi AND juga dapat digunakan untuk menghitung sisa bagi dest := dest MOD 2n

and ax, 3 ;AX := AX mod 4 and ax, 0Fh ;AX := AX mod 16 and ax, 1Fh ;AX := AX mod 32 and ax, 3Fh ;AX := AX mod 64 and ax, 7Fh ;AX := AX mod 128 mov ah, 0 ;AX := AX mod 256 ; (Same as ax and 0FFh)

Operasi OR

Operasi OR sering digunakan untuk operasi masking bit tertentu menjadi satu, adapun operasi OR adalah sebagai berikut:

0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1

Example:

MOV AL, 'A' ; AL = 01000001b

OR AL, 00100000b ; AL = 01100001b ('a') RET

Perintah OR juga sering digunakan untuk memeriksa apakah suatu register berisi nilai

(2)

Contoh:

CMP AX, 0 dapat ditulis juga OR AX, AX

Operasi XOR

Operasi OR sering digunakan untuk membalikkan kondisi bit tertentu, maupun untuk

menolkan suatu register, misalnya penulisan MOV AX, 0 dapat diganti dengan XOR

AX,AX,

B80000 MOV AX,0000

31C0 XOR AX,AX ;lebih efisien

Dalam hal ini XOR AX, AX lebih pendek dari pada MOV AX,0 Adapun operasi dari XOR adalah sebagai berikut :

0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0

Contoh:

MOV AL, 00000111b

XOR AL, 00000010b ; AL = 00000101b RET

Operasi NOT

Operasi NOT digunakan untuk membuat bilangan komplemen satu yaitu membalikan

keaktifkan bit, adapun operasi NOT adalah sebagai berikut:

NOT 0 = 1 NOT 1 = 0

Contoh:

MOV AL, 00011011b NOT AL ; AL = 11100100b

Pemakaian Operasi Logika

(3)

bit 9-11 RS-232 serial port yang terdeteksi 000=0, 001=1, ... 100=4 ... 111=7 bit 12 1 = adapter game (joystick) terdeteksi oleh POST bit 13 (hanya pada PCjr) 1 = printer serial terpasang bit 14- 15 jumlah dari port printer parallel 00=0, 01=1, 10=2, 11=3 Sehingga untuk mendeteksi keberadaan drive disket kita dapat melakukan operasi AND word settting tersebut diatas dengan nilai $1, jika hasil operasi tersebut not zero (zero flag), maka berarti disk drive terpasang. Untuk mendeteksi keberadaan coprocessor dapat dilakukan dengan melakukan operasi And word setting tersebut diatas dengan nilai $2.

Operasi logika pada x86

Tata cara penulisan operasi logika pada x86 dan register flag yang terpengaruh ditunjukan pada tabel berikut ini: Format instruksi Fungsi Flags terpengaruh AND dest, src operasi logika and dari dua operand, dan mengembalikan hasil pada dest. CF, OF, PF, SF, ZF (AF tak terdefinisi) OR dest, src operasi logika or dari dua operand, dan mengembalikan hasil pada dest. CF, OF, PF, SF, ZF (AF tak terdefinisi) XOR dest, src operasi logika or dari dua operand, dan mengembalikan hasil pada dest. CF, OF, PF, SF, ZF (AF tak terdefinisi) NOT dest mengembalikan invers bit pada dest TEST dest, src melakukan operasi AND dari dua operand dan mengupdate register CF, OF, PF, SF, ZF (AF tak terdefinisi) flag, tetapi tidak mengembalikan hasil pada dest.

-a 100

AX=0040 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B46 ES=0B46 SS=0B46 CS=0B46 IP=0103 NV UP EI PL NZ NA PO NC

0B46:0103 8ED8 MOV DS,AX -t

AX=0040 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0040 ES=0B46 SS=0B46 CS=0B46 IP=0105 NV UP EI PL NZ NA PO NC 0B46:0105 A11000 MOV AX,[0010] DS:0010=C822

-t

AX=C822 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0040 ES=0B46 SS=0B46 CS=0B46 IP=0108 NV UP EI PL NZ NA PO NC 0B46:0108 250100 AND AX,0001

-t

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

(4)

Operasi tersebut diatas dapat dijelaskan bahwa pada awalnya akan diduplikasi nilai 0040 ke register AX, kemudian nilai dari register AX akan diduplikasi ke register DS, dan akan diduplikasi nilai dari lokasi memori 0040:0010 ke register AX, dan kemudian akan dilakukan operasi AND register AX dengan nilai $1. Berdasarkan hasil T (Trace) yang dilakukan terlihat bahwa hasil akhir register AX adalah 0000 dan ZR (Zero flag aktif), berarti bahwa tidak ada drive disket yang terpasang.

org 100h mov dx, offset ada jmp cetak

cetak_tidak_ada:

mov dx, offset tidak_ada cetak:

mov ah,9h int 21h mov ah,4ch int 21h

ada db 'ada coprocessor.',0dh,0ah,'$'

tidak_ada db 'tidak ada coprocessor.',0dh,0ah,'$'

Adapun program tersebut diatas dapat dijelaskan bahwa pada awalnya akan didorong nilai register DS ke stack, kemudian duplikasi nilai 40 ke register AX, kemudian diduplikasi nilai AX ke DS, kemudian diduplikasi isi memori yang ditunjuk oleh DS: [0010] dalam hal ini adalah 0040:1000 ke register AX, dan kemudian register AX di AND dengan nilai $2, dan tarik kembali nilai dari stack ke register DS, berdasarkan hasil operasi AND akan diuji nilai Zero flag, jika aktif akan dicetak ‘tidak ada coprocessor’ dan sebaliknya akan dicetak ‘ada coprocessor’. Sesuatu hal yang perlu diingat bahwa perintah TEST tidak menyimpan nilai hasil operasi, tetapi hanya mempengaruhi flag. Perintah test dapat digunakan untuk memeriksa apakah suatu register bernilai nol atau tidak, contoh: Sesuatu hal yang perlu diingat bahwa operasi TEST tidak menyimpan nilai hasil operasi, tetapi hanya mempengaruhi flag. Test dapat digunakan untuk memeriksa apakah suatu register bernilai nol atau tidak.

85C0 TEST AX,AX 3D0000 CMP AX,0000

Dalam hal ini TEST AX,AX lebih pendek dibandingkan dengan CMP AX,AX.

Latihan

(5)

1 shift sebelah kiri ditekan 2 ctrl ditekan

3 alt ditekan

4 keaktifkan ScrollLock 5 keaktifan NumLock 6 keaktifkan CapsLock 7 Keaktifan Insert

1. Buatlah program Assembly yang dapat menampilkan pesan keaktifan tombol

CapsLock (CapsLock Aktif, CapsLock tidak Aktif).

2. Buatlah program Assembly yang menon-aktifkan tombol Capslock 3. Buatlah program Assembly yang mengaktifkan tombol NumLock 4. Buatlah program Assembly yang dapat membalikkan status tombol Capslock (On

menjadi Off dan sebaliknya).

5. Modifikasi soal latihan nomor tiga bab sebelumnya agar password yang dimasukan tidak case sensitif.

LATIHAN TAMBAHAN

CGA video memori untuk text mode terdapat dilokasi memori B800:0000 s/d B800:0F9F untuk halaman pertama. Masing-masing karakter yang ditampilkan pada layar terdiri dari menggunakan satu WORD, yaitu low byte adalah nilai ASCII dari karakter, dan high byte

adalah atribut (background dan foreground). Misalnya pada posisi baris 0, kolom 0 ditampilkan huruf A dengan warna latarbelakang black dan warna tulisan light gray, maka isi memori B800:0000 adalah $41 dan isi memori B800:0001 adalah $07.

1. Buatlah program yang dapat mengubah atribut layar menjadi latarbelakang

merah dan warna tulisan light gray tanpa mengubah tulisan yang ada. 2. Buatlah program yang dapat mengubah karakter pada layar menjadi huruf

besar semua.

3. Buatlah program yang dapat mengubah karakter pada layar menjadi huruf

kecil semua.

4. Dengan menggunakan nested loop, buatlah program yang dapat menampilkan

urutan angka berikut : 12345 54321

(6)

5. Buatlah program yang dapat menampilkan suatu daftar ASCII dengan tampilan

Referensi

Dokumen terkait

Target sasaran dalam proses komunikasi adalah penerima pesan, dengan mengetahui target sasaran dapat disusun strategi komunikasi yang hendak dilakukan terkait

Ada diskusi rutin tiap dua minggu sekali di kantor TI-Indonesia, Workshop “Promoting Integrity – My Dream, My Way, My Action” dengan anak- anak muda dari Towards Transparency

Grafik Hubungan antara konsumsi bahan bakar (ml/s) dan N (rpm) untuk beban 75% dengan Variasi RPM dan Variasi RPM.. Grafik Hubungan BMEP (kPa) dan Variasi RPM untuk Beban 50%

Merupakan data kualitatif yang bersifat tidak setara setara atau tidak sama antar data yang satu dengan yang lain.. Jadi diberikan nama

Tujuan penelitian Tugas Akhir adalah mempelajari perilaku keruntuhan elemen struktur balok beton bertulang, diagram momen-kurvatur, dan diagram hubungan beban-peralihan;

Selain berkomunikasi dengan antar pengguna jalan lain menggunakan isyarat lampu dan isyarat suara para awak bus seperti asisten pengemudi (kernet),dan kondektur pun

Huda memanfaatkan teknik demonstrations-performance dan media VCD untuk meningkatkan keterampilan siswa dalam bermain drama yang bertujuan mencoba mengajak siswa untuk

Sebaiknya hubungan koordinasi Fakultas Kedokteran UNPAD dengan Rumah Sakit Hasan Sadikin dengan hubungan funsionalnya bersifat integratif yaitu di tingkat UPF / laboratorium ,