Mengenai Saya

Foto saya
hallooo... assalamualaikum... hehehe... perkenalkan nama saya Amelinda Putri. Biasanya di panggil Amel. sekarang si Amel ini lagi jadi mahasiswa di Politeknik Negeri Padang, jurusan TI, prodi Teknik Komputer. mau tau no BP nya??? boleh... no BP saya 1001082022. keren g??? keren g??? hehehe....

Kamis, 12 April 2012

Laporan MIcroprpsessor 1 Assembler


BAB 1
PEMROGRAMAN ASSAMBLER 1

1.1 Tujuan:
Setelah melakukan praktikum ini diharapkan mahasiswa mampu
1.      Membuat program assambler dengan ekstensi .COM dengan menggunakan debug
2.      Menampilkan dan membaca isi register
3.      Menjelaskan fungsi-fungsi register sebagai pengalamatan data
4.      Menjelaskan instruksi-instruksi dasar pada mikroprosesor X86
5.      Menjelaskan mode alamat efektif dan alamat mutlak
1.2 Dasar Teori
1.2.1 Bahasa Assambler

Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic opcode), operan 1 dan operan2 serta komentar (jika diperlukan)
Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.
CJNE R0,#22H, Tasmi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RR A ;1 buah operand
NOP ; tidak memerlukan operand
Semua instruksi tersebut dapat dibagi menjadi lima kelompok menurut fungsinya, yaitu:
·         Instruksi Pemindahan Data
·         Instruksi Aritmatika
·         Instruksi Logika dan Manipulasi Bit
·         Instruksi Percabangan
·         Instruksi Stack, I/O, dan Kontrol


1.2.2 Debug dan Interupt
A. Debug
Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
Perintah-perintah debug antara lain :
1.      Q (Quit)
Mengembalikan ke dos prompt
C> Debug
-Q
A>
2.      H (Hexa)
Melaksanakan perintah penambahan dan pengurangan terhadap dua bilangan hexa
C>Debug
-H 2204 2012
4216 01F2
3.      A (assambler)
Perintah untuk menulis program assambler
C>Debug
-a
17C0:0100 mov ax,12
4.      R(Register)
Digunakan untuk mengetahui isi masing-masing register
C>debug
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000 SI=0000  DI=0000
DS=17C0  ES=17C0  SS=17C0  CS=17C0  IP=0100  NV UP EI PL NZ NA PO NC
17C00:0100 B81200 mov ax,12
Perintah ini juga bisa untuk mengetahui atau memperbaharui isi register tertentu
C>Debug
rCX
CX 0000
:0100
C>Debug
rCX
CX 0100
:
5.      N(Name)
Perintah untuk membuat atau merubah nama file
C>Debug
-N D:Coba.com
6.      W(Writing)
Menulis program dan data ke dalam disc
C>Debug
-w
writing 0008 bytes
7.      G (Go)
Menjalankan program (misal program cetak huruf A)
C>Debug
-G
A
Program terminated normally
8.      T(Trace)
Menjalankan program perbaris dengan menampilkan register dipakai
C>Debug
-T
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000 SI=0000  DI=0000
DS=17C0  ES=17C0  SS=17C0  CS=17C0  IP=0100  NV UP EI PL NZ NA PO NC
17C00:0100 B81200 mov ax,12
9.      U (Unsamble)
Menampilkan list dari program yang sedang berjalan
U[tempat awal program yang diinginkan]L[panjang program/1 byte akhir dari alamat akhir program]

B. Interupt (Int)
Perintah ini merupakan pemanggilan subroutin yang sudah tersedia di memori komputer
Subroutine yang dapat dipanggil menggunakan perintah int (Interup) terdiri dari dua jenis yaitu:
1.      Bios Interrupt, yaitu Int yang disediakan oleh BIOS(Basic Input Output System). Int yang termasuk dalam Interrupt Bios adalah Int 0 hingga 1F hexa
2.      DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operation System). Yang termasuk dalam Interrupt ini adalah Interrupt diatas 1F hexa
Interupt DOS yang sering digunakan adalah Int 20h dan Int 21h service 02h
a.      Int 20h
Int ini mempunyai tugas memberhentikan proses komputer terhadap suatu program COM.
b.      Int 21h service 21h
Int 21h mempunyai banyak tugas sehingga dibagi menjadi berbagai macam service number. Service 02h merupakan bagian tugas Int 21h yang sering dipakai yaitu untuk mencetak sebuah huruf ke monitor.
Untuk menjalankan fungsi Int 21h service 02h harus memenuh syarat sebagai berikut:
1.      Register AH harus berisi service number dari Int 21h yang akan dijalankan (02h)
2.      Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak.
C. Instruksi-Instruksi Dasar
1. Instruksi Pengalamatan
MOV tujuan,asal (tujuan: register/memori, asal:angka/register/memori)
Misal MOV AX,1234H (register AX diisi angka 1234 H)
2. Instruksi Penjumlahan
            INC tujuan
            Misal INC DX (DX = DX+1)
ADD tujuan,asal
Misal ADD AX,1234 (AX=AX+1234H)
3. Instruksi Pengurangan
            DEC tujuan
            Misal DEC AX (AX=AX-1)
SUB tujuan,asal          
            Misal SUB AX,1200H (AX = AX-1200H)          
1.3 Alat dan Bahan
Alat-alat yang digunakan adalah
1.      PC
2.      Utility Debug
1.4  Pengujian
A. Kerja 1 Menggunakan Debug.com


Langkah Kerja:
Berikut ini langkah membuat program untuk mencetak huruf A dengan utiliti DEBUG.COM
1.      Klik start, dari tampilan menu pilih Run. Ditampilan menu Run, ketik command dan selanjutnya pilih OK
2.      Dari layar DOS prompt yang muncul, tukar folder “document and settings” ke folder compiler untuk mikroprosessor 8088, seperti yang tampak pada gambar 1.1

Gambar 1 Tampilan Command Prompt
3.      Ketik Debug (huruf besar atau kecil tidak berpengaruh)
Gambar 2 Tampilan Pemanggilan utiliti Debug
4.      Ketik A/a
Gambar 3 Tampilan Perintah A (assambler)
5.      Tulis program berikut

MOV AH,02, Kemudian tekan Enter
MOV DL,41, tekan Enter
INT 21, tekan Enter
INT 20, tekan Enter 2 kali
Maka tertampil sebagai berikut
Gambar 4 Tampilan Program
Keterangan program:
-          Mov ah,02 adalah mengisi register ah dengan service number dari int 21 untuk mencetak 1 huruf pada layar.
-          Mov dl,41 mengisi register dl dengan 41 yang merupakan Kode ASCII dari huruf A
-          Int 21 ; perintah mencetak
-          Int 20 perintah untuk menghentikan program
6.      Periksa panjang program dan memperbaharui isi register CX yang merupakan tempat penampungan panjang program yang aktif sebelum dijalankandengan mengetikkan rcx dan isi kursor dengan angka 8
Gambaran 5 Tampilan Perintah RCX
7.      Beri nama program dengan mengetikkan N(nama file.COM)
Misal : Ncoba.com
Gambar 6 Tampilan Pemberian Nama Program
8.      Pastikan register IP menunjuk alamat awal program yang akan dijalankan, dengan cara mengetikkan rIP dan pastikan berisi 0100 (alamat offset), jika sudah terisi dengan benar Enter, kalau tidak ketik pada kursor 0100
.
Gambar 7 Tampilan Cek Isi Register IP
9.      Simpan program dengan mengetikkan perintah W
Gambar 8 Tampilan Perintah W
10.  Jalankan program dengan mengetikkan perintah G
Gambar 9 Tampilan Output Program
Hasil tercetak huruf A kemudian ada pemberitahuan bahwa program berhenti secara normal
11.  Cek perbaris program dengan mengetikkan perintah T
Gambar 10 Tampilan Perintah Trace (T)
Pada baris terakhir tertulis B241 yang merupakan opcode dari perintah mov dl,41
12.  Kemudian ketik T 2 kali, maka akan terlihat sebagai berikut
Gambar 11 Tampilan Perintah Trace ke 2 dan ke 3
Pada baris terakhir tertulis opcode dari perintah int 21
13.  Keluar dari utiliti Debug dengan ketik Q dan Panggil ulang program, dengan ketik coba.com
Gambar 12 Tampilan Pengujian Program
B. Kerja 2 Melihat Isi Memori
Langkah Kerja :
1.      Jika sudah berada di debug.com ulangi langkah 4 dan ketik program berikut, beri nama
MOV CX,05
MOV AH,02
MOV DL,41
INT 21
LOOP 0103
INT 20
Enter 2 kali
Lihat hasil program dengan ketikkan g
Kemudian Ketik U 100 L 0d dan isi tabel berikut





Tabel 1 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AE1
0100
mov cx,0005
B90500

0AE1
0103
mov ah,02
B402

0AE1
0105
mov dl,41
B241

0AE1
0107
int 21
CD21

0AE1
0109
loop 0103
E2F8

0AE1
010B
int 20
CD20


Gunakan perintah Trace (T) dan isi tabel berikut
Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AE1
0103
0000
0000
0005
0000
FFEE
0103
0AE1
0105
0200
0000
0005
0000
FFEE
0105
0AE1
0107
0200
0000
0005
0041
FFEE
0107


C . Operasi Aritmatika
1.      Tulis program untuk menampilkan huruf A s/d Z berikut dan beri nama tambah1.com
MOV CX,1A
MOV DL,41
MOV AH,02
INT 21
INC DL
LOOP 0105
INT 20

2.      Buat tabel seperti tabel 1  dan 2
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AE1
0100
MOV CX,1A
B91A00

0AE1
0103
MOV DL,41
B241

0AE1
0105
MOV AH,02
B402

0AE1
0107
INT 21
CD21

0AE1
0109
INC DL
FEC2

0AE1
010B
LOOP 0105
E2F8


ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AE1
0103
0000
0000
001A
0000
FFEE
0103
0AE1
0105
0000
0000
001A
0041
FFEE
0105
0AE1
0107
0200
0000
001A
0041
FFEE
0107

3.      Tulis program berikut dan beri nama kurang1.com
MOV CX,1A
MOV DL,5A
MOV AH,02
INT 21
INC DL
LOOP 0105
INT 20
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti
tabel 1 dan 2
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AE1
0100
MOV CX,001A
B91A00

0AE1
0103
MOV DL,5A
B241

0AE1
0105
MOV AH,02
B402

0AE1
0107
INT 21
CD21

0AE1
0109
INC DL
FEC2

0AE1
010B
LOOP 0105
E2F8


ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AE1
0103
0000
0000
001A
0000
FFEE
0103
0AE1
0105
0000
0000
001A
005A
FFEE
0105
0AE1
0107
0200
0000
001A
005A
FFEE
0107

D. Operasi Lompat dan perbandingan
Tulis program berikut
MOV BX,0000
MOV DL,41
MOV CX,0003
MOV AH,02
INT 21
LOOP 0108
INC DL
CMP DL,5B
JNE 0105
MOV DL,0D
MOV AH,02
INT 21
MOV DL,0A
INT 21
INC BX
CMP BX,000B
JLE 0103
INT 20
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program)  
dan buat tabel seperti tabel 1.dan 2
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AE1
0100
MOV BX,0000
B91A00

0AE1
0103
MOV DL,41
B241

0AE1
0105
MOV CX,0003
B402

0AE1
0108
MOV AH,02
CD21

0AE1
010A
INT 21
FEC2

0AE1
010C
LOOP 0108
E2F8

0AE1
010E
INC DL
FEC2

0AE1
0110
CMP DL,5B
80FA5B

0AE1
0113
JNZ 0105
75F0

0AE1
0115
MOV DL,0D
B20D

0AE1
0117
MOV AH,02
B402

0AE1
0119
INT 21
CD21

0AE1
011B
MOV DL,0A
B20A

0AE1
011D
INT 21
CD21

0AE1
011F
INC BX
43

0AE1
0120
CMP BX,+0B
83FB0B

0AE1
0123
JLE 0103
7EDE


ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AE1
0103
0000
0000
0000
0000
FFEE
0103
0AE1
0105
0000
0000
0000
0041
FFEE
0105
0AE1
0108
0000
0000
0003
0041
FFEE
0108
0AE1
010A
0200
0000
0003
0041
FFEE
010A

E. Operasi Stack
1.      Tulis program berikut
MOV AH,02
MOV CX,1A
MOV DL,41
INT 21
MOV BL,DL
MOV DL,20
INT 21
MOV DL,BL
INC DL
LOOP 107
INT 20

Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1. Dan 2
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AE1
0100
MOV AH,02


0AE1
0102
MOV CX,001A


0AE1
0105
MOV DL,41


0AE1
0107
INT 21


0AE1
0109
MOV BL,DL


0AE1
010B
MOV DL,20


0AE1
010D
INT 21


0AE1
010F
MOV DL,BL


0AE1
0111
INC DL


0AE1
0113
LOOP 0107



ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0ADF
0102
0200
0000
0000
0000
FFEE
0102
0ADF
0105
0200
0000
001A
0000
FFEE
0105
0ADF
0107
0200
0000
001A
0041
FFEE
0107
2.      Tulis program berikut
MOV AH,02
MOV CX,1A
MOV DL,41
INT 21
PUSH DX
MOV DL,20
INT 21
POP DX
INC DL
LOOP 107
INT 20
Kemudian Ketik U 100 L (lihat bit awal dari alamat akhir program) dan buat tabel seperti tabel 1.dan 2
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0ADF
0100
MOV AH,02
B402

0ADF
0102
MOV CX,001A
B91A00

0ADF
0105
MOV DL,41
B241

0ADF
0107
INT 21
CD21

0ADF
0109
PUSH DX
52

0ADF
010A
MOV DL,20
B220

0ADF
010C
INT 21
CD21

0ADF
010E
POP DX
5A

0ADF
010F
INC DL
FEC2

0ADF
0111
LOOP 0107
E2F4


ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0ADF
0102
0200
0000
0000
0000
FFEE
0102
0ADF
0105
0200
0000
001A
0000
FFEE
0105
0ADF
0107
0200
0000
001A
0041
FFEE
0107

G1.5. Pertanyaan
1.      Dari program-program yang sudah ditulis dan diuji apa fungsi dari register
AX,BX,CX,DX,SP,IP,DS,SS,ES,CS
Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.
Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.
Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX. 19
Register CS(Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.
Register DS(Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen.
Register ES(Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory
SS(Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.
Index Pointer Register ,Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit.
Register SP(Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack.

2.      Apa yang bisa disimpulkan dari tabel 1.1 sampai dengan tabel terakhir
- Instruksi (MOV) digunakan untuk memindahkan data dari satu tempat ke tempat lain
- Int ini mempunyai tugas memberhentikan proses komputer terhadap suatu program COM.
- Mov ah, adalah mengisi register ah dengan service number dari int 21 untuk mencetak 1 huruf pada layar.
- Mov dl, 41 mengisi register dl dengan 41 yang merupakan Kode ASCII dari huruf A
- Int 21 merupakan perintah mencetak
- Int 20 perintah untuk menghentikan program

1.6 Referensi
1.      Lukito, Ediman, 1982, Dasar-dasar Pemrograman Dengan Assambler 8088, PT Elex Media Komputindo, Jakarta
2.      Mulyono, Heri, 2005, Diktat Kuliah Bahasa Rakitan, STMIK Jaya Nusa, Padang
3.      Partoharsodjo, Hartono, 1991, Tuntunan Praktis Pemrograman Bahasa Assembly, PT Elex Media Komputindo, Jakarta

Tidak ada komentar:

Posting Komentar