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