Anda di halaman 1dari 31

LAPORAN PRAKTIKUM MIKROPROSESOR

“FUNGSI PERINTAH STRING”

Nama Praktikan:
Hanif Mahfuzzalfi (191331047)

Nama Instruktur :
Ferry Satria, BSEE.,M.T.
. Rahmawati Hasanah,S.ST.,M.T.

Tanggal praktik : 28 April 2021


Tanggal pengumpulan : 5 Mei 2021

PROGRAM STUDI TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BANDUNG
I. TUJUAN
 Mahasiswa mampu memahami konsep Bahasa Pemrograman Assembly dan
menjalankannya di software emu8086.
 Mahasiswa mampu memahami konsep program perintah string
 Mahasiswa bisa dan mengerti untuk membuat perintah string pada aplikasi
emu8086

II. LANDASAN TEORI


String adalah suatu jenis data yang terdiri dari atas kumpulan karakter, angka
maupun symbol. Register yang digunakan dalam operasi string yaitu SI dan DI. Register
Si (Source Index) digunakan untuk mencatat alamat dari sumber string yang akan
dimanipulasi. Register DI (Destination Index) mencatat alamat atau tempat hasil dari
manipulasi string. Pada string instruction ini terdpat perintah yang digunakan dalam dalam
menjalankan operasi yaitu :
o MOVSB
Fungsi dari perintah ini yaitu untuk menyalin data 1 byte dari alamat DS:SI ke
alamat ES:DI. Bila DF=0(CLD) maka setelah instruksi MOVSB dijalankan,
register SI dan DI akan ditambah dengan 1, sebaliknya jika DF=1(STD) maka
register SI dan DI akan dikurang dengan 1. Register string MOVSB ini ada pada
tipe mikroprosesor 8088 keatas.
Algoritma MOVSB:
ES[DI]=DS:[SI]
Jika DF=0 maka
SI=SI+1
DI=DI+1
Jika DF =1 maka
SI = SI-1
DI = DI – 1

o MOVSW
Fungsi dari perintah ini yaitu untuk menyalin data 1 word dari alamat DS:SI
ke alamat ES:DI. Bila nilai DF=0(CLD) maka ketika perintah MOVSW dijalankan
maka register SI dan DI akan ditambah 2 sebaliknya jika nilai DF=1 (STD) maka
register SI dan DI akan dikurang 2
Algoritma MOVSW:
ES[DI]=DS:[SI]
Jika DF=0 maka
SI=SI+2
DI=DI+2
Jika DF =1 maka
SI = SI - 2
DI = DI – 2

o LODSB dan LODSW


Kedua perintah ini digunakan untuk menyimpan data yang ada di DS:[SI]
ke register AL (dengan instruksi LODSB) atau register AX (LODSW), kemudian
register SI diperbaharui.
Contoh program LODSB :
ORG 100h
LEA SI, al ; simpan posisi data di SI
MOV CX,4 ; terdapat 4 data
MOV AH, 0EH ; fingsi cetak karakter
m:LODSB; simpan data ke AL
INT 10h; tampilkan ke layar
LOOP m; ulangi sebanyak 4 kali
RET
al DB ‘H’,’a’,’l’,’o’
END
Pada program diatas akan menampilkan karakter ke layar
o STODSB dan STOSW
Kedua instruksi ini digunakan untuk menyimpan data dari AL (dengan instruksi
STODSB) atau AX (dengan perintah STOSW) ke dalam ES:[DI], kemudian DI
diperbaharui
Algoritma STOSB:
ES:[DI]=AL
Jika DF=0 maka
DI=DI+1
Selain itu
DI = DI – 1

Algoritma STOSW:
ES:[DI]=AL
Jika DF=0 maka
DI=DI+2
Selain itu
DI = DI – 2
o CMPSB (Compare String Byte)
Fungsi dari perintah CMPSB ini yaitu untuk membandingkan satu byte
pada alamat DS:SI dengan ES:DI. Jika directional flag bernilai 1 maka setiap
selesai perbandingan register SI dan DI akan ditambah dengan 1, sebaliknya jika
directional flag bernilai 0 maka setiap selesai perbandingan akan dikurang dengan
1.
o CMPSW (Compare String Word)
Fungsi dari perintah CMPSW ini yaitu untuk membandingkan satu word pada
alamat DS:SI dengan ES:DI. Jika directional flag bernilai 1 maka setiap selesai
perbandingan register SI dan DI akan ditambah dengan 2, sebaliknya jika
directional flag bernilai 0 maka setiap selesai perbandingan akan dikurang dengan
2.
o SCASB (Scan String For Byte)
Fungsi dari perintah SCASB yaitu untuk membandingkan isi registrasi AL
dengan data pada alamat ES:DI
o SCASW
Fungsi dari perintah SCASW yaitu untuk membandingkan isi register AX
dengan data pada alamat ES;DI

 Pengcopyan dan Arah Proses Operasi String


Sama seperti perintah MOV, pada string menggunakan perintah MOVS untuk
mencopy data dari DS:SI menuju ES:DI. Dimana DS:SI mencatat alamat dari
sumber string, sedangkan ES:DI mencatat alamat hasil dari operasi string. Setiap
kali terjadi operasi string MOVS maka register SI dan DI akan berkurang atau
bertambah sesuai dengan direction flag. Untuk menaikan nilai SI dan DI pada setiap
proses dapat dilakukan dengan perintah CLD (Clear Direction Flag) , lalu
menggunakan perintah STD(Set Direction Flag) untuk menurunkan nilai SI dan DI.
 Pengulangan Pada String
Perintah yang digunakan:
1. REP (Repeat)= melakukan pengulangan suatu opersai string sebanyak CX kali
( register CX akan dikurangi 1 secara otomatis). Hal ini merupakan sebuah
pengulangan tanpa syarat yang akan melakukan pengulangan hingga CX
bernilai 0.
2. REPE (Repeat If Equal)= melakukan pengulangan operasi string sebanyak CX
kali atau bila sampai terdapat ketidaksamaan pada kedua operand yang
membuat ZF = 0.
3. REPNE (Repeat If Not Equal)= melakukan operassi string sebanyak CX kali
atau bila terdapat kesamaan pada kedua operand yang membuat ZF = 1.
 Mengisi String
STOS merupakan bentuk umum untuk mengisi string dari AL, AX menuju
ES:DI. Jika direction flag berinilai 0 (dengan CLD) maka setelah instruksi STOS
dijalankan, register DI akan ditambah secara otomatis. Sebaliknya jika direction
flag bernilai 1 (dengan STD) maka refister DI akan dikurang secara otomatis.

III. ALAT DAN BAHAN


 Aplikasi emu8086

IV. LANGKAH KERJA


1. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 8-bit dari Blok
Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
2. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 16-bit dari
Blok Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
3. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 8-bit
(0,1,2,3,4,5,6,7,8,9,A,B,C,D, E,F) pada suatu Blok Memori.
4. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 16-bit
(0,1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H,9999H,AAAAH,BBBBH,C
CCCH,DDDDH, EEEEH,FFFFH) pada suatu Blok Memori.
5. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL.
6. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL
7. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
8. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
9. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.
10. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.
V. DATA PERCOBAAN
1. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 8-bit dari Blok
Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
FLOCHART :

START

DS ←AX
ES←AX

SI←[BM1]
DI←[BM2]
DF=0
CX←I6

REP MOVSB

END

PROGRAM :
HASIL :

2. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 16-bit dari
Blok Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
FLOWCHART :

START

DS ←AX
ES←AX

SI←[BM1+30]
DI←[BM2+30]
DF=1
CX←I6

REP MOVSW

END
PROGRAM :

HASIL :

3. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 8-bit
(0,1,2,3,4,5,6,7,8,9,A,B,C,D, E,F) pada suatu Blok Memori.
FLOWCHART :

START

DS ←AX
ES←AX

DI←[BM1]
AL←0
DF=0

STOSB
INC AL
AL : 16

Y
ZF=0

END

PROGRAM :
HASIL :
4. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 16-bit
(0,1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H,9999H,AAAAH,BBBBH,C
CCCH,DDDDH, EEEEH,FFFFH) pada suatu Blok Memori.
FLOWCHART :

START

DS ←AX
ES←AX

DI←[BM1]
AX←0
DF=0

STOSB
AX←AX+1111H
INC BL
BL : 16

Y
ZF=0

END

PROGRAM :
HASIL :
5. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL.
FLOWCHART :

START

DS ←AX
ES←AX

CX←8
AL←0FFH
DI←[BM1]
DF=0

SCASB

Y CF=0
AL←BM1[DI-1] &&
ZF=0

T
CX=1

CL←AL

END
PROGRAM :

HASIL :
6. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL
FLOWCHART :

START

DS ←AX
ES←AX

CX←8
AL←07FH
DI←[BM1]
DF=0

SCASB

Y ZF=0
AL←BM1[DI-1] &&
SF=0

T
CX=1

CS←AL

END
PROGRAM :

HASIL :
7. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
FLOWCHART :

START

DS ←AX
ES←AX

CX←8
AL←0FFFH
DI←[BM1]
DF=0

SCASW

Y CF=0
AX←BM1[DI-1] &&
ZF=0

T
CX=1

DX←AX

END
PROGRAM :

HASIL :
8. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
FLOWCHART :

START

DS ←AX
ES←AX

CX←8
AL←7FFFH
DI←[BM1]
DF=0

SCASW

Y ZF=0
AX←BM1[DI-1] &&
SF=0

T
CX=1

DX←AX

END
PROGRAM :

HASIL :
9. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.
FLOWCHART :
START

DS ←AX
ES←AX

BL←0FFH
DH←0FFH
DL←0FFH
AL←BL
DI←BM[DI+2]
DF=1

SCASB

Y T

CF=1 DI←DI+4 CX=1

T Y
T BL←BM1[DI+1]
DH←BM1[DI] Y END
CX=1 DL←BM[DI-1] AL←[BM1]
AL←BM1[DI+1]
Y DI←DI+4
T

END AL←DH
DI←BM1[DI]
SCASB

T
Y
CF=1 DI←DI+4 CX=1

Y
T
BL←BM1[DI+2]
T DH←BM1[DI+1] Y END
CX=1 DL←BM[DI] DH←[BM1]
AL←BM1[DI+2]
DI←DI+5
Y T

END

AL←DH
DI←BM1[DI]
SCASB

T
Y
CF=1 DI←DI+4 CX=1

Y
T
BL←BM1[DI+3]
T DH←BM1[DI+2] Y END
CX=1 DL←BM[DI+1] DL←[BM1]
AL←BM1[DI+3]
DI←DI+6
Y
T

END
DI←DI+5

T
CX=1

END
PROGRAM :
HASIL :
10. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.
FLOWCHART :
START

DS ←AX
ES←AX

BL←7FH
DH←0FFH
DL←0FFH
AL←BL
DI←BM[DI+2]
DF=1

SCASB

Y T

AL<[BM1] DI←DI+4 CX=1

T Y
T BL←BM1[DI+1]
DH←BM1[DI] Y END
CX=1 DL←BM[DI-1] AL>[BM1]
AL←BM1[DI+1]
Y DI←DI+4
T

END AL←DH
DI←BM1[DI]
SCASB

T
Y
DH<[BM1] DI←DI+4 CX=1

Y
T
BL←BM1[DI+2]
T DH←BM1[DI+1] Y END
CX=1 DL←BM[DI] DH>[BM1]
AL←BM1[DI+2]
DI←DI+5
Y T

END

AL←DH
DI←BM1[DI]
SCASB

T
Y
DL<[BM1] DI←DI+4 CX=1

Y
T
BL←BM1[DI+3]
T DH←BM1[DI+2] Y END
CX=1 DL←BM[DI+1] DL>[BM1]
AL←BM1[DI+3]
DI←DI+6
Y
T

END
DI←DI+5

T
CX=1

END
PROGRAM :
HASIL :
VI. ANALISIS
Pada praktikum kali ini yaitu membuat program dari perintah String. Praktikum di
lakukan dengan menggunakan 10 soal dimana :
1. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 8-bit dari Blok
Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
2. Buat Diagram Alir dan Program untuk memindahkan (meng-copy) 16 data 16-bit dari
Blok Memori 1 ke Blok Memori 2. Tentukan sendiri data yang dipergunakan.
3. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 8-bit
(0,1,2,3,4,5,6,7,8,9,A,B,C,D, E,F) pada suatu Blok Memori.
4. Buat Diagram Alir dan Program untuk mengisi 16 data Heksadesimal 16-bit
(0,1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H,9999H,AAAAH,BBBBH,C
CCCH,DDDDH, EEEEH,FFFFH) pada suatu Blok Memori.
5. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL.
6. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data Terkecil tersebut
pada Reg CL
7. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
8. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 16 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg DX.
9. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner tidak
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.
10. Buat Diagram Alir dan Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 24 bit. Tentukan sendiri data uji yang diperlukan. Tempatkan nilai data Terkecil
tersebut pada Reg BL:DX.

Untuk percobaan yang pertama yaitu membuat program untuk memindahkan


(meng-copy) 16 data 8-bit dari Blok Memori 1 ke Blok Memori 2.Untuk data yang
digunakan yaitu :
BM1 DB 32H,66H,78H,12H,22H,67H,45H,88H
DB 0B8H,0A7H,46H,6CH,2AH,77H,9DH,22H
BM2 DB 16 DUP(0)
Hal pertama yang dilakukan yaitu menyiapkan data yang akan di isikan pada BM1 dan
BM2 di isi 16 lokasi berisi 0 yang siap di isi data pada BM1. Ambil lokasi dari data di BM1
dengan perintah Lea dan simpan di SI dan ambil alamat data BM2 dan simpan di DI.
Selanjutnya Set Direction Flag menjadi 0 agar arah transfer dari atas ke bawah dan set CX
menjadi 16 agar perintah Mov akan di lakukan 16 kalu untuk 16 data. Selanjutnya adalah
lakukan perintah REP MOVSB.
Untuk soal kedua yaitu membuat program untuk memindahkan (meng-copy) 16
data 16-bit dari Blok Memori 1 ke Blok Memori 2. Data yang digunakan yaitu :
BM DW 1234H,2345H,3456H,4567H,5678H,6789H,8912H,9123H
DW 0AABBH, 0BBCCH , 0CCDDH, 0ADADH, 0AADDH, 0BCBCH, 0DCDCH,
0AAAAH
BM2 DW 16 DUP(0)
Program yang di gunakan hampir sama dengan soal pertama, yang berbeda karena data
yang di kirimkan 16 bit atau 4 digit, maka perintah MOVSB di ganti menjadi MOVSW
yang bisa memindahkan data 16 bit.
Untuk soal nomor 3 yaitu membuat program untuk mengisi 16 data Heksadesimal
8-bit (0,1,2,3,4,5,6,7,8,9,A,B,C,D, E,F) pada suatu Blok Memori. Karena proses nya yaitu
menyimpandata dari register ke blok memory maka menggunakan perintah Store yaitu
STOSB karena 2 digit data. Selanjutnya adalah naikan nilai AL dengan perintah INC
sehingga AL bertambah 1 lalu Compare nilai SI dengan 16 dan lakukan perintah JNE dan
jump kembali ke STOSB.
Untuk nomor 4 yaitu membuat program untuk mengisi 16 data Heksadesimal 16-
bit (0, 1111H, 2222H, 3333H, 4444H, 5555H, 6666H, 7777H, 8888H, 9999H, AAAAH,
BBBBH, CCCCH, DDDDH, EEEEH, FFFFH) pada suatu Blok Memori. Program yang di
gunakan hampir mirip dengan soal nomer 3, namun karena data yang di masukan 4 digit
maka menggunakan perintah STOSW dan register AX.
Untuk soal kelima adalah membuat program untuk mencari nilai data terkecil dari
8 data biner tidak bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data
Terkecil tersebut pada Reg CL. Program ini menggunakan perintah SCANSB karena
membandingkan data di register dengan data di Memory AL.pertama adalah register AL
di isi FF atau data terbesar bilangan tidak bertanda karena untuk mencari yang terkecil
harus di bandingkan dengan yang terbesar.selanjutnya adalah mengambil alamat data pada
BM1 dan di simpan di DI lalu kemudina di scan dengan perintah SCASB. Perintah
meyimpan data nya di tujukan pada nilai D sebelumnya atau di kurang 1 karena setelah
melewati SCANSB nilai dD otomatis ditambah 1 sehingga untuk menunjuk data terkecil
atau sebelumnya saat menyimpan D harus dikurang 1 terlebih dahulu. Perintah di lakukan
sebanyak 8 kali hingga parameter di CX yang berisi 8 habis. Terakhir data terkecil yang di
dapatkan akan di simpan di register CL diman di kasus ini data terkecil adalah 8.
Untuk soal ke enam yaitu membuat program untuk mencari nilai data terkecil dari
8 data biner bertanda 8bit: 23h,56h,22h,8AH, F3H,66H,8,7CH. Tempatkan nilai data
Terkecil tersebut pada Reg CL. Program ini hampir sama dengan soal ke 5 , yang berbeda
adalah bilangan yang bertanda sehingga ada data yang positif dan negatif. Yang perlu di
ubah dari progam adalah data terbesar di awal yang awalnya FFH menjadi 7FH yang
merupakan data positif terbesar, lalu JA atau jump above di ganti menjadi JG atau jump
greater yaitu perintah jump jika data di register lebih besar dari di BM1 maka akan Jump,
perintah ini berfungsi pada bilangan bertanda.
Untuk soal ke 7 yaitu membuat program untuk mencari nilai data terkecil dari 8
data biner tidak bertanda 16 bit. Tempatkan nilai data Terkecil tersebut pada Reg DX. Data
yang digunakan yaitu :
.DATA
BM1 DW 6789H,1234H,5432H,0AA77H,8899H,0BCB8H,5632H,8856H
Program yang di gunakan hampir sama dengan soal nomer 5, yang berbeda hanya datanya
yang 4 digit atau 16 bit sehingga data terbesar diganti FFFFH, lalu karena 4 digit sehingga
SCANSB harus di ganti SCANSW dan register AL yang di ganti AX karena akan
menyimpan 16 digit data.
Untuk soal ke 8 yaitu membuat Program untuk mencari nilai data terkecil dari 8
data biner bertanda 16 bit. Tempatkan nilai data Terkecil tersebut pada Reg DX. Data yang
digunakan yaitu :
DATA
BM1 DW 5767H,3497H,9867H,3215H,5476H,8834H,9976H,5786H
Program yang di gunakan hampir sama dengan soal nomor 6 karena bilangan yang
bertanda, yang berbeda adalah data terbesar di ubah menjadi 7FFFH dan register AL yang
di ganti CX karena data 16 bit atau 4 digit.
Untuk soal ke 9 adalah Program untuk mencari nilai data terkecil dari 8 data biner
tidak bertanda 24 bit. Tempatkan nilai data Terkecil tersebut pada Reg BL:DX. Data yang
digunakan adalah :
DATA
BM1 DB 10H,20H,30H, 40H,0DDH,0FFH, 0C5H,0A8H,68H
DB 11H,77H,56H, 0DDH,65H,87H, 0E9H,0D5H,76H
DB 64H,86H,23H, 89H,54H,80H
Karena data nya yang di bagi 3, maka dalam mengecek data ini lebih kecil atau tidak perlu
di lakukan pengecekan sebanyak 3 kali dengan SCANSB untuk tiap data. Karena ini lah
ada 5 kemungkinan perbandingan antar data. Kemungkinan pertama adalah High bit
berbeda dan bisa dilihat mana yang terkecil. Kemungkinan kedua adalah high bit bernilai
sama sehingga harus di cek middle mit nya. Ketiga adalah middle bit nya juga bernilai
sama sehingga harus di cek low bit nya. Ke empat adalah low bit nya juga sama yang
menandakan data yang di bandingkan bernilai sama. Dan terakhir ke lima adalah data
pembanding lebih besar dari data yang di bandingkan. Pertama adalah mengecek high bit
dari data, data di memory SCANSB, data di memory di bandingkan dengan data di BL jika
data lebih di register lebih besar maka akan menghasilkan carry dan menandakan bahwa
sudah benar data di register lebih kecil , namun jika data di memory lebih kecil dari register
maka data ini harus di simpan di register yang sudah di sediakan untuk di bandingkan
dengan data selanjutnya untuk mencari data yang lebih kecil.
Untuk soal no 10 yaitu Program untuk mencari nilai data terkecil dari 8 data biner
bertanda 24 bit. Tempatkan nilai data Terkecil tersebut pada Reg BL:DX. Data yang
digunakan yaitu :
.DATA
BM1 DB 29H, 57H, 73H, 44H, 82H, 44H, 17H, 97H, 0A7H
DB 0B9H, 0C3H, 0D1H, 0AAH, 27H, 4DH, 2BH, 1H,1H
DB 1AH, 2H, 1H, 0AAH, 0BBH, 4H
Program untuk soal ini hampir sama dengan soal nomer sembilan , yang membedakan
adalah data yang di cek adalah data bertanda yang memiliki nilai positif atau negatif
sehingga harus di lakukan beberapa perubahan pada program . pertama di ubah nilai
terbesar di awal program pada register BL,DH dan DL yang awalnya FFFFFFH menjadi
7FFFFFH yang merupakan data positif terbesar. Selanjutnya adalah meruban JC atau jump
carry menjadi JL atau jump less yang menandakan jika data yang di cek lebih besar dan
data di register lebih kecil maka akan elompat dan lanjut ke scan data selanjutnya. Terakhir
adalah merubah JA atau jump above menjadi JG atau jump Greater

VII. KESIMPULAN

Dari praktikum kali ini dapat disimpulkan bahwa :


 Program MOVSB dan MOVSW berufungsi untuk mengcopy data Blok memory
satu ke Blok memory yang lain.
 STOSB dan STOSW berfungsi untuk memasukan nilai di register kedalamBlok
memory.
 SCANSB dan SCANSW berfungsi untuk mengecek nilai data di register dan
membadingkannya dengan data di Blok memory.

Anda mungkin juga menyukai