Anda dapat menggunakan instruksi "Shift Right" untuk menggeser konten operan pada
input IN sedikit demi sedikit ke kanan dan menanyakan hasilnya pada output OUT. Parameter
N untuk menentukan jumlah posisi bit yang akan menggeser nilai tertentu.
2. SHR [Shift Right]
Anda dapat menggunakan instruksi "Shift Right" untuk menggeser konten operan pada
input IN sedikit demi sedikit ke kanan dan menanyakan hasilnya pada output OUT. Parameter
N untuk menentukan jumlah posisi bit yang akan menggeser nilai tertentu.
EXSAMPLE 1 :
4. Konversi BINER ke bilangan HEKSADESIMAL
1 digit bilangan Heksadesimal sama dengan 4 bit bilangan biner
EXSAMPLE :
biner 1 1 1 1 0 0 0 0
BIT 7 6 5 4 3 2 1 0
BINER 2# 1 1 1 1 0 0 0 0
128 64 32 16 = 240
Konversi
HEKSADESIMAL 16#
= 240
digeser 2 bit Ke Kanan
SHIFT RIGHT
BIT 7 6 5 4 3 2 1 0
BINER 2# 0 0 1 1 1 1 0 0
32 16 8 4 = 60
HEKSADESIMAL 16#
= 60
15 x 16^1 0 x 16^0
F 0
240 0
3 C
3 x 16^1 12 x 16^0
48 12
5. Hasil sama dengan Exsample 1 sebelumnya.
Jika nilai pada parameter N adalah "0", nilai pada input IN disalin ke operan pada output OUT.
EXSAMPLE :
Jika nilai pada parameter N lebih besar dari jumlah posisi bit, maka nilai operan pada input IN
digeser ke kanan sebesar jumlah posisi bit yang tersedia.
Exsample :
KESIMPULAN :
2# 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0
0
F 3 C
digeser 2 digit ke Kanan
2# 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
digeser 9digit ke Kanan
6. Posisi bit yang dibebaskan di area kiri operan diisi dengan angka nol ketika nilai tanpa tanda
digeser. Jika nilai yang ditentukan mempunyai tanda, maka posisi bit bebas diisi dengan
keadaan sinyal dari bit tanda tersebut. Artinya jika negatif maka area kiri yang kosong akan
diisi dengan angka “1”.
EXSAMPLE :
Masukkan nilai
Note :
Short Integer, agar nilai terbaca
tetap Negatif
Short Integer [Sint]
7. NOTE : bilangan Negatif yang dikonversi status angka “0” + (-1)
Pemilihan type data dalam intruksi Shift Right harus dalam bilangan bertanda jika inputan
data Bilangan Negatif. Jika tidak maka data negatif hasil Shift Right akan terbaca bilangan tidak
bertanda [Unsigned]. Hasil ini tentu tidak sesuai yang diinginkan.
EXSAMPLE :
INPUT & OUTPUT Bilangan BYTE
2# 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0
4 2 1 = -8 1 = -2
INPUT & OUTPUT Bilangan INTEGER
2# 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0
4 2 1 = -8 1 = -2
F 8 F E
digeser 2 digit ke Kanan
digeser 2 digit ke Kanan
F 8 F E
Area kosong diisi angka 1
Type data BYTE
8. Hasilnya menjadi bilangan positif / tidak bertanda [Unsigned].
INPUT & OUTPUT Bilangan BYTE
2# 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0
4 2 1 = -8 32 16 8 4 2 = 62
digeser 2 digit ke Kanan
F 8 F E
Area kosong diisi angka 0
11. Tampak bahwa bit digeser 4 digit hingga menjadi -1. Berikut proses pergeseran bit yang terjadi:
SHR [Shift Right]
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
-3856 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2^11 2^10 2^9 2^8 2^3 2^2 2^1 2^0
2048 1024 512 256 8 4 2 1 = -3856
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
-241 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2^7 2^6 2^5 2^4
128 64 32 16 = -241
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
-16 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2^3 2^2 2^1 2^0
8 4 2 1 = -16
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
= -1
INTEGER [16 bit]
INTEGER [16 bit]
INTEGER [16 bit]
INTEGER [16 bit]
1
2
3
12. Bagaimana jika tidak menggunakan P_TRIG dalam Ledder Diagram :
Maka yang terjadi adalah bit digeser hingga bernilai nol (False) semua. Berikut logika biner
yang terjadi :
SHR [Shift Right]
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit 10 bit 9 bit 8 bit 7 bit 6 bit5 bit 4 bit 3 bit2 bit 1 bit 0
-3856 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2^11 2^10 2^9 2^8 2^3 2^2 2^1 2^0
2048 1024 512 256 8 4 2 1 = -3856
INTEGER [16 bit]
1
13. Dan terakhir berikut program RESET yang kita buat dalam praktikum kali ini :
Desimal bit 15 bit 14 bit 13 bit 12 bit 11 bit10 bit 9 bit 8 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
= -1
INTEGER [16 bit]