Modul Kuliah Bahasa Rakitan Harry Witriyono, M.Kom Universitas

advertisement
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Modul Kuliah Bahasa Rakitan
Oleh : Harry Witriyono, M.Kom
I. Bahasa Rakitan, Microprocessor dan Bilangan
1. Bahasa Rakitan dan Posisinya dengan Bahasa Lain.
Manusia dapat melakukan interaksi secara efektif dengan menggunakan media
bahasa, sehingga memungkinkan untuk menyampaikan gagasan, pemikiran dan
informasi, tanpa ada bahasa maka komunikasi tidak akan terjadi. Dalam lingkungan
komputer bahasa pemrograman bertindak sebagai sarana komunikasi antara manusia dan
komputer dalam menyelesaikan permasalahannya, tanpa ada bahasa pemrograman maka
komputer hanyalah sebagai suatu alat saja yang tidak dapat membantu manusia.
Suatu solusi untuk suatu masalah akan menjadi lebih mudah bila bahasa
pemrograman yang digunakan lebih dekat dengan permasalahan tersebut. Oleh karena
itu, bahasa harus memiliki konstruksi yang merefleksikan terminologi dan elemen yang
dipergunakan dalam mendeskripsikan masalah dan bahasa tersebut bebas terhadap jenis
komputer yang digunakan. Bahasa pemrograman yang dapat merefleksikan terminologi
tersebut adalah bahasa pemrograman yang lebih menyerupai bahasa manusia sendiri dan
dikenal dengan bahasa tingkat tinggi (High Level Language). Disisi lain, komputer
digital melaksanakan pekerjaannya dalam memecahkan masalah manusia hanya
memahami dan menerima bahasa yang berupa nol dan satu atau yang dikenal sebagai
bahasa tingkat rendah (Low Level Language).
Bahasa pemrograman berdasarkan ketergantungannya dengan mesin bisa meliputi
jenis bahasa seperti berikut ini:
1. Bahasa Mesin, yang merupakan bentuk bahasa terendah dari bahasa komputer,
dimana setiap instruksi dalam program direpresentasikan dengan kode numerik, yang
secara fisik berupa deretan angka 0 dan 1. Sekumpulan instruksi dalam bahasa mesin
bisa dibentuk menjadi microcode, yaitu semacam prosedur dalam bahasa mesin.
2. Bahasa Rakitan / Assembly Language, yang merupakan bentuk simbolik dari bahasa
mesin. Misalnya simbolik / mnemonic MOV AH,2 adalah terjemahan dari bahasa
mesin 1011010000000010. Pada bahasa rakitan terdapat alat bantu untuk diagnostik
yang disebut debug. Contoh produk yang ada untuk pengembangan dan debug
bahasa rakitan adalah : Turbo Assembler dari Borland Co. dan Macro Assembler dari
Microsoft Co, sedangankan debuggernya adalah Turbo Debuger dan Debug. Ciri khas
bahasa rakitan dalam penulisan perintahnya adalah terdiri dari field operasi atau
perintah diikuti oleh satu atau lebih operannya.
3. Bahasa Tingkat Tinggi (user oriented), disebut demikian karena bahasa pemrograman
komputer ini lebih mendekati dengan bahasa manusia. Disamping itu memberikan
fasilitas yang lebih banyak, kontrol program yang terstruktur, kalang (nested), block
dan prosedur. Contohnya adalah bahasa Pascal, BASIC, FORTRAN, COBOL, ADA,
C++, dan lain-lain.
4. Bahasa Problem Oriented atau Object Oriented, yang memungkinkan penyelesaian
untuk suatu masalah atau aplikasi yang spesifik. Contohnya SQL untuk database,
Edisi 2
2009/2010
1
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
LISP untuk gambar teknik, Visual Basic, Visual Delphi, COGO untuk aplikasi teknik
sipil, Flash untuk pembuatan animasi, dan lain-lain.
Muara akhir dari kelompok bahasa – bahasa tadi adalah ke bahasa mesin atau
bahasa rakitan, dimana ketika telah dikompilasi maka hasilnya akan menjadi kode-kode
dalam bahasa mesin atau mnemonik assembler. Perhatikan instruksi binner berikut :
1011010000000010 MOV AH,2
1011001001000001 MOV DL,41
PRINT “A”
1100110100100001 INT 21
1100110100100000 INT 20
END
Pada baris pertama instruksi bilangan binner tersebut, memerintahkan komputer untuk
mempersiapkan service 2 untuk persiapan proses cetak dari interupt 21 yang
diinstruksikan pada baris ke 3. Baris keduanya menunjukkan pada komputer karakter
yang akan dicetak adalah karakter 41 Heksa atau 65 Desimal yang artinya huruf A,
sehingga waktu komputer mengerjakan perintah baris ketiga, tercetaklah huruf A di layar.
Baris terakhir memberikan perintah pada komputer untuk menghentikan program.
Bilangan pada bahasa rakitan dapat berupa beberapa basis bilangan, yaitu :
bilangan desimal, heksadesimal, oktal, dan binner. Tetapi yang paling banyak digunakan
pada pemrograman bahasa rakitan adalah bilangan heksadesimal.
Bilangan desimal : bilangan yang berbasis 10 yang biasa kita gunakan sehari-hari.
Bilangan ini dipakai menghitung dari mulai 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Bilangan biner
adalah bilangan yang berbasis 2, dimana perhitungan pada bilangan ini hanya dikenal dua
bentuk bilangan 0 dan 1 saja. Bilangan oktal adalah bilangan yang berbasis delapan,
sehingga dalam perhitungan hanya dikenal 8 bilangan
Dengan demikian bila kita
menghitung mulai dari 0 hingga 15 dalam bilangan biner,oktal dan heksadesimal
menjadi seperti tabel berikut:
Desimal
Binner Oktal Heksadesimal
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A
11
1011
13
B
12
1100
14
C
13
1101
15
D
14
1110
16
E
15
1111
17
F
Edisi 2
2009/2010
2
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Konversi bilangan Biner menjadi Desimal :
Contoh : bilangan biner 110 maka desimalnya adalah :
= 1 x 22 + 1 x 21 + 0 x 20
= 4 +2+0
= 610
Konversi bilangan Desimal menjadi Biner :
Contoh : bilangan desimal 13 maka binernya :
2 13 sisa 1
2 6 sisa 0
2 3 sisa 1
baca binnernya
2 1 sisa 1
0
Jadi bilangan binernya adalah 1101
Sebagai latihan silahkan coba ubah bilangan 23 desimal menjadi biner.
Jawabannya :
23 sisa 1
11 sisa 1
5 sisa 1
2 sisa 0
1 sisa 1
0
Jadi binernya adalah : 10111
Konversi bilangan Oktal ke Desimal
Contoh bilangan 23 oktal ke desimal :
= 2 x 81 + 3 x 80
= 16 + 3
= 19 Desimal
Konversi bilangan Desimal ke Oktal
Contoh bilangan 50 desimal ke oktal :
850 sisa 2
8 6 sisa 6
0
Jadi bilangan 50 desimal sama dengan 62 oktal.
Konversi Heksadesimal ke Biner
Contoh bilangan C5E2 heksadesimal menjadi biner :
C 5 E 2 = 1100 0101 1110 0010
Jadi bilangan binernya = 1100010111100010
Untuk konversi ke bilangan desimal lakukan seperti dari Biner ke Desimal.
Edisi 2
2009/2010
3
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Memori, Interrupt dan Register
Memori pada komputer memiliki hubungan yang tak dapat dipisahkan, karena
setiap komputer memerlukan memori sebagai tempat kerjanya. Memori ini dapat
berfungsi untuk memuat program dan juga sebagai tempat untuk menampung hasil
proses. Memori ini bersifat volatile, artinya data yang tersimpan cuma sebatas adanya
aliran listrik, sehingga pada komputer diperlukan adanya media penyimpanan kedua
seperti flash disk, disket, harddisk, dan lain-lain.
Pada IBM-PC dikenal bagian terkecil dari memori yang dapat diakses secara
langsung dan cepat, seperti halnya variabel pada bahasa tingkat tinggi, dan disebut
dengan nama register. Register ada beberapa macamnya, diantaranya adalah : register
general purpose, register segmen, register pointer dan index, register index pointer dan
register flag.
1. Register General Purpose, register yang termasuk dalam kelompok ini adalah :
register AX, BX, CX, dan DX yang masing-masing terdiri dari 16 bit. Register ini
dapat dipisah menjadi dua bagian masing-masing berjumlah 8 bit, yaitu bagian low
dan bagian high; sehingga terdapat register AH, AL, BH, BL, CH, CL, DH, dan DL.
Secara umum register ini berguna untuk berbagai keperluan, antara lain : AX
digunakan pada operasi aritmatika, BX digunakan untuk menunjukkan suatu alamat
offset dari suatu segmen, CX digunakan untuk proses perulangan / looping, register
DX digunakan untuk menampung sisa hasil bagi 16 bit. Mulai processor 80386
terdapat tambahan register 32 bit, yaitu EAX, EBX, ECX dan EDX.
2. Register Segmen, register ini terdiri dari CS (Code Segment), DS (Data Segment), ES
(Extra Segment), SS (Stack Segment), yang masing-masing merupakan register 16 bit
dan berguna untuk menunjukkan alamat dari suatu segmen. Register CS digunakan
untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS
menunjukkan letak dari segmen yang digunakan oleh stack; kedua register ini
sebaiknya tidak sembarangan diubah karena akan menyebabkan kekacauan pada
program. Register DS untuk menunjukkan tempat segmen dimana data-data pada
program disimpan. ES biasanya digunakan untuk menunjukkan suatu alamat di
memory, misalnya memory video. Pada prosesor 80386 ke atas terdapat tambahan
register FS dan GS.
3. Register Pointer dan Index, yang termasuk dalam kelompok ini adalah register SP
(Stack Pointer), BP (Base Pointer), SI (Source Index) dan DI (Destination Index);
pada processor 80386 terdapat tambahan register 32 bit yaitu ESP, EBP, ESI dan
EDI.
4. Register Index Pointer, yaitu IP adalah register 16 bit yang menunjukkan alamat di
memory tempat dari instruksi selanjutnya akan dieksekusi. Pada processor 80386 ke
atas terdapat register EIP yang merupakan register 32 bit.
5. Flag Register adalah register yang menunjukkan kondisi dari suatu keadaan (ya atau
tidak) selanjutnya akan dieksekusi. Karena setiap keadaan hanya menggunakan 1 bit
saja maka ada 16 register flag. Registernya : OF (Over Flow Flag), SF (Sign Flag),
ZF (Zero Flag), CF (Carry Flag), PF (Parity Flag), DF (Direction Flag), IF (Interupt
Enable Flag), TF (Trap Flag), AF (Auxilliary Flag), NT (Nested Task Flag)
Edisi 2
2009/2010
4
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Interrupt adalah suatu permintaan khusus kepada microprocessor untuk
melakukan sesuatu aktifitas, seperti mencetak karakter, mengatur atribut file, dan lainlain. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang
dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.
Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi yang diberi
nomor dari 0 sampai 255. Nomor interupsi 0 sampai 1F disediakan oleh ROM BIOS,
yaitu suatu IC pada komputer yang mengatur operasi dasar komputer. Program yang
melayani suatu interupsi disebut dengan interupt handler.
Setiap interrupt akan mengeksekusi interrupt handlernya masin-masing
berdasarkan nomornya. Sedangkan alamat dari masing-masing interrupt handler tercatat
di memori dalam bentuk array yang besar elemennya masing-masing 4 byte. Keempat
byte ini dibagi lagi menjadi : 2 byte pertama berisi kode offset dan 2 byte berikutnya
berupa kode segmen dari alamat interupt handler yang bersangkutan. Alamat absolut
semua interrupt handler ini disimpan dalam lokasi memori 0000h sampai 3FF, dan
disebut dengan Interrupt Vector Table; dan ini tidak sama di satu komputer dengan yang
lainnya.
Interrupt nomor 00h – 1F berada di alamat absolut memory 0000h – 007Fh, dan
bersifat standar untuk semua komputer baik yang bersistem operasi DOS atau tidak.
Interrup ini antara lain :
00h
Devide by Zero
10h
Video Service
01h
Single Step
11h
Equipment Check
02h
Non Maskable Interrupt
12h
Memory Size
03h
Break Point
13h
Disk Service
04h
Arithmatic Overflow
14h
Communication (RS-232)
05h
Print Screen
15h
Cassete Service
06h
Reserved
16h
Keyboard Service
07h
Reserved
17h
Printer Service
08h
Clock Tick (Timer)
18h
ROM Basic
09h
Keyboard
19h
Bootstrap loader
0Ah
I/O Channel Action
1Ah BIOS Time & Date
0Bh
COM 1 (Serial 1)
1Bh Control Break
0Ch
COM 2 (Serial 2)
1Ch Timer Tick
0Dh
Fixed Disk
1Dh Video Initialization
0Eh
Diskette
1Eh Disk Parameter
0Fh
LPT 1(Parallel 1)
1Fh Graphics Char
Interrupt 20h – FFh adalah interrupt pada komputer yang menggunakan sistem operasi
DOS dan diload dimemori pada saat digunakan di alamat absolut : 07Fh – 3FFh, antara
lain :
20h
Terminate Program
21h
DOS Function Service
22h
Terminate Code
23h
Ctrl – Break Code
24h
Critical Error Handler
25h
Absolute Disk Read
26h
Absolute Disk Write
27h
Terminate but Stay Resident
dan lain-lain yang dapat anda cari di Internet.
Edisi 2
2009/2010
5
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Membuat Program COM dengan Debug
Program Debug merupakan program bawaan atau terintegrasi langsung pada
paket sistem operasi mulai dari DOS hingga Microsoft Windows. Program ini bila kita
aktifkan pada Microsoft Windows XP tahapannya adalah sebagai berikut.
1. Klik Start – Run
2. Ketik perintah CMD lalu klik button OK sehingga akan tampak jendela MS DOS
Prompt.
3. Selanjutnya pindah ke folder tempat kita menyimpan program kita nanti.
4. Aktifkan program Debug dengan mengketiknya pada prompt yang tampil.
Program Debug merupakan salah satu program kecil yang berdaya-guna besar.
Program ini dapat digunakan untuk melihat-lihat kode program dalam mnemonic bahasa
Assembler. Beberapa perintah yang sering kita gunakan nanti adalah sebagai berikut :
1. Q = Quit, digunakan untuk mengakhiri program Debug.
2. D = Dump / Display digunakan untuk melihat-lihat kode hexadesimal dari suatu
alamat memori tertentu.
3. A = Assemble digunakan untuk memberikan perintah bahasa Assembler pada
program yang diubah atau dibuat.
4. U = Unassemble digunakan untuk melihat mnemonik bahasa Assembler pada suatu
alamat tertentu.
5. R = untuk memberikan nilai pada suatu register langsung
6. N = digunakan untuk memberi nama ke suatu file
7. W = digunakan untuk menyimpan sejumlah byte yang telah diubah / dibuat.
8. ? = digunakan untuk menampilkan bantuan atas perintah-perintah lain dalam
program Debug.
Pada contoh berikut kita akan mempelajari bagaimana membuat program COM
yang memanfaatkan Interupt 21H service 02H untuk mencetak suatu karakter ke layar.
Tahapan-tahapannya adalah sebagai berikut :
1. Aktifkan program Debug.
2. ketik A100
3. ketik mov ah,2
4. ketik mov dl,45
5. ketik int 21
6. ketik int 20
7. tekan enter untuk menutup perintah baris terakhir program.
8. ketik RCX
9. ketik angka selisih dari mulai tahap 3 sampai alamat terakhir yang ditunjukkan
pada tahap 6. Pada contoh kita nilainya adalah 8, yaitu selisih dari 108 – 100.
10. ketik Na.com
11. ketik w
12. ketik q
Edisi 2
2009/2010
6
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Tampilan tahapan tadi pada program Debug adalah seperti berikut ini :
-a100
1386:0100 mov ah,2
1386:0102 mov dl,41
1386:0104 int 21
1386:0106 int 20
1386:0108
-rcx
CX 0000
:8
-na.com
-w
Writing 00008 bytes
-q
Setelah keluar dari program Debug, silahkan anda jalankan program a.com tadi, dengan
mengetiknya pada prompt.
Contoh berikut adalah membuat program COM yang menampilkan tulisan ABA pada
monitor.
-a100
1386:0100 mov ah,2
1386:0102 mov dl,41
1386:0104 int 21
1386:0106 mov dl,42
1386:0108 int 21
1386:010A mov dl,41
1386:010C int 21
1386:010E int 20
1386:0110
-rcx
CX 0000
:10
-nABA.com
-w
Writing 00010 bytes
-q
Sebagai latihan silahkan anda buat program berikut ini :
6. Program yang menampilkan tulisan : UMB BKL
7. Buat program yang menampilkan tulisan : Universitas Muhammadiyah Bengkulu
8. Buat program yang menampilkan tulisan :
Belajar Assembler
Oleh : Harry Witriyono
Edisi 2
2009/2010
7
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Analisa beberapa Mnemonic bahasa rakitan adalah sebagai berikut :
1. Perintah MOV, berguna untuk memberikan suatu nilai pada suatu register. Perintah
ini setara dengan bahasa keluarga BASIC, yaitu LET. Contoh :
Mov AH,02 artinya memberikan nilai AH=02
Mov DL,41 artinya memberikan nilai DL=41
2. INT 21
artinya kerjakan perintah no 21, yang dalam contoh program kita
adalah perintah 21 service 2 (Register AH berisi 2), yang berguna mencetak karakter
ke layar. Service dan interrup yang lain berbeda pula fungsinya.
3. INT 20
artinya akhiri program.
4. JMP alamat
artinya menjalankan perintah pada suatu alamat
5. LOOP alamat
artinya ulang ke alamat sampai nilai register CX menjadi 0
6. INC register
artinya tambahkan suatu register dengan nilai 1.
7. ADD reg1,regi2
artinya tambahkan nilai register 2 ke register 1 dan hasilnya di
register 1
8. SUB reg1,reg2
artinya kurangkan nilai register 2 dengan register 1 dan
hasilnya di register 1.
9. DEC reg
artinya mengurangi nilai register reg dengan nilai 1.
Contoh Permrograman dengan beberapa perintah / mnemonic bahasa rakitan tersebut
adalah seperti berikut ini :
1. Membuat perulangan mencetak karakter A ke layar sebanyak 5 kali, maka
nemoniknya adalah:
MOV AH,02
MOV DL,41
XXXX:YYYY
MOV CX,5
INT 21
LOOP YYYY
INT 20
2. Membuat perulangan mencetak karakter ABCDE ke layar dengan INC, maka
mnemoniknya adalah :
MOV AH,02
MOV DL,41
XXXX:YYYY
MOV CX,5
INT 21
INC DL
LOOP YYYY
INT 20
3. Membuat cetak karakter ACE ke layar dengan ADD, maka mnemoniknya adalah :
MOV AH,02
MOV DL,41
MOV BL,02
INT 21
ADD DL,BL
INT 21
ADD DL,BL
INT 21
INT 20
Edisi 2
2009/2010
8
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
4. Membuat karakter ECA ke layar dengan SUB, maka mnemoniknya
MOV AH,02
MOV DL,45
INT 21
SUB DL,2
INT 21
SUB DL,2
INT 21
INT 20
Edisi 2
2009/2010
9
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
PEMROGRAMAN BAHASA ASSEMBLY DENGAN TURBO ASSEMBLER
Pada pemrograman bahasa assembly / rakitan dengan menggunakan debug
tampak sekali tidak begitu nyaman dalam proses pengetikan kode bahasanya. Walaupun
aplikasi Debug adalah peralatan tercepat yang dapat kita gunakan untuk membongkar
program, tetapi dalam pembuatan aplikasi bahasa assembly menjadi tidak nyaman, sama
saja halnya dengan menebang pohon dengan menggunakan pisau dibandingkan denga
menebang pohon dengan gergaji. Untuk itu pemrograman Assembly yang cukup baik
dapat menggunakan aplikasi Turbo Assembler (TASM) sebagai kompilernya, dimana
kode programnya dapat kita ketik dengan menggunakan aplikasi pengolah kata standard
ASCII biasa seperti Edit atau Notepad.
1.
2.
3.
4.
5.
6.
Tahapan pelaksanaannya secara garis besar adalah sebagai berikut :
Buatlah folder kerja terlebih dulu di media simpan anda.
Copy-kan file TASM.EXE, TLINK.EXE ke folder tersebut.
Bila perlu Copy-kan juga aplikasi pengolah kata standard tadi ke folder tersebut.
Ketik source code bahasa rakitannyanya dengan aplikasi pengolah kata tersebut.
Compilasi dengan TASM
Jadikan EXE atau COM dengan TLINK.
Setelah selesai aplikasi EXE / COM dapat dengan mudah dijalankan dari prompt DOS.
Struktur dasar pengetikan Source Code untuk pembuatan aplikasi COM adalah
seperti berikut ini :
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Label2 : +---------------------+
| TEMPAT PROGRAM |
+---------------------+
INT 20H
END Label1
Bila menggunakan Macro maka struktur programnya adalah seperti berikut ini :
NamaM MACRO [P1,P2,,]
+------------+
| Program |
+------------+
ENDM
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Edisi 2
2009/2010
10
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Label2 : +---------------------+
| TEMPAT PROGRAM |
+---------------------+
INT 20H
END Label1
Bila anda menggunakan Procedure, maka struktur penulisannya adalah seperti
berikut ini :
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Label2 : +---------------------+
| TEMPAT PROGRAM |
+---------------------+
INT 20H
NamaP PROC NEAR/FAR
+---------+
| Program |
+---------+
RET
NamaP ENDP
END Label1
Contoh penulisan aplikasi dengan tidak menggunakan Macro atau Procedure
adalah seperti berikut ini :
;/=========================================================\;
; Program : INKAL.ASM ;
; Author : S’to ;
; Fungsi : Input Kalimat dari ;
; keyboard. ; ; INTERUPSI 21h ;
;===========================================================;
;===========================================================;
; Input: ;
; AH = 0Ah ;
; DS:DX = Penampung dengan spesifikasi: ;
; Byte 1 = Maksimum karakter yang dapat dimasukkan ;
; Byte 2 = Akan dijadikan Indikator banyaknya ;
; karakter yang dimasukkan ;
; Byte 3 keatas = Tempat hasil masukan ditampung ;
; ;
; ;
;\=========================================================/;
.MODEL SMALL
.CODE
ORG 100h
TData : JMP Proses
T_Enter EQU 0Dh
Kal0 DB 'Ketikkan satu Kalimat : $'
Edisi 2
2009/2010
11
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
Kal1 DB 13,10,'Kalimat pada buffer : $'
Buffer DB 23,?,23 DUP(?)
Proses : MOV AH,09
LEA DX,Kal0
INT 21h ; Cetak kalimat Kal0
MOV AH,0Ah ; Servis Input kalimat
LEA DX,Buffer ; DX menunjuk pada offset Buffer
INT 21h ; Input kalimat !
MOV AH,09
LEA DX,Kal1
INT 21h ; Cetak kalimat Kal1
LEA BX,Buffer+2 ; BX menunjuk byte ke 3 Buffer
Ulang:
CMP BYTE PTR [BX],T_Enter ; Apakah karakter Enter?
JE EXIT ; Ya! Lompat ke Exit
MOV DL,[BX] ; Masukkan karakter pada DL
MOV AH,02 ; Servis cetak karakter
INT 21h ; Cetak karakter
INC BX ; BX := BX+1
JMP Ulang ; Lompat ke Ulang
EXIT: INT 20h ; Kembali ke DOS !
END TData
Contoh penulisan aplikasi yang menggunakan Procedure seperti berikut ini :
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; PROGRAM : PROC_KAR.ASM ;
; FUNGSI : MENCETAK KARATER ;
; DENGAN PROCEDURE ;
; ;
;==========================S’to=;
.MODEL SMALL
.CODE
ORG 100h
Proses : CALL Cetak_Kar ; Panggil Cetak_Kar
INT 20h
Cetak_Kar PROC NEAR
MOV AH,02h
MOV DL,'S'
INT 21h ; Cetak karakter
RET ; Kembali kepada si pemanggil
Cetak_Kar ENDP ; END Procedures
END Proses
Contoh penulisan aplikasi yang menggunakan Macro seperti berikut ini :
Cetak_Kar MACRO Kar
MOV CX,3
MOV AH,02
MOV DL,Kar
Ulang :
INT 21h ; Cetak Karakter
LOOP Ulang
ENDM ; End Macro
;-----------------------------------;
; Program : MAC1.ASM ;
; Fungsi : Menggunakan Macro ;
Edisi 2
2009/2010
12
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Harry Witriyono, M.Kom
; Untuk mencetak ;
; huruf 'UMB' ;
;-----------------------------------;
.MODEL SMALL
.CODE
ORG 100h
Proses:
Cetak_Kar 'U' ; Cetak Huruf U
Cetak_Kar 'M' ; Cetak Huruf M
Cetak_Kar 'B' ; Cetak Huruf B
INT 20h
END Proses
Selanjutnya setelah anda mengetik dan menyimpan tiga file tadi, maka sekarang
kita kompilasi dengan cara sebagai berikut :
TASM INKAL.ASM
TLINK /t INKAL
TASM PROC_KAR.asm
TLINK /t proc_kar
TASM mac1.asm
TLINK /t mac1.asm
Sekarang anda telah mendapatkan file aplikasi COM : Inkal.com, Proc_kar.Com
dan Mac1.com.
Edisi 2
2009/2010
13
Modul Kuliah Bahasa Rakitan
Universitas Muhammadiyah Bengkulu
Edisi 2
2009/2010
Harry Witriyono, M.Kom
14
Download