BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 1 (Satu)Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan l...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)4. Bilangan HexadesimalBilangan ini mutlak harus dikuasai, karena dalam bahasa rakit...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 2 (Dua)Tujuan Instruksional Khusus Mengerti dan Memahami konsep memori ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Su...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment registe...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 3 (Tiga)Tujuan Instruksional Khusus Mengerti dan Memahami sistem bilang...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)2. Non Maskable Inte...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Register untuk keperluan umum yang terdiri atas :a. Register AX (Accumulator registe...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Extra segment -> register tambahan untuk operasi string Stack segment -> dengan S...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 4 (Empat)Tujuan Instruksional Khusus Mengerti dan Memahami Pembuatan Pr...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)A>TASM LATIH1 (enter)Maka di layar tampak:Turbo Assembler Version 2.0 Copyright (c) ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)1. Relatif lebih kecil dibanding EXE2. Lebih cepat dibanding EXE3. Hanya menggunakan...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contohnya:ANGKA EQU 0B800H ; 0B800H diberi nama ANGKAKolom EQU 80 ; angka 80 diberi ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER denganTASM.EXE dan T...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Membuat Program COMModel Program COMProgram yang berekstensi COM (Command) merupakan...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pembuatan program dengan DebugProgram yang tersedia dalam PCDOS atau MSDOS berupa De...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)memberi komentar “Program terminated normally”. Selengkapnya contoh caramembuat prog...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 0...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Org 100hMULAI: MOV CX,0005H ; banyaknya loop 5 kaliMOV DL,61H ; isi DL dengan kode A...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)cetak huruf di layarMOV DL,41H ; isi register DL dengan 41H kode ASCII; huruf AINT 2...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)3. Compile source program ASM dengan perintah compiler TASM dari TurboAssembler menj...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 6 (Enam)Tujuan Instruksional KhususMengerti dan memahami metode operasi...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contoh:ADC AH, AL ;AH=AH + AL + carryPengurangan (Subtraction)a. Instruksi SUB -> SU...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pembagian (Division)a. Pembagian 8 bit -> DIV reg atau DIV [alamat]Pembagian dividen...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 7 (Tujuh)Tujuan Instruksional KhususMengerti dan Memahami Pointer dan f...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat]Register 1 akan di-OR-kan deng...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Instruksi ROL (Rotate Left) -> ROL reg, CLIsi register di rotasi ke kiri sebanyak CL...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 8 (Delapan)Tujuan Instruksional Khusus Mengerti dan Memahami Metode Pen...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV reg, dataContoh:MOV AH, 02h ;02h disalin ke AHMOV DL,’A’ ; karakter A disalin ke...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)> Relative AddressingMerupakan penyalinan data dari lokasi memori yang ditunjuk oleh...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)• Penggunaan perintah MOV harus sesuai dengan aturan mode pengalamatan data.TUGAS1. ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)21H nomor servis AH=09H. Mencetak kalimat dalam sistem operasi DOS memerlukan tambah...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)org 100hMULAI: ; mencetak kalimat di tengah layarMOV AH,02HMOV AL,0MOV BH,0MOV DH, 1...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Perintah yang dipakai:CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW,...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)5. Nilai DL adalah posisi kolom layar yang akan dicetak6. Nilai DH adalah posisi bar...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV CX,35 ;banyak karakter yang akan dicetakLEA BP, KAL ;ES:BP untuk meletakan alama...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 10 (Sepuluh)Tujuan Instruksional KhususMengerti dan Memahami operasi ju...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Ada 3 jenis instruksi lompatan tak bersyarat yaitu: Lompatan pendek (short jump) ->...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas)Penulisa...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)JLE ULANG3INT 20HEND MULAIOPERASI STACKPengertian Operasi StackStack (tumpukan) adal...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Berikut ini contoh program lengkap untuk operasi stack:;Cara kerja stack.model small...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Berfungsi untuk menukarkan isi register dengan register lain atau isi register denga...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Instruksi STOS (Store string)Berfungsi memindahkan string pada AL, AX, EAX ke ekstra...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)TUGAS1. Sebutkan 2 jenis operasi Jump dan berikan contohnya masing-masing!2. Bagaima...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di registe...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Nilai AH berisi 08H INT 21H Nilai AH ini dapat dihentikan dengan Ctrl Break atau ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Masukan kalimat dari keyboardMemasukan data/input data 1 kalimat dapat kita buat den...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)INC DXINC DXAKHIR: INT 20HEND MULAIIsi data yang dimasukkan ke dalam register AL (1 ...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 12 (Duabelas)Tujuan Instruksional Khusus Mengerti dan Memahami metode p...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Nama_prosedur PROC NEAR/FAR ;nama prosedur-------------------- Isi Prosedur---------...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV AH, 02hINT 21hENDM.model small.codeorg 100hMULAI: CETAK ‘A’CETAK ‘B’CETAK ‘C’CET...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)2.3.Pertemuan Ke 13 (Tigabelas)Tujuan Instruksional Khusus Mengerti dan Memahami mod...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MULAI: -------POSISI KURSOR.model small.codeorg 100hMULAI: -------MODE LAYAR.model s...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 14 (Empatbelas)Tujuan Instruksional KhususMengerti dan Memahami pengaks...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MULAI: -------Penanganan FileA. Manajemen File- Membuat Directory/SubdirectoryPersya...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contoh program.model small.codeorg 100hMULAI: -C. Atribut FilePersyaratan untuk atri...
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Persyaratan untuk Archive file:Contoh program untuk archive (file yang dapat dibaca ...
Upcoming SlideShare
Loading in …5
×

Handout rakitan

3,702 views

Published on

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
3,702
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
121
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Handout rakitan

  1. 1. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 1 (Satu)Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilanganPokok Bahasan Pengenalan Bahasa Rakitan dan Sistem BilanganSub Pokok BahasanPengenalan Bahasa RakitanSistem bilangan biner- Sistem bilangan oktal- Sistem bilangan desimal- Sistem bilangan hexadesimalDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, HartonoPartoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoApa Itu Bahasa Rakitan (Assembler) ?Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasarkomputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauhberbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatanyang paling baik. Kelebihan dari bahasa rakitan adalah :1. Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkanpemrograman menjadi lebih mudah).2. Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapatdiintegrasikan kembali).3. Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan.4. Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkansecara maksimal.Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ?Untuk mempelajarai bahasa rakitan / assembler diperlukan :1. Sistem bilangan antara lain Biner, Oktal, Desimal dan Hexadesimal2. Pengenalan Microprocessor3. Sistem Memori dan Pengalamatan Memori4. Interupt / Interupsi5. Register6. Instruksi Assembly atau Mnemonic7. Mode pengalamatan data8. Operasi-operasi pada assembler9. Pembuatan programSistem BilanganUntuk mempelajari bahasa rakitan kita harus mengenal beberapa sistem bilangan yang sangatberguna dalam pengaksesan port ataupun menghafal kode ASCII yang penting. BilanganUky Yudatama, S.Si, M.Kom1
  2. 2. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan lainnyasangat dibutuhkan dalam pemrograman bahasa rakitan atau assembler, karena bahasa inidipakai untuk menjalankan sistem mikroprosessor. Setiap mikroprosesor memiliki bahasa rakitansendiri. Adapun sistem bilangan yang dipelajari adalah sebagai berikut :1. Bilangan BinerBilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2. Caramengkonversi ke bilangan desimal adalah dengan mengalikan dua dengan pangkat N(suku ke-N) seperti bilangan desimal mengalikan 10 dengan pangkat NContoh:1110 (biner) dikonversi ke desimal menjadi :(1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) =8 + 4 + 2 + 0 = 14 (desimal)- Operasi tambah pada sistem biner :0 + 0 = 001 + 0 = 010 + 1 = 011 + 1 = 11Contoh :1110001 + 1011000 = 11001001 (biner)desimalnya : 113 + 89 = 2012. Bilangan OktalBilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari angka 0hingga 7.Konversi bilangan octal ke desimal mempunyai cara yang sama dengan bilangan biner,hanya memakai bilangan dasar 8.Contoh:355 bilangan octal ke desimal355 oktal = (3 * 82) + (5 * 81) + (5 * 80)= 192 + 40 + 5= 237 desimal3. Bilangan DesimalBilangan ini sudah tidak asing lagi, karena digunakan dalam kehidupan sehari-hari.Sistem bilangan ini terdiri dari angka 0 sampai 9 dengan menggunakan dasar 10.Uky Yudatama, S.Si, M.Kom2
  3. 3. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)4. Bilangan HexadesimalBilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita sering menemukanbilangan ini. Kode ASCII ditulis dalam bilangan hexadesimal yang mewakili huruf, angka,tanda baca dan karakter unik lainnya sebanyak 255 buah.Bilangan hexadesimal merupakan bilangan dasar 16 terdiri dari : 0123456789ABCDEFCara mengkonversi ke bilangan desimal sama dengan biner dan octalContoh:3A hexa = (3 * 161) + (10 * 160)= 48 + 10= 58 desimal• Bahasa Rakitan atau Assembler merupakan bahasa tingkat rendah / low levellanguage digunakan dalam computer untuk Sistem Operasi, Compiler, penangananfile dan operasi-operasi mikroprosesor.• Setiap digit bilangan biner disebut satu bit. Terdiri dari 0 dan 1• Bilangan Octal merupakan bilangan dasar 8 terdiri dari 0 s/d 7• Bilangan Desimal merupakan bilangan dasar 10 yang sudah sering dipakai.• Bilangan Hexadesimal merupakan bilangan dasar 16 terdiri dari 0 – 9ABCDEF dandipakai dalam kode ASCII dank ode-kode lainnya.TUGAS1. Jelaskan mengenai bahasa rakitan?2. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?3. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadibeberapa sistem bilangan.Uky Yudatama, S.Si, M.Kom3
  4. 4. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 2 (Dua)Tujuan Instruksional Khusus Mengerti dan Memahami konsep memori pada PCPokok Bahasan MemoriSub Pokok Bahasan- Pengertian Memori PC- Pembagian Memori PC- Pengalamatan Memori PCDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoMemoriPengertian MemoriMerupakan bagian terpenting dalam komputer untuk menyimpan data dan program.Dalam microprosesor 8088 terdapat 16 saluran alamat (address) dan 8 saluran data secaramultiplex. Saluran alamat lainnya yang tersedia ada 4, khusus untuk menunjuk segmen memori,dimana tiap segment menjangkau memori sebesar 64 kliobyte. Sehingga dari 16 saluran alamatdapat menggarap isi memori hingga 1 megabyte dan bekerja dengan data 16 bit.Ukuran memori 1 kilobyte = 1024 byte, 1 megabyte = 1024 x 1024 byte = 1.048.576 byte. Makaalamat memori dari 0 sampai 1 megabyte memerlukan penulisan dengan 5 digit angkahexadesimal dari 00000H sampai FFFFFH.Sebagai contoh : Memori di PC XT 640 kilobyte terdiri dari alamat 00600H sampai alamatA0000H.RAM dan ROM merupakan komponen IC yang dapat menyimpan data dan programyang dapat dialamati terdiri dari jalur alamat (address) dan jalur data. RAM dapat menulis danmembaca data, sedangkan ROM hanya membaca saja.Kombinasi saluran/jalur data berupa 8 bit atau 16 bit yang dinyatakan dalam bilanganhexadesimal. Sedangkan jalur alamat (address) memiliki pola yang sama dengan jalurdata memakai bilangan hexadesimal. Sekarang telah berkembang memori denganjumlah saluran 32 bit dan 64 bit.Tempat menyimpan data ukuran 1 byte di RAM dan ROM harus diberi nomor urut agar mudahdiidentifikasi berupa alamat memori (memori address). Jika ada data berupa 5AH disalurkanmelalui jalur data ke memori dengan alamat memori 0F2B4H, maka berarti di lokasi memorinomor 0F2B4H terdapat data 5AH.Memori dengan jalur alamat yang banyak akan memiliki kapasitas simpan yang dinyatakandalam byte, kilobyte, megabyte atau gigabyte.Uky Yudatama, S.Si, M.Kom4
  5. 5. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Suatumedia penyimpan berupa Hard disk 10 M berarti memiliki kapasitas rekam 10 x 1024 x 1024byte.Istilah dalam memori yang sangat lazim dan sering ditemui dalam setiap pemrograman bahasarakitan adalah : Bit adalah singkatan dari binary digit Byte adalah 8 bit Word adalah 2 bytePembagian memoriDiantara register dalam CPU untuk mencatat alamat memori yang dipergunakan terdapatsegment register digabung dengan offset register yang mengatur pembagian memori. Offsetregister dapat berupa register lain yang bukan segment register dengan aturan pasangan :SSSS : OOOOS = digit hexadesimal pada segment register OO = digit hexadesimal pada offset registerSatu segment memori berukuran 64 kilobyte terbagi atas beberapa segment offset yang dapatdialamati oleh offset register. Sedangkan memori (RAM & ROM) pada PC dapat terdiri daribeberapa/banyak segment memori tergantung kapasitas memori pada PC tersebut.Pengalamatan MemoriMerupakan suatu cara untuk mencatat atau menunjuk alamat memori sesuai aturan pasanganSSSS : OOOO artinya penulisan alamat memori menuruti aturan bahwa bobot digit terendahpada Segment Register adalah 16 pangkat 1 dan bobot tertinggi 16 pangkat 4. Sedangkan padaOffset Register bobot digit terendah adalah 16 pangkat 0 dan bobot digit tertinggi 16 pangkat 3.Contoh:Misalkan: SSSS dipilih 1234HOOOO dipilih DCBAHMaka pengalamatan memori dapat dinyatakan 1234:DCBA.Angka alamat absolutnya dapat dihitung dari :123400DCBA +1FFFACara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH.Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX.Uky Yudatama, S.Si, M.Kom5
  6. 6. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment register BXdan offset register DS. Pencatatan alamat dinyatakan dengan rumus DS:BXContoh: 0100 : 0234 artinya DS mencatat 0100H, BX mencatat 0234HAlamat memori 0000 : 0234 dapat dinyatakan dengan :DS:BX+DI yaitu DS berisi 0000, BX diisi 0200H dan DI diisi 0034HPenulisan BX+DI disebut offset address terhadap segment address.• Memori pada dasarnya dapat menyimpan data dan program yang bersifatsementara..• Memori memiliki jalur data dan jalur alamat (address) agar dapat diidentifikasi olehmicroprosessor pada saat sedang membaca data dan program.• Memori memiliki kapasitas dalam satuan byte, kilobyte, megabyte, gigabyte dll.• Pengalamatan memori diatur berdasarkan pembagian segment dan offset.• Satu byte data dimemori memiliki satu alamat offset.• Penunjukkan alamat memori dilakukan oleh CPU dengan memanfaatkan registerBX.• Pencatatan alamat memori dapat ditulis dengan DS:BX atau DS:BX+DITUGAS1. Jelaskan pengertian memori?2. Jelaskan perbedaan RAM dan ROM?3. Bagaimana cara melakukan pembagian memori?4. Jelaskan cara pengalamatan memori untuk mendapatkan alamat absolute?5. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?6. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadibeberapa sistem bilangan.Uky Yudatama, S.Si, M.Kom6
  7. 7. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 3 (Tiga)Tujuan Instruksional Khusus Mengerti dan Memahami sistem bilanganPokok Bahasan Interrupt dan RegisterSub Pokok Bahasan- Pengertian Interrupt- Pengertian Register- Jenis-jenis RegisterDaftar Pustaka1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoInterrupt dan RegisterPengertian InterruptInterrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani olehmikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa olehsistem hardware computer.CPU banyak melaksanakan routin untuk melakukan pelayanan pemrosesan ataupunkoordinasi kepada IC penunjang atau chipset dan peripherals pada saat diperlukan. SehinggaCPU dapat melakukan operasi dengan 2 cara yaitu :1. Operasi dengan polling2. Opreasi dengan interruptOperasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiapkomponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukanpelayanan.Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPUbilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-menerusmenanyakan /memantau komponen itu. Setiap interupsi yang datang di kontrol oleh interruptcontroller di luar CPU. Dalam keadaan CPU terkena interupsi, maka CPU untuk sesaatmenghentikan kegiatan pelayanan utama dan beralih melayani komponen yangmenginterupsinya. Setelah selesai dilayani CPU kembali melakukan pelayanan utamanya.Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya dengancepat.Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat menerima3 macam interupsi antara lain :Uky Yudatama, S.Si, M.Kom7
  8. 8. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)2. Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapatdicegah karena berasal dari sistem board atau IC.3. Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup ataudicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal masing-masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan 2 byte untukInstruction Pointer.Dalam pemrograman assembler kita dapat melakukan interupsi secara software denganperintah INT yang dapat dilihat dalam tabel interupsi.Interrupt Software dalam PC terbagi dua yaitu :1. Interrupt BIOS (Basic Input Output Sistem)2. Interrupt DOS (Disk Operating Sistem)Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan aksespelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya diwajibkantelah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang disusun berurutan dan diberiservis number (nomor pelayanan) tersendiri.Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untukkembali ke DOS dan INT 21H untuk operasi Input/Output.Pengertian RegisterRegister tidak dapat dilepaskan dari mikroprosessor, sebab pada mikroprosessor terdapatregister yang berfungsi untuk menyimpan sementara hasil dari tahapan operasi arithmetika danlogika pada mikroprosessor. Register dalam bahasa rakitan menggunakan real mode memoryyang sesuai dengan mikroprosessor Intel generasi 8088 s/d Pentium.Register yang terdapat pada mikroprosessor Intel terdiri dari :1. General purpose register (register serbaguna)2. Pointer register (register pointer)3. Index register (register indeks)4. Segment register (register segment)5. Flag register (register status).Semua register di atas lebarnya 32 bit, kecuali register segment (CS, DS, ES, SS, FS dan GS)hanya 16 bit. Register 32 bit dapat digunakan sebagai register 16 bit, kecuali register Generalpurpose register dapat dibagi menjadi 8 bit (AL,AH, BL, BH, CL, CH, DL dan DH) yang berasaldari 16 bit (AX, BX, CX, DX). Register 32 bit diberi kode di depan register dengan E misalnya:EAX, EBX, ECX dan EDX.Macam-macam Jenis dan Fungsi RegisterBerikut ini jenis dan fungsi dari masing-masing Register yaitu :1. General Purpose Register (Register Serbaguna)Uky Yudatama, S.Si, M.Kom8
  9. 9. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Register untuk keperluan umum yang terdiri atas :a. Register AX (Accumulator register) berfungsi sebagai tempat:Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX) Memasukkan nomor layanan interupsi,untuk keperluan pemesanan sebuah layanan interupsi (register AH). Menyimpan bilangan yang dikalikan (regAL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian(register DX-AX dan EDX-EAX). Menyimpan setengah bagianterkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi(AL, AX, EAX).b. Register BX (Base Register)Base register adalah register untuk menyimpan alamat offset data yang terletakdi memori (BL, BH, BX dan EBX)c. Register CX (Counter Register)Counter register adalah register serbaguna yang berfungsi sebagai: Pencacah untuk operasi loop (CX danECX) Pencacah untuk operasi shift dan rotate(CL) Pencacah (counter) untuk operasi string(CX)d. Register DX (Data register)Data register adalah register serbaguna yang berfungsi sebagai : Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX). Penyimpan hasil pembagian (DX-AX dan EDX-EAX) Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layarmonitor.2. Pointer RegisterRegister ini untuk menunjukkan alamat sebuah data di lokasi memori, dipakai saatoperasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) danpenunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointerregister: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (InstructionPointer).3. Index RegisterSama dengan pointer register, sering digunakan untuk menunjukkan alamatsebuah data di lokasi memori pada operasi string. Macam-macam register Indexadalah : SI (Source Index), DI (Destination Index).4. Segment RegisterSegment register membentuk alamat memori untuk data. Pada operasi real modesuatu segment register akan berbeda dengan segment register pada operasiprotected mode. Yang termasuk ke dalam segment register antara lain : Code segment -> untuk menunjukkan alamt instruksi berikutnya. Data segment -> untuk menunjukkan alamat data pada transfer registerUky Yudatama, S.Si, M.Kom9
  10. 10. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Extra segment -> register tambahan untuk operasi string Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatuprosedur (CALL) dan mengarah ke program utama (RET). FS dan GS register -> register tambahan u/ segmen memori yang besar.5. Flag RegisterBerfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru sajaberlangsung. Adapun kode bit yaitu sebagai berikut : C (carry) -> 1=ada carry out 0= tdk ada carry out P (Parity) -> 1=paritas genap 0= paritas ganjil A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol S (sign) -> 1=hasilnya negatif 0=hasilnya positif T (trap) -> bila diset 1 dimungkinkan melakukan debugging. I (interrupt) -> 1= pin INTR enable 0=pin INTR disable D (direction) -> 1=cacahan turun 0=cacahan naik (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak IOPL (input-output privalege level) -> untuk protected mode NT (nested task) -> indikasi dari penggabungan dengan operasi lain. RF (resume) -> untuk debugging VF (Virtual mode) -> untuk operasi virtual pada protected mode AC (alignment check) -> untuk data word dialamati ke memori• Register merupakan tempat menyimpan data sementara yang berada dalam CPU.• Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, IndexRegister, Segment Register, Flag Register.• Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur olehpembuat mikroprosesor.TUGAS1. Jelaskan pengertian Interupt?2. Jelaskan cara-cara CPU melakukan operasi routin terhadap komponen pendukung?3. Sebutkan macam-macam interrupt pada pemrograman bahasa rakitan?4. Jelaskan pengertian Register dan sebutkan macam-macam register?5. Jelaskan semua fungsi setiap register ?6. Mengapa register dipakai dalam pemrograman bahasa rakitan/ assembler?Uky Yudatama, S.Si, M.Kom10
  11. 11. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 4 (Empat)Tujuan Instruksional Khusus Mengerti dan Memahami Pembuatan ProgramPokok Bahasan Perlengkapan Bahasa RakitanSub Pokok Bahasan- Compiler dan Linker- Perbedaan Program Com dan Exe- Label dan Komentar- Perintah MOVDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoPerlengkapan Bahasa RakitanUntuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software antara laindari DOS berupa Debug.COM atau dari Borland International berupa Turbo Assembler atauprogram lainnya. Khusus untuk membuat program dengan Turbo Assembler makaperlengkapannya terdiri dari : Compiler dan Linker yang compatible dengan computer PCXT/AT/Pentium dan processor Intel, AMD, Cyrix.Compiler dan LinkerPada pemrograman assembler dikenal istilah Compiler merupakan suatu program yang dapatmengubah suatu file berextensi .ASM (assembler) menjadi file Object berekstensi .OBJ.Compiler ini juga dapat memberitahukan isi suatu program yang akan dikompilasi apakahmengandung kesalahan (error) per baris atau perintah yang tidak sesuai. Compiler padabahasa rakitan khususnya Turbo Assembler menggunakan TASM.EXE. Source programyang dikompile dengan compiler TASM dibuat dengan teks editor DOS atau Windows dandisimpan dengan nama file .ASM di directori yang berisi TASM.EXE agar lebih mudah dalammengkompilasinya.Cara mengkompilasi program sumber (source program) menjadi program objek adalah :TASM (nama file .ASM) (nama file .OBJ)Contoh:LATIH1.ASM dikompile dengan TASM.EXE di directory A menjadi :A>TASM LATIH1.ASM LATIH1.OBJ (enter)atauUky Yudatama, S.Si, M.Kom11
  12. 12. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)A>TASM LATIH1 (enter)Maka di layar tampak:Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland InternationalAssembling file: LATIH1.ASMError messages: NoneWarning messages: NoneRemaining memory: 16kJika kita ingin membuat file objek dari source program assembler disertai dengan nomorkesalahan yang mungkin terjadi pada baris program (file .LST), maka kita dapat memberiperintah sebagi berikut:A>TASM /L nama_file.ASM (enter)Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LSTA>Edit nama_file.LST (enter)Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file COM atauEXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object code yangberupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dandisesuaikan dengan aturan DOS.Program pelayanan Linker pada Turbo Assembler adalah TLINK.EXEPenggunaan linker TLINK.EXE mernghasilkan file dengan nama file berekstensi COM atau EXEyang terdiri dari kode bahasa mesin yang telah pasti penempatannya sehingga dapat disimpan dimemori (RAM) untuk melaksanakan program. Semua proses assembly dan semua proses linkharus tidak ada kesalahan artinya error harus 0. Jika masih ada error program harus dieditdengan membuka source program (file .ASM).Untuk menjalankan file yang telah dilinker dengan TLINK.EXE, maka langsung dapat dieksekusidengan mengetik nama file di depan prompt DOS atau di run melalui Windows.Cara melakukan linker pada sebuah objek program (.OBJ) menjadi program COM atau EXEadalah : TLINK /T (nama file .OBJ) -> untuk menjadi file berekstensi OBJatauTLINK (nama file .OBJ) -> untuk menjadi file berekstensi .EXEPerbedaan file COM dan EXEProgram COM adalah salah satu jenis executable program. Ada beberapa sifat antara COMdengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing adalah sebagaiberikut:- Program COM :Uky Yudatama, S.Si, M.Kom12
  13. 13. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)1. Relatif lebih kecil dibanding EXE2. Lebih cepat dibanding EXE3. Hanya menggunakan 1 segment4. Ukuran file maksimal 64 KB5. Sulit mengakses data/prosedur di segment lain6. Dapat dibuat dengan Debug7. Source file tidak boleh menggunakan referensi segment tertentu8. Source file tidak boleh memakai data segment9. Source file tidak boleh memakai stack segment10.Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih,executable code ahrus mulai di CS:0100- Program EXE :1. Relatif lebih besar dibanding COM2. Lebih lambat dibanding dengan COM3. Bisa menggunakan lebih dari 1 segment4. Ukuran berkas tidak terbatas (sesuai kemampuan memori)5. Mudah mengakses data/prosedur di segment lain6. Tidak dapat dibuat dengan Debug dari DOS.7. Source file boleh memilih memakai segment tertentu.8. Source file boleh memakai data segment9. Source file boleh memakai stack segment10.Tidak perlu menggunakan ORG 100H untuk setiap Code segment.Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding programEXE.Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan dalam fileberekstensi .ASM misalnya: Coba1.ASMLabel dan KomentarLabel pada program merupakan address memori yang diberi nama unik misalnya :Pada alamat 0000:0400 akan diberi nama label Data_BIOS. Maka susunan penulisan Labeldalam pernyataannya adalah :SEGMENT AT 0000HORG 0400HData_BIOS LABEL WORDAtau jika kita ingin memulai suatu program dan diberi Label MULAI maka penulisannya adalah::Code SegmentAssume CS: CodeORG 100HMULAI:……….…………….Label yang dibuat untuk pengarah data (directive) sering digunakan adalah EQU singkatan dariEQUate. Kegunaannya untuk memberi nama pada angka atau konstanta yang dianggap penting.Uky Yudatama, S.Si, M.Kom13
  14. 14. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contohnya:ANGKA EQU 0B800H ; 0B800H diberi nama ANGKAKolom EQU 80 ; angka 80 diberi nama KolomSedangkan komentar pada program dibuat hanya sebagai catatan atau remark yang tidak berartiapa-apa dan tidak dieksekusi oleh CPU. Komentar pada program diberi tanda titik koma (;) diberikata-kata atau kalimat tentang program. Misalnya:; Program ini dibuat dengan Turbo Assembler (komentar); Author by :; Date :Code segmentAssume Cs: CodeOrg 100hMulai: (merupakan suatu Label)Perintah MOVPerintah ini merupakan perintah dasar pemrograman bahasa rakitan untuk memindahkan datadari lokasi asal ke lokasi tujuan berupa register atau lokasi memori.Instruksinya (mnemonic) adalah MOV dengan sintaks:MOV lokasi tujuan, lokasi asalContoh:MOV CX, 05 ; angka 5 disimpan di register CXMOV AX, 005AH ; angka 005AH disimpan di AXMOV BX, AX ; isi AX disimpan ke BXMOV [200], BX ; isi BX disimpan di lokasi memori 200MOV [BX], [200]; isi data di lokasi memori 200 disim-pan di alamat BX.• Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupaUky Yudatama, S.Si, M.Kom14
  15. 15. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER denganTASM.EXE dan TLINK.EXE• Perlengkapan lainnya adalah Teks Editor berupa EDIT.COM, SK.COM (Side Kick) atauNotepad pada Windows.• Membuat program COM dapat menggunakan 2 cara yaitu dengan Debug pada DOSatau dengan Turbo Assembler.• Label pada program merupakan nama yang dapat mewakili alamat memori (memoryaddress), sebagai directive (pengarah), start program, prosedur atau keperluanlainnya.• Komentar merupakan tanda titik koma pada program yang tidak akan dieksekusi hanyaketerangan tentang program atau baris program.• Perintah MOV merupakan perintah dasar dalam bahasa rakitan yang dipakai untukmentransfer data angka, register, alamat memori (lokasi memori)TUGAS• Cobalah untuk mengenal beberapa perlengkapan bahasa rakitan• Cobalah untuk membandingkan file COM dengan file EXE dilihat dari isi program dankapasitasnya• Buatlah macam-macam Label dan komentar pada suatu program assemblerPertemuan Ke 5 (Lima)Tujuan Instruksional KhususMengerti dan Memahami metode membuat programCOM.Pokok BahasanMembuat program COMMencetak HurufSub Pokok Bahasan- Model Program COMPembuatan dengan DEBUGPembuatan dengan Turbo Assembler (TASM)- Mencetak huruf / Membuat kalimat- Operasi Loop- Mencetak beberapa karakterDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoUky Yudatama, S.Si, M.Kom15
  16. 16. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Membuat Program COMModel Program COMProgram yang berekstensi COM (Command) merupakan program yang berisi perintahassembler berupa instruksi mnemonic yang dapat ditulis dengan Debug atau Turbo Assembler.Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 modelyaitu:Model 1:Title Nama_program ;judul programMakro MACRO ;nama makro---------------- } isi makro berada (bila ada)ENDM ;akhir makroCode SEGMENT ;(nama label segment)ASSUME CS: Code ;(register CS berisi label segment)ORG 100h ;(origin 100h menuju ke alamat offset 100h)MULAI: --------- ;(label mulai)--------- ; isi program---------INT 20h ; berhenti dan kembali ke DOSCode ENDS ; akhir penulisan program di segmentEND MULAI ; akhir dari isi programModel 2:Bentuk struktur program di bawah ini lebih ringkas dibanding dengan model 1 yaitu:.model small.codeorg 100h ;program dimulai pada alamat 100hMULAI:--------- ;(label mulai)--------- ; isi program---------INT 20h ; berhenti dan kembali ke DOSEND MULAI ;akhir programKita dapat mengganti model 1 dengan model 2 dimana pengetikan isi program sama denganmodel 1 di atas.Uky Yudatama, S.Si, M.Kom16
  17. 17. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pembuatan program dengan DebugProgram yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com atau Debug.Exe,Pengetikan program dapat langsung ditulis dalam program Debug.Caranya :- Ketik Debug di depan prompt C atau A (debug.com ada di directory tersebut)C> Debug (enter)-- Langkah berikutnya adalah memasukkan baris-baris program dengan perintahA100 (assembly) di depan prompt debug ( _ )Perintah A100 berarti instruksi pertama akan diletakkan pada alamat offset 100hpada segment memori tersebut.-A100 (enter)xxxx : 0100 _xxxx: adalah alamat segment dan 0100 adalah alamat offset dimana programakan ditempatkan mulai alamat tersebut..Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offsetxxxx : 0100 misalnya:xxxx : 0100 MOV DL,61 ;kode ASCII huruf a: 0103 MOV AH,02 ;nomor pelayanan 02H: 0105 INT 21 ;cetak di layar: 0107 INT 20 ;kembali ke DOS: 0109 _ (enter) ;menuju ke prompt debug-Alamat segment offset dari 0100 s/d 0109 akan keluar sendiri setelah kitamengetik program disertai dengan menekan enter.Setelah instruksi INT 20 tekan enter 2 kali dan program akan kembali ke promptdebug ( _ ).- Menentukan panjang program pada debug dilakukan dengan mengisi registerBX:CX. Terlihat dari mulai alamat offset awal 0100h dan alamat offset akhir010Fh, sehingga dapat diperoleh panjang programnya adalah (0109h – 0100h) =9 byte, maka register BX diisi dengan 0 dan register CX dengan 9. Jadi padaprompt Debug ketik RBX lalu isi 0, dan ketik RCX lalu isi dengan 9.-RBX (enter)BX 0000:0 enter-RCX (enter)CX 0000:9 enter- Setelah selesai ditik perintah RCX kemudian memberi nama file dengan perintahN (name). Contoh : -N COBA1.com (enter)- Untuk menyimpan program ke disket atau harddisk berikan perintah W (write)lalu enter.- Menjalankan program harus memberi instruksi G (go) dan lihat hasilnya di layar.Bila program berjalan dengan benar (tidak ada kesalahan) komputer akanUky Yudatama, S.Si, M.Kom17
  18. 18. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)memberi komentar “Program terminated normally”. Selengkapnya contoh caramembuat program dengan Debug :C> debug (enter)-A100 enterxxxx : 0100 MOV DL,61xxxx : 0103 MOV AH,02xxxx : 0105 INT 21xxxx : 0107 INT 20xxxx : 0109-rbx enterBX 0000:0 enter-rcx enterCX 0000:9 enter-N coba1.com-WWriting 000F bytes-Ga (hasil dari program assembler tampil huruf a di layar)Program terminated normally-Pembuatan dengan Macro Assembler atau TurboAssembler.Adanya keterbatasan pembuatan program dengan Debug, maka kita dapat menggunakanbantuan assembler compiler dengan Macro assembler atau Turbo Assembler (TASM.EXE danTLINK.EXE).Untuk membuat program assembler dengan Turbo Assembler kita memerlukan source programyang ditulis dengan teks editor (fasilitas untuk mengetik program). Teks editor dapat memakaiEdit.com, Side Kick (SK.com) pada DOS atau Notepad pada Windows dan lain-lain. Programassembler dapat membuat file berekstensi COM atau berekstensi EXEMENCETAK HURUFMembuat program untuk mencetak huruf dapat dilakukan dengan menyusun kode ASCII satupersatu yang ditempatkan dalam register DL sebagai tempat menyimpan data yang akanUky Yudatama, S.Si, M.Kom18
  19. 19. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 02H yangdisimpan dalam register AH.Untuk membuat program COBA2.COM dengan Turbo Assembler, maka file harus diberi namaCOBA2.ASM yang diketik dalam teks editor yang ada yaitu :Coba segmentAssume CS: CobaOrg 100hMULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanancetak huruf di layarMOV DL,41H ; isi register DL dengan 41H kode ASCII; huruf AINT 21h ; cetak huruf di layarINT 20h ; berhenti dan kembali ke DOSCoba ENDSEND MULAI- Simpan file tersebut dengan nama COBA2.ASM- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkahpembuatan program selanjutnya sehingga menjadi COBA2.COM.OPERASI LOOPMerupakan operasi pengulangan atau iterasi untuk digunakan dalam cacahan atau penampilankarakter string berulang-ulang. Perintah ini memakai register CX sebagai penentu jumlahcacahan atau jumlah pengulangan, diakhiri dengan perintah LOOP untuk lompat kembalimelakukan pengulangan.Contoh program operasi loop dengan DEBUG :xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali: 0103 MOV DL,61 ;kode ASCII huruf a: 0105 MOV AH,02 ;nomor pelayanan 02H: 0107 INT 21 ;cetak di layar: 0109 INC DL ;tambahkan isi DL dengan 1: 010B LOOP 0107 ;kembali ke alamat 0107H: 010D INT 20 ;kembali ke DOS: 010F _ (enter) ;menuju ke prompt debug-Contoh program operasi loop dengan TURBO ASSEMBLER :Coba segmentAssume CS: CobaUky Yudatama, S.Si, M.Kom19
  20. 20. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Org 100hMULAI: MOV CX,0005H ; banyaknya loop 5 kaliMOV DL,61H ; isi DL dengan kode ASCII huruf aULANG: INT 21h ; cetak huruf di layarINC DL ; tambahkan isi DL dengan 1LOOP ULANG ; kembali ke label ULANGINT 20h ; berhenti dan kembali ke DOSCoba ENDSEND MULAIMencetak beberapa hurufMencetak beberapa huruf dapat dilakukan dengan 2 cara yaitu : Menyusun beberapa huruf dalam kode ASCII satu persatu yang setiap huruf disimpan di DL Menggunakan operasi loop untuk mencetak beberapa huruf memakai instruksi INC untukmenambah isi register dengan 1 sehingga nilai DL bertambah lagi untuk dicetak.Contoh pembuatan beberapa huruf yang disusun satu persatu dengan DEBUGCAssembler> debug (enter)-A100 enterxxxx : 0100 MOV AH,02xxxx : 0103 MOV DL,41xxxx : 0105 int 21xxxx : 0107 MOV DL,42xxxx : 0109 INT 21xxxx : 010B MOV DL,43xxxx : 010D INT 21xxxx : 010F INT 20xxxx : 0111-rbx enterBX 0000:0 enter-rcx enterCX 0000:11 enter-N COBA2.COM-WWriting 0011 bytes-GABC (tampilan ABC di layar)Program terminated normallyUntuk membuat beberapa huruf yang disusun satu persatu dengan Turbo Assembler, makaprogram harus diketik dalam teks editor yang ada (EDIT atau SK) yaitu :;Menyusun beberapa huruf kode ASCIICoba segmentAssume CS: CobaOrg 100hMULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayananUky Yudatama, S.Si, M.Kom20
  21. 21. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)cetak huruf di layarMOV DL,41H ; isi register DL dengan 41H kode ASCII; huruf AINT 21h ; cetak huruf di layarMOV DL,42H ; isi register DL dengan 42H huruf BINT 21H ; cetak huruf di layarMOV DL,43H ; isi register DL dengan 43H huruf CINT 21h ; cetak huruf di layarINT 20h ; berhenti dan kembali ke DOSCoba ENDSEND MULAI- Simpan file tersebut dengan nama COBA3.ASM- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatanprogram selanjutnya sehingga menjadi COBA3.COM.Contoh pembuatan beberapa huruf memakai operasi loop dengan DEBUGCAssembler>debug (enter)-A100 (enter)xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali: 0103 MOV DL,61 ;kode ASCII huruf a: 0105 MOV AH,02 ;nomor pelayanan 02H: 0107 INT 21 ;cetak di layar: 0109 INC DL ;tambahkan isi DL dengan 1: 010B LOOP 0107 ;kembali ke alamat 0107H: 010D INT 20 ;kembali ke DOS: 010F _ (enter) ;menuju ke prompt debug-RCX:F-RIP:100-N COBA3.COM-WWriting 000F bytes-Gabcde (tampilan ABC di layar)Program terminated normallyUntuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kitadapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas.Langkah-langkah pembuatan program bahasa rakitan dengan TurboAssembler sebagai berikut :1. Buat source program dengan teks editor dan beri nama file berekstensi .ASMdan simpan didirektory yang berisi TASM.EXE dan TLINK.EXE.2. Compile source program ASM dengan perintah compiler TASM dari TurboAssembler menjadi Objek program (file akan berekstensi OBJ). caranya :C>TASM KAMPUS>ASM (enter)Uky Yudatama, S.Si, M.Kom21
  22. 22. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)3. Compile source program ASM dengan perintah compiler TASM dari TurboAssembler menjadi Objek program (file akan berekstensi OBJ). caranya :C>TASM KAMPUS.ASM (enter)4. Setelah menjadi coba1.obj, kita harus me-link berkas objek menjadi COMdengan perintah TLINK. Caranya : C>TLINK /t KAMPUS (enter)5. Jika pada pengetikan TLINK tidak diberi tanda /t , maka objek program akanmenjadi file berekstensi EXE.6. Coba1.com dapat langsung dieksekusi dari DOS prompt untuk melihat hasilnyadi layar monitor dengan mengetik C>KAMPUS (enter)7. Jika terdapat kesalahan, Turbo Assembler akan memberi tahu letak kesalahanpada baris program dan diedit dengan membuka kembali teks editor dan file.ASM8. Perbaiki program yang salah, kemudian dicompile ulang seperti langkah 2 dan 3.• Membuat program COM dapat dengan Turbo Assembler dapat dilakukan dengan 2model pilihan yaitu model 1 (Code segment) atau model 2 (Model Small).• Membuat program dengan debug harus diketik satu persatu, jika ada kesalahan makaprogram harus diketik dari awal lagi.• Membuat program dengan Turbo Assembler jauh lebih baik, karena jika ada kesalahankita tidak perlu lagi mengetik ulang tinggal kita perbaiki program yang mengalamikesalahan tadi melalui teks editor dan dicompile ulang.• Program mencetak huruf memakai kode ASCII yang disusun satu persatu denganmemanfaatkan pelayanan interupsi INT 21H servive numer 02H.• Operasi Loop digunakan untuk melakukan pengulangan atau iterasi dan banyaknyanilai pengulangan ditentukan oleh nilai register CX sebelumnya.• Program membuat beberapa huruf dapat disusun satu persatu dengan kode ASCIIatau dengan memanfaatkan operasi loop.TUGAS1. Buatlah program mencetak huruf nama sendiri dengan Debug dan Turbo Assemblerdengan menyusun kode ASCII untuk setiap hurufnya minimal 10 huruf.2. Buatlah juga program mencetak kalimat bio data mahasiswa.Uky Yudatama, S.Si, M.Kom22
  23. 23. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 6 (Enam)Tujuan Instruksional KhususMengerti dan memahami metode operasi arithmetikadalam program assembler.Pokok Bahasan Operasi ArithmetikaSub Pokok Bahasan- Penambahan (ADD)- Pengurangan (SUB)- Pembandingan (CMP)- Perkalian (MUL)- Pembagian (DIV)Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3. Microprocessor Programmer’s, referensi Intel CoOPERASI ARITMATIKAInstruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan(comparison), perkalian (multiplication), pembagian (division).Aturan Penulisan Operasi Arithmetika (sintaks)Penjumlahan (Addition)a. Instruksi ADD -> ADD reg1, reg2 atau ADD reg, [alamat]Hasil penjumlahan disimpan di reg1.Contoh:ADD AX, BX ;hasilnya disimpan di AXb. Instruksi INC -> INC reg atau INC [alamat]Data pada reg atau [alamat] bertambah 1Contoh:INC DX ;hasil DX = DX + 1c. Instruksi ADC -> ADC reg1, reg2 atau ADC reg, [alamat]Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan direg1.Uky Yudatama, S.Si, M.Kom23
  24. 24. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contoh:ADC AH, AL ;AH=AH + AL + carryPengurangan (Subtraction)a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat]Hasil pengurangan disimpan di reg1.Contoh:SUB CX, BX ;hasilnya disimpan di CXb. Instruksi DEC -> DEC reg atau DEC [alamat]Data pada reg atau [alamat] akan bertambah 1Contoh:DEC CX ;hasil CX = CX + 1c. Instruksi SBB -> SBB reg1, reg2 atau SUB [alamat], regPengurangan biasa yang hasilnya dikurangi dengan bit carry. Hasilnya disimpan direg1 atau [alamat].Contoh:SBB AH, AL ;hasil AH= AH – AL – carryPembandingan (CMP / Comparison)Instruksi CMP -> CMP reg1, reg2 atau CMP reg, dataMembandingan isi reg1 dengan reg2 atau data.Contoh:CMP DL, BL ;bandingkan isi DL dengan BLPerkalian (Multiplication)Instruksi MUL -> MUL reg atau MUL [alamat]Perkalian antara AL (8 bit) atau AX (16 bit) dengan isi reg atau [alamat],hasilnya disimpan di AX (8 bit) atau DX-AX (16 bit).Contoh:MUL DL ;isi AL (8 bit) dikali dengan DL, hasil di AX.MUL BX ;isi AX (16 bit) dikali dengan BX, hasil di DX-AXUky Yudatama, S.Si, M.Kom24
  25. 25. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pembagian (Division)a. Pembagian 8 bit -> DIV reg atau DIV [alamat]Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data padalokasi memori, hasilnya disimpan di AL sisanya di AH.Contoh:DIV DL ;isi AX dibagi DL,hasil di AL sisanya di AH.b. Pembagian 16 bit -> DIV reg (16 bit) atau DIV [alamat]Pembagian dividen (disimpan di DX-AX) dengan divisor (reg 16 bit) atau data padalokasi memori, hasilnya disimpan di AX sisanya di DX.• Operasi arithmetika dalam bahasa rakitan ditulis dengan mnemonic ADD, SUB, INC,DEC, MUL, CMP dan DIV.• Penulisan perintah operasi arithmetika harus mengikuti aturan penulisan (sintaks)untuk yang bekerja pada kondisi 8 bit dan 16 bit.• Untuk pembuatan program arithmetika bisa dilakukan dengan mengetik pada debugdiakhiri dengan INT 20. Hasil proses dilihat pada saat kita mengetik perintah T (Trace)dan D (data alamat) di depan prompt debug (-). Angka-angka yang tertera pada setiapregister dicatat pada tabel AX, BX, CX dan DX.TUGASBuatlah beberapa contoh program penambahan, pengurangan, pembandingan, penambahandengan satu, pengurangan dengan satu, perkalian dan pembagian (8 bit dan 16 bit).Program dibuat dengan debug dan hasilnya dites dan diuji dengan perintah T (trace) padasetiap prompt debug.Uky Yudatama, S.Si, M.Kom25
  26. 26. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 7 (Tujuh)Tujuan Instruksional KhususMengerti dan Memahami Pointer dan fungsi bit dalamoperasi logika dan pergeseran bit.Pokok Bahasan Operasi Logika dan Pergeseran BitSub Pokok Bahasan- Operasi/Gerbang NOT- Operasi/Gerbang AND- Operasi/Gerbang OR- Operasi/Gerbang XOR- TEST- SHL & SHR- ROL & RORDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoOPERASI LOGIKA DAN PERGESERAN BITOperasi NOT dan NEG -> NOT/NEG reg atau NOT/NEG [alamat]Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jikadiberi NEG seluruh bit akan menjadi komplemen-2Contoh:NOT CL ;isi CL di-NOT-kanNOT [BP] ;isi di [alamat] BP akan di-NOT-kanNEG CL ;isi CL di-NEG-kan (komplemen-2)Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat]Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat]Contoh:AND CL, 45h ;isi CL di-AND-kan dengan 45hAND AX, BX ;isi AX di-AND-kan dengan BXAND BL,[250] ;isi BL di-AND-kan dengan isi di lokasi 250hUky Yudatama, S.Si, M.Kom26
  27. 27. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat]Register 1 akan di-OR-kan dengan register 2 atau data/[alamat].Contoh:OR DH, 25h ;isi DH di-OR-kan dengan 25hOR CX, BX ;isi CX di-OR-kan dengan BXOperasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat]Register 1 akan di-XOR-kan dengan register2 atau data/[alamat]Contoh:XOR BL, 25h ;isi BL di-XOR-kan dengan 25hXOR DX, BX ;isi DX di-XOR-kan dengan BXOperasi TEST -> TEST reg1, reg2/data atau TEST reg, [alamat]Mirip dengan AND, hanya kedua register tidak berubah, yang berubah hanya bit-bit flag register.Contoh:TEST CL, 25h ;isi CL di-AND-kan dengan 25h tanpa mengubah isi CL.Instruksi SHL (Shift Left) -> SHL reg, CLIsi register di geser ke kiri sebanyak nilai CL.Contoh:MOV CL, 2hSHL AH, CL ;isi AH digeser ke kiri 2 langkah.Instruksi SHR (Shift Right) -> SHR reg, CLIsi register di geser ke kanan sebanyak nilai CL.Contoh:MOV CL, 2hSHR AH, CL ;isi AH digeser ke kanan 2 langkahRotasi (Rotate)Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuaiperintah yang diberikan.Uky Yudatama, S.Si, M.Kom27
  28. 28. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Instruksi ROL (Rotate Left) -> ROL reg, CLIsi register di rotasi ke kiri sebanyak CLContoh:ROL AH, 2h ;isi AH dirotasi ke kiri 2 langkahInstruksi ROR (Rotate Right) -> ROR reg, CLIsi register di rotasi ke kanan sebanyak CLContoh:ROR AH, 2h ;isi AH dirotasi ke kiri 2 langkah• Operasi logika merupakan operasi yang dilakukan oleh CPU pada bagian ALUantara lain : AND, OR, NOT, XOR dan TEST.• Selain operasi logika di dalam CPU juga terdapat operasi Pergeseran danperputaran bit antara lain : SHL, SHR, ROL dan ROR.• Operasi ini sangat penting untuk memanipulasi dan mengkonversi bit-bit pada suatudata.TUGAS1. Jelaskan penggunaan operasi NOT, AND, OR, XOR dan TEST.2. Bagaimana cara memutar isi data hexadesimal dalam suatu register.3. Buatlah program pendek dengan DEBUG beberapa contoh operasi logika danpergeseran bit data.Uky Yudatama, S.Si, M.Kom28
  29. 29. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 8 (Delapan)Tujuan Instruksional Khusus Mengerti dan Memahami Metode Pengalamatan Data.Pokok Bahasan Mode Pengalamatan DataSub Pokok Bahasan- Register Addressing- Immediate Addressing- Direct Addressing- Direct Addresing with displacement- Indirect Addressing- Relative Addressing- Base Plus Index Addressing- Base Relative Plus Index AddressingDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoMODE PENGALAMATAN DATAPengertian Pengalamatan DataPengalamatan data (addressing mode) adalah perpindahan data dari lokasi asal ke lokasitujuan.Lokasi asal berupa register, lokasi memori atau data mentah (kode hexadesimal / bilangan).Lokasi tujuan berupa register atau lokasi memori. Perintahnya memakai MOV.Mode PengalamatanBeberapa mode pengalamatan antara lain:> Register AddressingMerupakan penyalinan data antar register (transfer ergister)MOV reg1, reg2Contoh:MOV AX, BX ; isi BX disalin ke AXMOV SI, DI ; isi DI disalin ke SI> Immediate AddressingMerupakan penyalinan suatu data ke registerUky Yudatama, S.Si, M.Kom29
  30. 30. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV reg, dataContoh:MOV AH, 02h ;02h disalin ke AHMOV DL,’A’ ; karakter A disalin ke DLMOV AX,’AB’ ;karakter AB disalin ke AX> Direct AddressingMerupakan penyalinan data dari lokasi memori tertentu ke accumulator (AX, AH atau AL) atausebaliknya.MOV reg, [alamat]MOV [alamat], regContoh:MOV AL, [0100h] ;isi data di alamat memori 100h ke ALMOV [0250h], AX ;isi AX disalin ke alamat 0250h> Direct Addressing with DisplacementPada dasarnya sama dengan Direct Addressing, tetapi tidak hanya memakai register AL atau AX.MOV reg, [alamat]MOV [alamat], regContoh:MOV DL, [0100h] ;isi data di alamat memori 100h ke DLMOV [0250h], DX ;isi DX disalin ke alamat 0250h> Indirect AddresingPenyalinan data secara tidak langsung dari lokasi alamat yang ditunjuk oleh BP, BX, DI atau SIke suatu register atau sebaliknya.MOV reg, [reg]MOV [reg], regMOV [reg], [reg]Contoh:MOV EAX, [BX] ;isi data di lokasi memori [DSx10h+BX] ke register EAXMOV [CX], AX ;isi data di AX disalin ke lokasi memori [DSx10h +CX}Uky Yudatama, S.Si, M.Kom30
  31. 31. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)> Relative AddressingMerupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP, BX atau SI dan DIditambah displacement ke register tujuan atau sebaliknya.MOV reg, [base+disp]MOV [base+disp], regContoh:MOV AX, [BX+10h]MOV [BX+20h], CXMOV [BP+30h], CHMOV [DI+50h], DL> Base Plus Index AddressingMerupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index(SI atau DI) ke register tujuan atau sebaliknya.MOV reg, [base+index]MOV [base+index], regContoh:MOV DX, [BX+SI]MOV [BP+DI], AX> Base Relative Plus Index AddressingMerupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index(SI/DI) + displacement atau sebaliknya.MOV reg, [base+index+disp]MOV [base+index+disp], regContoh:MOV DX, [BX+SI+10h]MOV [BP+DI+20h], AX• Pengalamatan data merupakan perpindahan data dari lokasi asal ke lokasi tujuan.• Setiap lokasi dapat berupa register, lokasi memori.• Perintah untuk melakukan mode pengalamatan data adalah MOV.Uky Yudatama, S.Si, M.Kom31
  32. 32. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)• Penggunaan perintah MOV harus sesuai dengan aturan mode pengalamatan data.TUGAS1. Jelaskan pengertian tentang pengalamatan data!2. Sebutkan macam-macam mode pengalamatan data!3. Jelaskan pula masing-masing perbedaan mode pengalamatan data antara yang satudengan yang lainnya!4. Buatlah beberapa contoh program pendek yang isinya terdapat beberapa modepengalamatan data!Pertemuan Ke 9 (Sembilan)Tujuan Instruksional Khusus Mengerti dan Memahami Metode Mencetak kalimat.Pokok Bahasan Mencetak kalimat dan Operasi string.Sub Pokok Bahasan- Mencetak dengan DOS- Operasi String- Mencetak Kalimat dengan atributnya- Pengaturan atributDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoMENCETAK KALIMATMencetak kalimat dengan DOSUntuk membuat kalimat, program harus diketik dengan teks editor (EDIT / NOTEPAD atauSK.COM) dan harus mengikuti model 1 atau model 2 di atas menggunakan pelayanan interupsiUky Yudatama, S.Si, M.Kom32
  33. 33. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)21H nomor servis AH=09H. Mencetak kalimat dalam sistem operasi DOS memerlukan tambahanmisalnya letak posisi kalimat berada pada baris dan kolom tertentu, sehingga kita harusmemakai pelayanan interupsi INT 10H nomor servis AH=02H dan AL=0 yang berfungsi mengaturposisi kalimat di layar. Nilai baris dan kolom harus dimasukkan ke dalam register DH (baris) danregister DL (kolom). Total baris di layar adalah 24 dan total kolom di layar adalah 80. Untukmencetak kalimat di tengah layar, maka barisnya adalah 12, sedangkan kolomnya disesuaikandengan jumlah kalimat yang akan dicetak.Isi kalimat disimpan dalam label misalnya KALIMAT dengan diberi spesifikasi data berupa DB(define byte) yang diproses dalam byte diawali dan diakhiri dengan tanda ‘ (petik) dan pada akhirtulisan diberi tanda dolar $ untuk batas tulisan.Misalnya kalimat KAMPUS STMIK BANI SALEH BEKASI dicetak di layar, maka kita harusmengikuti struktur program atau model 1 seperti contoh dibawah ini :Coba segmentAssume CS: CobaOrg 100hMULAI: MOV AH,09H ; isi register AH dengan 09h untuk pelayanancetak kalimat di layarMOV DX, OFFSET KALIMAT ; isi register DX dengan LABELKALIMAT 16 BITINT 21h ; cetak KALIMAT di layarINT 20h ; berhenti dan kembali ke DOSKALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di labelCoba ENDSEND MULAI- Simpan file tersebut dengan nama KAMPUS.ASM- Setelah file disimpan dengan nama KAMPUS.ASM lalu dicompile dan di-link mengikutilangkah pembuatan program selanjutnya sehingga menjadi KAMPUS.COM.Atau dapat juga membuat program kalimat dengan bentuk model 2 yang lebih ringkas berikut ini:.model small.codeorg 100h ; program dimulai pada alamat 100hMULAI:MOV AH,09H ; isi register AH dengan 09h untuk; pelayanan cetak kalimat di layarMOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL; KALIMAT 16 BITINT 21h ; cetak KALIMAT di layarINT 20h ; berhenti dan kembali ke DOSKALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di labelEND MULAI ; akhir programContoh 2:.model small.codeUky Yudatama, S.Si, M.Kom33
  34. 34. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)org 100hMULAI: ; mencetak kalimat di tengah layarMOV AH,02HMOV AL,0MOV BH,0MOV DH, 12MOV DL, 30INT 10HMOV AH, 09HMOV DX, OFFSET KALIMATINT 21HINT 20HKALIMAT DB ‘STMIK BANI SALEH$’END MULAITampilan kalimat di layar masih terlihat belum sempurna, karena tulisan yang ada di atassebelumnya tidak menggulung ke atas, sehingga layar perlu dibersihkan dengan CLS dari DOSatau membuat program bersih layar sendiri dengan pelayanan interupsi INT 10H nomor servis06H. Adapun penambahan program bersih layar sebelum kalimat dicetak di tengah layar adalahsebagai berikut:.model small.codeorg 100hMULAI: ; bersih layarMOV AH,06HXOR CX,CXMOV AL,0MOV BH,07H ;background layar dasar hitam tulisan putihMOV DH,24MOV DL,79INT 10H; mencetak kalimat di tengah layarMOV AH,02HMOV AL,0MOV BH,0MOV DH,12MOV DL,30INT 10HMOV AH,09HMOV DX, OFFSET KALIMATINT 21HINT 20HKALIMAT DB ‘STMIK BANI SALEH$’END MULAIOPERASI STRINGString adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasiini register SI dan DI punya peranan khusus.SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatatalamat atau tempat hasil manipulasi string.Uky Yudatama, S.Si, M.Kom34
  35. 35. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Perintah yang dipakai:CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE,STOS, STOSBPengkopian STRINGMOVS dipakai untuk mengkopi data dari DS:SI menuju ke ES:DI, Hasil yang dicopy dapat dicetakke layar.Contoh:.model small.codeorg 100hMULAI: JMP STARTKAL DB ‘STMIK BANI SALEH$’BUFF DB 17 dup(?)START: LEA SI, KAL ;pindahkan isi KAL ke register SILEA DI, BUFF ;pindahkan isi BUFF ke registrer DICLD ;Clear Direction Flag menentukan instruksi;pada register SI dan DI secara otomatis;bertambah 1 (diincrement)MOV CX, 18 ;looping sebanyak 18 xUlang: MOVS ES:BUFF, KAL ;copy isi string KAL ke BUFFLOOP Ulang ;kembali ke ulangMOV AH, 09hLEA DX, BUFF ;pindahkan isi BUFF ke register DXINT 21h ;cetak isi DX ke layarINT 20hEND MULAIMencetak kalimat dengan atributnyaUntuk mencetak kalimat dengan atribut terdapt beberapa persyaratan antara lain:1. Menggunakan fungsi dari BIOS melalui INT 10H2. Nilai AX = 1300h3. Nilai register BL merupakan nilai atribut yang ingin ditampilkan4. Nilai register BH merupakan halaman tampilanUky Yudatama, S.Si, M.Kom35
  36. 36. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)5. Nilai DL adalah posisi kolom layar yang akan dicetak6. Nilai DH adalah posisi baris layar yang akan dicetakFungsi ini tidak mengenal batas tulisan “$” seperti INT 21H nomor service 09H sehingga kitaharus mengisi nilai CX sebanyak karakter dalam kalimat. Sedangkan register ES:BP digunakanuntuk mencatat alamat dari kalimat yang akan dicetak di layar.Pengaturan atributNilai atribut untuk mencetak kalimat di layar diatur agar mendapatkan hasil sesuai yangdiharapkan misalnya sebagai berikut : Nilai atribut tulisan disimpan dalam register BL=10010101B Nilai AX= 1300H untuk nomor service AH=13H dan AL=00H Nilai BH=0 untuk halaman tampilan 0 Nilai DL=20 untuk posisi kolom di layar Nilai DH=12 untuk posisi baris di layar Nilai CX=35 untuk banyaknya kalimat yang dicetak di layarNilai di atas, kecuali untuk AX=1300H boleh diubah/dimodifikasi sesuai dengan permintaanpemakai.Contoh:;Program untuk mencetak kalimat dengan atributnya;Pengaturan atribut pada nilai BL=95H atau BL=10010101B;halaman 0 pada BH;baris 12 di layar;kolom 20 di layar.model small.codeorg 100hMULAI: JMP AWALKAL DB ‘MENULIS KALIMAT DENGAN ATRIBUTNYA’AWAL:MOV AX,1300H ;service 13H subfungsi AL=0MOV BL,10010101B ;atribut tulisanMOV BH,00 ;halaman tampilanMOV DL,20 ;posisi kolomMOV DH,12 ;posisi barisUky Yudatama, S.Si, M.Kom36
  37. 37. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV CX,35 ;banyak karakter yang akan dicetakLEA BP, KAL ;ES:BP untuk meletakan alamat stringINT 10HINT 20HEND MULAI• Program membuat kalimat menggunakan pelayanan interupsi 21H service number09H dan menyimpan isi kalimat pada Label DB (Define Byte), DW (Define Word), DD(Define Double Word), DQ (Define Quad Word).• Untuk pembuatan program mencetak beberapa kalimat yang berurutan ke bawah,maka pada setiap label yang diberi tanda $ harus dibubuhkan angka 13, 10 untukturun baris dan ditempatkan pada kolom awal ( ,13,10,’$’).• Mencetak kalimat di layar dapat dilakukan dengan berbagai macam cara.Penggunaan INT 10H untuk mengatur operasi layar agar mencetak kalimat menjadilebih teratur sesuai letak baris dan kolom di layar.• Operasi string digunakan untuk manipulasi string, peletakan alamat string,pengcopian string ke buffer atau tempat sementara yang ditentukan oleh kita.• Salah satu cara mencetak kalimat di layar antara lain dengan atribut memanfaatkannomor pelayanan AH=13H INT 10H• Pengaturan atribut untuk mencetak di layar dipakai untuk menghasilkan tampilanberupa kalimat yang disimpan dalam byte, word atau double word denganmeletakkan string pada register ES:BP sebagai pencatat alamat string.1. Buatlah program tampilan SELAMAT DATANG DI STMIK BANI SALEH di tengah layar.2. Bagaimana cara melakukan pengkopian string menggunakan perintah MOVSB?3. Buatlah salah satu contoh program pengkopian string untuk dicetak dua kali!4. Buatlah program mencetak kalimat dengan atributnya dimana kalimat tersebut harusdisertai warna dasar hitam tulisan merah.Uky Yudatama, S.Si, M.Kom37
  38. 38. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 10 (Sepuluh)Tujuan Instruksional KhususMengerti dan Memahami operasi jump/lompatan danoperasi stack.Pokok BahasanOperasi Jump (Lompatan)Operasi Stack.Sub Pokok Bahasan- Pengertian operasi jump /lompatan- Jenis-jenis instruksi jump- Pengertian operasi stack- Operasi perpindahan data selain MOVDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoOPERASI JUMP (Lompatan)Pengertian Operasi JumpInstruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentudan mengeksekusi instruksi yang dikehendaki. Ada 2 jenis instruksi dalam operasi jump yaitu:lompat tak bersyarat dan lompat bersyarat.Lompatan tak bersyaratInstruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun,sehingga program langsung dapat kita arahkan menuju lokasi memori atau label denganperintah atau instruksi JMPAturan penulisannya : JMP lokasi memori/labelContoh :.model small.codeorg 100hMULAI: MOV AX, 1234HMOV BX, 4321HJMP TERUSTERUS:ADD AX, BXSUB AX,3JMP TERUS2TERUS2:INT 20HEND MULAIUky Yudatama, S.Si, M.Kom38
  39. 39. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Ada 3 jenis instruksi lompatan tak bersyarat yaitu: Lompatan pendek (short jump) -> JMP SHORT disp yaitu melakukan lompatanmaksimal sejauh 127 byte.Contoh:JMP SHORT 04h ;melakukan lompatan sejauh 4 byte Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebihpanjang maksimal 32 Kb.Contoh:JMP 0200h ;melakukan lompatan ke lokasi memori 200h Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatanke seluruh daerah memori.Contoh:JMP FAR nH ;melakukan lompatan jauh ke lokasi tertentuLompatan bersyaratYaitu lompatan pendek yang dilakukan ke seluruh daerah memori dalam segmen memori yangsama dan terjangkau oleh operasi ini. Instruksi ini menggunakan CMP untuk membandingkankondisi yang dicek, sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatanbersyarat, dimana instruksi lompatan bersyarat antara lain : JA (Jump if Above) ; lompat bila operand 1 > operand2 (bilangan tak bertanda) JAE (Jump if Above or Equal); lompat bila operand 1 >= operand2 (bilangan takbertanda) JB (Jump if Below) ; lompat bila operand 1 < operand2 (bilangan tak bertanda) JBE (Jump if Below or Equal); lompat bila operand 1 <= operand2 (bilangan takbertanda) JG (Jump if Greater); lompat bila operand 1 > operand2 (bilangan bertanda) JGE (Jump if Greater or Equal) ; lompat bila operand 1 >= operand2 (bilanganbertanda) JL (Jump if Less) ; lompat bila operand 1 < operand2 (bilangan bertanda) JLE (Jump if Less or Equal) ; lompat bila operand 1 <= operand2 (bilangan bertanda) JC (Jump if Carry) ; lompat bila ada bawaan JNC (Jump if No Carry) ; lompat bila tidak ada bawaan JE atau JZ (Jump if Equal)/(Jump if Zerro) ; lompat bila operand 1 = operand 2 JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero); lompat bila operand 1 <>operand 2 JO (Jump on Overflow) ; lompat bila terjadi overflow JNO (Jump if No Overflow); lompat bila tidak terjadi overflow JS (Jump On Sign) ; lompat bila negatif JNS (Jump if No Sign) ; lompat bila positif JP atau JPE (Jump on Parity)/(Jump if ParityEven) ; lompat bila berparitas genap JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd); lompat bila berparitas ganjil JCXZ (Jump if CX is Zero) ; lompat bila CX=0Uky Yudatama, S.Si, M.Kom39
  40. 40. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas)Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untukmembandingkan isi register untuk dilompati sesuai kondisi.Contoh 1:MOV AX, 0010h ;isi AX dengan 10hMOV BX, 0012h ;isi BX dengan 12h106: CMP AX,BX ;bandingkan isi AX dengan BXJE 10D ;bila sama lompat ke alamat 10DINC AX ;bila tidak tambahkan isi AX dengan 1JMP 106 ;kembali ke alamat 10610D: ADD AX,3 ;tambahkan isi AX dengan 3INT 20h ;kembali ke prompt DOSKita tinggal mengganti instruksi lompat sesuai kebutuhan, apakah memenuhi syarat (Y) atautidak memenuhi syarat (T).Contoh 2:.model small.codeorg 100hMULAI: MOV BX, 0000HULANG3: MOV DL, 41HULANG2: MOV CX,0003HULANG1: MOV AH,02HINT 21HLOOP ULANG1INC DLCMP DL,5BHJNE ULANG2MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHINT 21HINC BXCMP BX,000BHUky Yudatama, S.Si, M.Kom40
  41. 41. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)JLE ULANG3INT 20HEND MULAIOPERASI STACKPengertian Operasi StackStack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari registerhanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi daristack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambildata dari stack).Instruksi PUSH untuk operasi stackMerupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari datamentah, register atau isi lokasi memoriSintaks: PUSH regPUSH [lokasi memori]PUSH dataContoh:PUSH BX ; menyimpan isi BX ke stack (16 bit)PUSH EAX ; menyimpan isi EAX ke stack (32 bit)PUSH [DI] ; menyimpan isi dari lokasi memori beralamat di[DSx10h+DI] ke stackPUSH 12h ; menyimpan data 12h ke stackInstruksi POPMerupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalamregister atau lokasi memoriSintaks: POP regPOP [alamat]POPF ;mengambil isi stack dan ditempatkan di reg flagContoh:POP BX ;mengambil isi stack dan ditempatkan di BXPOP [DI] ;mengambil isi stack dan ditempatkan ke alamat DS:DIUky Yudatama, S.Si, M.Kom41
  42. 42. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Berikut ini contoh program lengkap untuk operasi stack:;Cara kerja stack.model small.codeorg 100hMULAI: JMP STARTKAL DB ‘STMIK BS$’TUKAR DB 13,10,’$’Stacks DW ?START: LEA DX, KALMOV Stacks, DXMOV AH, 09hLEA DX, TUKARINT 21hMOV DX,StacksINT 21hINT 20hEND MULAIDari contoh program di atas kita modifikasi menjadi:.model small.codeorg 100hMULAI: JMP STARTKAL DB ‘STMIK BS$’TUKAR DB 13,10,’$’START: LEA DX, KALPUSH DXMOV AH,09hINT 21hLEA DX, TUKARINT 21hPOP DXINT 21hINT 20hEND MULAIInstruksi PUSHFMerupakan instruksi untuk memasukkan isi register flag ke dalam stackSintaks: PUSHFPerpindahan data selain MOVBeberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA,perpindahan data string (LODS, STOS dan MOVS)Aturan penulisan operasi perpindahan data (sintaks)Instruksi XCHG (exchange)Uky Yudatama, S.Si, M.Kom42
  43. 43. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasimemori. Tidak berlaku untuk antar lokasi memori.Sintaks: XCHG reg, regXCHG reg, [alamat]Contoh:XCHG AX, BX ;menukar isi AX dengan BXXCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DIXCHG [SI], CH ;menukar isi lokasi memori dengan CHInstruksi LEA (Load Effective Address)Berfungsi untuk mengambil alamat suatu data pada lokasi memori dan meletakkannya di register16 bit.Sintaks: LEA reg, [alamat]LEA reg, variableContoh:LEA BX, [DI] ;isi alamat di reg DI diambil dan disimpan di BXLEA BX, VAR1 ;isi alamat offset data dengan label VAR1 diambil dandisimpan di BXLEA AX, [SI] ;isi data di lokasi memori SI diambil dan disimpandi AXInstruksi LODS (Load String)Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkanoleh isi register SI ke accumulator (AL, AX) akan di-increment (+1) atau decrement (-1). Instruksiini ditambah dengan B bila memindahkan byte, W (word) atau D (double word).Contoh:LODSB ; data byte di lokasi memori SI dipindah ke reg ALLODSW ; data word di lokasi memori SI dipindah ke reg AXLODSD ; data doubleword di lokasi SI dipindah ke reg EAXLODS DAT1 ;data label DAT1 dipindah ke AL (byte)LODS DAT2 ;data label DAT2 dipindah ke AX (word)LODS DAT3 ;data label DAT3 dipindah ke EAX (doubleword)Uky Yudatama, S.Si, M.Kom43
  44. 44. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Instruksi STOS (Store string)Berfungsi memindahkan string pada AL, AX, EAX ke ekstra segment yang alamat offsetnyaditunjukkan oleh isi DI (ES:DI)Contoh:STOSB ;isi AL dipindah ke lokasi memori DISTOSW ;isi AX dipindah ke lokasi memori DISTOS DAT1 ;isi AL dipindah ke label DAT1 di alamat DIInstruksi MOVS (Move string)Memindahkan isi string dari suatu lokasi memori ke lokasi memori yang lain berupa byte, wordatau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI.Contoh:MOVSB ;isi lokasi memori berisi byte ke lokasi memori lainMOVSW ;isi lokasi memori berisi word ke lokasi memori lainMOVSD ;isi lokasi memori berisi double word ke lokasi lain• JMP (lompatan) merupakan instruksi untuk melompat ke bagian tertentu danmengeksekusi instruksi berikutnya.• Ada dua jenis lompatan yaitu lompatan tanpa syarat dan lompatan dengan syarat.• Lompatan tanpa syarat terdiri dari 3 yaitu : Short Jump, Near Jump dan Far Jump• Lompatan dengan syarat merupakan proses pengambilan keputusan atau operasipercabangan dengan diikuti oleh instruksi CMP dan instruksi Lompat bersyarat, yaitumelakukan perbandingan terlebih dahulu suatu isi register apabila telah memenuhisyarat, maka lompatan bila dijalankan.• Ada 22 jenis lompatan bersyarat yang digabungkan dengan operasi logika.• Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).• Operasi stack sangat penting dipakai untuk menaruh isi data (PUSH) yang suatusaat dapat diambil kembali dari stack (POP).• Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakanalternatif yang dapat dipilih untuk mencetak kalimat.Uky Yudatama, S.Si, M.Kom44
  45. 45. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)TUGAS1. Sebutkan 2 jenis operasi Jump dan berikan contohnya masing-masing!2. Bagaimana cara melakukan lompatan dalam lompatan dengan memakai operasi loop?3. Buatlah program lompatan bersyarat untuk membandingkan karakter tertentu!4. Buatlah program mencetak kalimat dengan mengganti perintah MOV DX, OFFSETdengan LEA DX.Pertemuan Ke 11 (Sebelas)Tujuan Instruksional KhususMengerti dan Memahami input data keybord berupadaASCII atau Extended.Pokok Bahasan Input data dari Keyboard.Sub Pokok Bahasan- Masukan satu karakter- Mendeteksi penekanan tombol- Masukan kalimat dari keyboardDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoINPUT DATA DARI KEYBOARDMasukan satu karakterMemasukan data/input data 1 karakter dapat kita buat dengan pelayanan interupsi 21H nomorservice 01H dalam register AH. Instruksi yang umum dipakai adalah:MOV AH, 01HINT 21HUky Yudatama, S.Si, M.Kom45
  46. 46. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register ALberupa kode ASCII.Contoh:;Program input 1 karakter dari keyboard.model small.codeorg 100hMULAI: JMP STARTTanya db ‘Jawablah pertanyaan di bawah ini ! ‘,13,10db ‘Apakah anda seorang laki-laki? (Y/T)’,13,10db ‘Jawaban anda : $’Jawab1 db 13,10,’Anda adalah seorang laki-laki’,13,10,’$’Jawab2 db 13,10,’Anda adalah seorang wanita’,13,10,’$’START: MOV AH, 09HLEA DX, TanyaINT 21hULANG:MOV AH, 01H ;input dari keyboard 1 hurufINT 21hCMP AL, ‘Y’JE LAKICMP AL, ‘y’JE LAKICMP AL, ‘T’JE WANITACMP AL, ‘T’JE WANITAJMP ULANGWANITA:MOV AH,09HLEA DX,Jawab2INT 21HJMP SELESAILAKI:MOV AH,09HLEA DX,Jawab1INT 21HSELESAI:INT 20hEND MULAIMendeteksi penekanan tombolUntuk mendeteksi adanya penekanan tombol tertentu dari keyboard digunakan input hurufwithout echo. Ada tiga jenis input per huruf without echo yaitu: Input without echo yang mengecek Ctrl Break/Ctrl C.Untuk melakukan input yang mendeteksi Ctrl Break memakai INT 21H service 08H. Adapunpersyaratannya adalah:Uky Yudatama, S.Si, M.Kom46
  47. 47. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Nilai AH berisi 08H INT 21H Nilai AH ini dapat dihentikan dengan Ctrl Break atau Ctrl C selama proses input Data yang diinput ditaruh di register AL. Input without echo yang tidak mengecek Ctrl Break/Ctrl C.Untuk melakukan input yang tidak mendeteksi Ctrl Break atau Ctrl C, memakai INT 21Hservice 07H di register AH. Cara pemakaiannya sama dengan AH=08H, perbedaannyahanya pada saat komputer sedang berjalan misalnya penekanan tombol ctrl break akandibiarkan dan dianggap sebagai input. Input without echo tanpa menungguMaksudnya adalah komputer tidak akan menunggu anda untuk menekan keyboard tetapiinput ini akan diambil dari keyboard buffer, dimana keyboard buffer akan diisi ketika komputersedang mengerjakan tugas lain. Jika ternyata keyboard buffer kosong, maka input withoutecho tanpa menunggu tidak mengerjakan apa-apa. Adapun persyaratannya adalah sebagaiberikut: Register AH diisi dengan service 06H INT 21H Register DL harus berisi nilai FFH. Hasil input akan diletakkan pada register AL.Contoh:;Program input 1 karakter without echo tanpa menunggu.model small.codeorg 100hMULAI: JMP STARTKATA db ‘Kalimat ini akan dicetak terus $’START: MOV AH, 09HLEA DX, KATAINT 21HMOV AH, 06HMOV DL,0FFHXOR AL, ALINT 21HCMP AL, ‘0’JE AKHIRCMP AL, ‘q’JNE MULAIAKHIR: INT 20HEND MULAIUky Yudatama, S.Si, M.Kom47
  48. 48. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Masukan kalimat dari keyboardMemasukan data/input data 1 kalimat dapat kita buat dengan pelayanan interupsi 21H nomorservice 0AH dalam register AH. Instruksi yang umum dipakai adalah:MOV AH, 0AHMOV DX, OFFSET variabelINT 21HInstruksi ini berfungsi untuk mengambil data ke dalam variable, data dalam kalimat dibaca satupersatu oleh register AL dan disalurkan ke alamat/lokasi memori yang ditunjuk oleh register BX.Hasilnya disimpan dalam register DX melalui sebuah variabel.Panjang maksimal kalimat yang diinput harus mengikuti aturan pembuatan variable sebagaibatas karakter yang diinput dari keyboard yaitu:Nama_variable db XX , ? , YY dup (?)XX= Jumlah karakter yang akan diinput ditambah 1 untuk tombol enterYY= Jumlah karakter yang dibaca berikut enternyaYY dup(?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu YY*1 tempatkosong yang dapat mewakili tanda tanya (?).DS:DX merupakan lokasi memori yang berisi segment dan offset awal suatu nama variable yangakan diisi oleh data.Contoh:;Program input 1 kalimat.model small.codeorg 100hMULAI: JMP STARTKATA db ‘Ketik data maksimum 14 karakter :$’DATA_MASUK db 15,?,15 dup(?)START: MOV AH, 09HLEA DX, KATAINT 21HMOV AH, 0AHMOV DX,0FFSET DATA_MASUKINT 21HMOV BX,0FFSET DATA_MASUKINC BXMOV AL,[BX]INC BXXOR AH, AHADD BX, AXMOV AL, 0MOV [BX], ALMOV DX, OFFSET DATA_MASUKUky Yudatama, S.Si, M.Kom48
  49. 49. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)INC DXINC DXAKHIR: INT 20HEND MULAIIsi data yang dimasukkan ke dalam register AL (1 karakter) dan register DX (1 word) dapatditampilkan ke layar monitor setelah dipindahkan ke register DL yang dibaca satu persatu darilokasi memori yang ditunjuk oleh register BX. Pada saat dipindahkan ke DL maka harusdilengkapi dengan nomor pelayanan INT 21H service 02H.Contoh:MOVSB ;isi lokasi memori berisi byte ke lokasi memori lainMOVSW ;isi lokasi memori berisi word ke lokasi memori lainMOVSD ;isi lokasi memori berisi double word ke lokasi lainMOVS DAT1, VAR1 ;isi label DAT1 ke VAR1• Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).• Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisannya(syntax).• Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakanalternatif yang dapat dipilih untuk mencetak kalimat.•• Properti target mendefinisikan bagaimana halaman target dari sebuah link.1.2.3.Uky Yudatama, S.Si, M.Kom49
  50. 50. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 12 (Duabelas)Tujuan Instruksional Khusus Mengerti dan Memahami metode pembuatan prosedurdan macro.Pokok Bahasan Prosedur dan Macro.Sub Pokok Bahasan - Membuat prosedur- Membuat macro- Menggabungkan prosedur & macroDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoPROSEDUR DAN MACROProsedur dan macro adalah fasilitas yang terdapat pada turbo assembler.ProsedurProsedur adalah sekelompok instruksi yang dibangun untuk melakukan tugas-tugas tertentu agardapat memperpendek jumlah baris program. Prosedur dapat dipanggil secara berulang-ulangoleh program utama dengan instruksi CALL.Penggunaan prosedur dapat mengurangi jumlah alamat memori yang digunakan pada program.Kerangka Dasar prosedur:Uky Yudatama, S.Si, M.Kom50
  51. 51. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Nama_prosedur PROC NEAR/FAR ;nama prosedur-------------------- Isi Prosedur--------------------RET ;kembali ke program utamaNama_prosedur ENDP ;akhir prosedurPROC = Procedur RET= RETURNNEAR = Lokasi prosedur dekat dengan program utamaFAR = Lokasi prosedur jauh dari program utamaContoh:.model small.codeorg 100hMULAI: MOV CX,05h ;isi CX dilooping 5 kaliMOV DL,’A’ ;Karakter A disimpan di DLULANG: CALL CETAK ;cetak di layarINC DL ;tambahkan isi DL dengan 1LOOP ULANG ;kembali ke ULANGEXIT: INT 20h ;kembali ke DOSCETAK PROC NEAR ;prosedur CETAKMOV AH, 02h ;nomor servis 02HINT 21h ;cetak di layarRET ;kembali ke program utamaCETAK ENDP ;akhir prosedurEND MULAIMACROHampir mirip dengan prosedur dan tidak perlu dipanggil dengan CALL dan RET. Hanyacukup dipanggil dengan mengeksekusi namanya. Macro mengenal parameter yangbersifat optional (boleh ada atau tidak), tergantung kebutuhan.Kerangka Umum:Nama_makro MACRO [P1,P2] ;nama makro.................. Isi makro.........ENDM ;akhir makro[P1,P2] adalah parameter yang digunakan (optional)Contoh 1:;Program dengan MakroCETAK MACRO KARMOV DL, KARUky Yudatama, S.Si, M.Kom51
  52. 52. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MOV AH, 02hINT 21hENDM.model small.codeorg 100hMULAI: CETAK ‘A’CETAK ‘B’CETAK ‘C’CETAK ‘D’CETAK ‘E’EXIT: INT 20hEND MULAIContoh 2:;Program Mencetak String (Kalimat)CETAK MACRO KALLEA DX,KALMOV AH, 09hINT 21hENDM.model small.codeorg 100hMULAI: JMP STARTTULIS1 DB ‘Saya sedang belajar Assembler’,13,10DB ‘Ternyata asyik juga$’TULIS2 DB ‘Materi sekarang tentang makro$’START: CETAK TULIS1CETAK TULIS2INT 20hEND MULAI• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id• Properti target mendefinisikan bagaimana halaman target dari sebuah linkditampilkan, apakah _blank (menampilkan pada browser window baru), _parent(menampilkan pada dokumen tempat frame berada), _self (menampilkan padabrowser aktif), atau _top (menampilkan pada halaman utama).1.Uky Yudatama, S.Si, M.Kom52
  53. 53. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)2.3.Pertemuan Ke 13 (Tigabelas)Tujuan Instruksional Khusus Mengerti dan Memahami mode pengaturan layer.Pokok Bahasan Operasi pada layar.Sub Pokok Bahasan - Memori layar- Tampilan teks pada layar- Bentuk Kursor- Mode layarDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoOPERASI PADA LAYARMEMORI LAYAR.model small.codeorg 100hMULAI: -------TAMPILAN TEKS PADA LAYAR.model small.codeorg 100hUky Yudatama, S.Si, M.Kom53
  54. 54. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MULAI: -------POSISI KURSOR.model small.codeorg 100hMULAI: -------MODE LAYAR.model small.codeorg 100hMULAI: -------• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id• Properti target mendefinisikan bagaimana halaman target dari sebuah linkditampilkan, apakah _blank (menampilkan pada browser window baru), _parent(menampilkan pada dokumen tempat frame berada), _self (menampilkan padabrowser aktif), atau _top (menampilkan pada halaman utama).1.2.3.Uky Yudatama, S.Si, M.Kom54
  55. 55. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Pertemuan Ke 14 (Empatbelas)Tujuan Instruksional KhususMengerti dan Memahami pengaksesan port.Penanganan File.Pokok BahasanAkses Port dan pengaktifan speaker.Operasi File.Sub Pokok Bahasan - Macam-macam Port- Pengaksesan alamat port- Penanganan File- Atribut FileDaftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,Hartono Partoharsojo2. Pemrograman dengan Bahasa Assembly,Susanto3 Microprocessor Programmer’s, referensi Intel CoAKSES PORTPengertian PortMacam-macam PortPengaksesan alamat portPersyaratan untukContoh program.model small.codeorg 100hUky Yudatama, S.Si, M.Kom55
  56. 56. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)MULAI: -------Penanganan FileA. Manajemen File- Membuat Directory/SubdirectoryPersyaratan untukContoh program.model small.codeorg 100hMULAI: -------- Menghapus Directory/SubdirectoryPersyaratan untukContoh program.model small.codeorg 100hMULAI: -------- Mengubah Directory/SubdirectoryPersyaratan untukContoh program.model small.codeorg 100hMULAI: -------B. Hapus FilePersyaratan untuk menghapus fileUky Yudatama, S.Si, M.Kom56
  57. 57. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Contoh program.model small.codeorg 100hMULAI: -C. Atribut FilePersyaratan untuk atribut fileJenis atribut file pada DOS antara lain:- Read Only- Hidden- Sistem- Archive- Volume Label- Nama subdirectoryDOS menyediakan fungsi service number 43h INT 21h untuk mengatur atribut filedengan mode AL = 00 (melihat atribut file), AL = 01 (untuk mengubah atribut file) danjenis atribut ditampung di CX yaitu nomor:- 0 untuk file read only- 1 untuk file hidden (sembunyikan file)- 2 untuk file sistem- 3 untuk Volume label- 4 untuk Nama subdirectory- 5 untuk file archiveRead onlyPersyaratan untuk Read only:Contoh program untuk read only (file yang tidak bisa dihapus).model small.codeorg 100hMULAI: -------Hidden filePersyaratan untuk Hidden file:Contoh program untuk hidden file.model small.codeorg 100hMULAI: -------ArchiveUky Yudatama, S.Si, M.Kom57
  58. 58. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)Persyaratan untuk Archive file:Contoh program untuk archive (file yang dapat dibaca dan dihapus).model small.codeorg 100hMULAI: -------• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id• Properti target mendefinisikan bagaimana halaman target dari sebuah linkditampilkan, apakah _blank (menampilkan pada browser window baru), _parent(menampilkan pada dokumen tempat frame berada), _self (menampilkan padabrowser aktif), atau _top (menampilkan pada halaman utama).1.2.3.Uky Yudatama, S.Si, M.Kom58

×