PEMROGRAMAN ASSAMBLER 1

Nama          : DAVID MAULANA
BP              : 1001081015

Nama Kelompok

Nama          : HUTRILA AFDAL
BP              : 1001081009

Nama          : MAILENDRA YENTI
BP              : 1001081001

1.     Dasar Teori

·         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

·         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)  
2.Langkah Kerja
1.      Jika sudah berada di debug.com ulangi langkah 4 dan ketik program berikut, beri nama
MOV CX,05 -> terjadi perulangan 5 kali
MOV AH,02
MOV DL,41
INT 21
LOOP 0103
INT 20
Enter 2 kali


2.      Lihat hasil program dengan ketikkan g
3.      Kemudian Ketik U 100 L 0d dan isi tabel berikut




Tabel 1 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AEC
0100
MOV CX, 0005
B90500

0AEC
0103
MOV AH, 02
B402

0AEC
0105
MOV DL, 41
B241

0AEC
0107
INT 21
CD21

0AEC
0109
LOOP 0103
E2F8

0AEC
010B
INT 20
CD20


4.      Gunakan perintah Trace (T) dan isi tabel berikut
 

Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AEC
0103
0000
0000
001A
0000
FFEE
0103
0AEC
0105
0000
0000
001A
0041
FFEE
0105
0AEC
0107
0200
0000
001A
0041
FFEE
0107
00A7
107C
0200
0000
001A
0041
FFE8
107C
00A7
107D
0200
0000
001A
0041
FFE8
107D
00A7
107E
0200
0000
001A
0041
FFE8
107E

OUTPUT : AAAAA
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
Tabel 1 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AEC
0100
MOV     AH,02
B402

0AEC
0102
MOV     CX,001A
B91A00

0AEC
0105
MOV     DL,41
B241

0AEC
0107
INT     21
CD21

0AEC
0109
MOV     BL,DL
88D3

0AEC
010B
MOV     DL,20
B220


Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AEC
0102
0200
0000
0000
0000
FFEE
0102
0AEC
0105
0200
0000
001A
0000 
FFEE
0105
0AEC
0107
0200
0000
001A
0041
FFEE
0107
00A7
107C
0200
0000
001A
0041
FFE8
107C
00A7
107D
0200
0000
001A
0041
FFE8
107D
00A7
107E
0200
0000
001A
0041
FFE8
107E

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
Tabel 1 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



0AEC
0100
MOV CX,001A
B91A00

0AEC
0103
MOV DL, 41
B241

0AEC
0105
MOV AH,02
B402

0AEC
0107
INT 21
CD21

0AEC
0109
INC DL
FEC2

0AEC
010B
LOOP 0105
E2F8


Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
0AEC
0103
0000
0000
001A
0000
FFEE
0103
0AEC
0105
0000
0000
001A
0041
FFEE
0105
0AEC
0107
0200
0000
001A
0041
FFEE
0107
00A7
107C
0200
0000
001A
0041
FFE8
107C
00A7
107D
0200
0000
001A
0041
FFE8
107D
00A7
107E
0200
0000
001A
0041
FFE8
107E


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 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



1399
0100
MOV BX,0000
BB0000

1399
0103
MOV DL,41
B241

1399
0105
MOV CX,0003
B90300

1399
0108
MOV AH,02
B402

1399
010A
INT 21
CD21

1399
010C
LOOP 0108
EFFA


Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
1399
0103
0000
0000
0000
0000
FFEE
0103
1399
0105
0000
0000
0000
0041
FFEE
0105
1399
0108
0000
0000
0003
0041
FFEE
0108
1399
010A
0000
0000
0003
0041
FFEE
010A
00A7
107C
0200
0000
0003
0041
FFE8
107C
00A7
107D
0200
0000
0003
0041
FFE8
107D

OUTPUT : AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ


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 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



1392
0100
MOV AH, 02
B402

1392
0102
MOV CX,001A
B91A00

1392
0105
MOV DL,41
B241

1392
0107
INT 21
CD21

1392
0109
MOV BL,DL
88D3

1392
010B
MOV DL,20
B220


Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
1392
0102
0200
0000
0000
0000
FFEE
0102
1392
0105
0200
0000
001A
0000
FFEE
0105
1392
0107
0200
0000
001A
0041
FFEE
0107
00A7
107C
0200
0000
001A
0041
FFE8
107C
00A7
107C
0200
0000
001A
0041
FFE8
107D
00A7
107E
0200
0000
001A
0041
FFE8
107E
\
OUTPUT : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

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 Tabel Instruksi
ALAMAT
INSTRUKSI
OPCODE
KETERANGAN
SEGMEN
OFFSET



1392
0100
MOV AH,02
B402

1392
0102
MOV CX,001A
B91A00

1392
0105
MOV DL,41
B241

1392
0107
INT 21
CD21

1392
0109
PUSH DX
52

1392
010A
MOV DL,20
B220



Tabel 2 Isian Register
ALAMAT
REGISTER
SEGMEN
OFFSET
AX
BX
CX
DX
SP
IP
1392
0102
0200
0000
0000
0000
FFEE
0102
1392
0105
0200
0000
001A
0000
FFEE
0105
1392
0107
0200
0000
001A
0041
FFEE
0107
00A7
107C
0200
0000
001A
0041
FFE8
107C
00A7
107D
0200
0000
001A
0041
FFE8
107D
00A7
107E
0200
0000
001A
0041
FFE8
107E


3.      Pertanyaan
1.      Dari program-program yang sudah ditulis dan diuji apa fungsi dari register
AX è merupakan register yang menyimpan code program untuk mengisi program.
BX è merupakan register yang digunakan untuk menyimpan code operasi lompat dan perbandingan.
CX è merupakan register yang menyimpan code perulangan dari program.
DX è merupakan register yang menyimpan code object(karakter/kalimat) dari program.
SP è merupakan sebuah Segment
IP,DS,SS,ES,CS è merupakan sebuah offset.

2.      Apa yang bisa disimpulkan dari tabel 1.1 sampai dengan tabel terakhir
a.       Pada tabel intruksipada alamat segmentnya akan bernilai sama sedangkan alamat offsetnya melakukan perulangan dimana ada penambahan 2 bit untuk code program berikutnya.
b.      Pada tabel register hampir sama dengan table isian tegister diamana alamatnya bernilai tetap selama masih belum NOP saat di tracekan(T).
c.       Jika sudah NOP setelah di tracekan maka untuk alamat segmentnya akan lebih kecil sedangkan alamat OFFsetnya akan bernilai besar.
d.      Titiap code program yang difunakan mempunyai OPCODE yang beda-beda pada masing-masing code program yang digunakan.
3.      Buat program untuk menampilkan
1*1 = 1

2*1 = 2

4.      Buat program untuk menampilkan
1:1 = 1

2:1 = 2


4.      Kesimpulan
o   Bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic (opcode), operan1 dan operan2
o   Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assembler
o   Interupt (Int) merupakan pemanggilan subroutin yang sudah tersedia di memori computer
o   Agar dapat mejalakan bahasa assembler didalam DOS/command from kita harus membuat dengan langkah-langkah yang sesuai agar dapat menjalakan program yang kita inginkan.
5.      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


0 komentar:

Posting Komentar