Assembly Basic Programming By. Rita Wiryasaputra,ST., M. Cs Universitas Indo Global Mandiri 2012
Memulai Bahasa Rakitan
Untuk membuat pemrograman bhs rakitan diperlukan compiler dlm hal ini adalah TASM (Turbo Assembler) Source prog dibuat dgn menggunakan editor text seperti: notepad, editor(DOS), sidekick (DOS) dll. Setelah source diketik, maka file source prog. disimpan dlm bentuk .ASM Kompile dgn TASM /t namafile.asm Jika tdk terjadi kesalahan, link dgn Tlink /t namafile.obj Hasil dr link, dpt dijalankan langsung dr DOS prompt Penulisan source program mempergunakan default desimal
Directive, Opcode, Komentar Source Program memp. 3 jenis baris: Directive assembler/ Pseudo ops Sandi Operasi (opcode) Komentar
Directive Assembler / Pseudo ops(pseudo operation code) Fungsi : Mengendalikan cara kerja assembler dgn memberi perintah Mendefinisikan suatu konstanta Menyediakan daerah data
Sandi Operasi (Opcode) Terdiri dari: Label Mnemonic Operand Komentar
Label
Label rujukan simbolis pd lokasi memori (offset) dr segmen code (CS) yg merupakan letak instruksi berikutnya (mnemonic) Terdiri dari 31 karakter & karakter pertama tdk boleh angka serta diakhiri dgn : (ttk dua)
Mnemonic Mnemonic instruksi CPU Contoh : MOV, ADD, JMP, CMP
Operand
Operand merubah cara kerja instruksi dgn menyisipkan 1 atau 2 parameter
Komentar
Komentar utk mengingatkan tentang apa yg sedang dikerjakan program Diawali dgn tanda ; (ttk koma)
Pembuatan Program .COM .model small directive .code Org 100h Start: tempat instruksi program (sandi operasi) Mov ah,4ch Atau Int 20h Int 21h End start
Model
Model digunakan utk memberitahu kepd assembler bentuk memori yg digunakan oleh prog
Macam directive model :
Small jika data dan code yg digunakan oleh prog < dr 1 segment atau 64 KB. DS dan CS dipanggil dlm rutin NEAR dan data segmen merujuk pd DS Tiny utk format file .com dan terdiri dr 1 segmen Medium data segmen = 1 segmen file atau code segmen >= 64 KB Compact data segmen >= 64 KB dan code segmen < 64 KB Large code segmen dan data segmen >= 64 KB Huge code segmen, data segmen dan array yg digunakan > 64 KB
PR
Jelaskan tentang kegunaan Code?? Jelaskan tentang kegunaan Org 100h?? Apakah hrs digunakan??
COMPILE TASM namafile.asm Terbentuk 2 file yaitu .ASM .OBJ
LINKER (2 cara) TLINK /t namafile.obj Terbentuk 2 file: .MAP .COM
TLINK namafile.obj Terbentuk . EXE (utk merubah ke .COM pergunakan prog. EXE2BIN) Akan tampil warning no stack, karena kita tdk mendefiniskan stack segmen utk prog. com
DOS menjalankan 2 macam program: .EXE .COM
.EXE .EXE prosedur FAR yg dipanggil dr segmen lain Dpt mendefinisikan 4 segmen berbeda (CS,DS,ES,SS) sesuai pd tempatnya Contoh : penempatan code pada segmen code Penempatan data pada segmen data Tidak dapat dibuat dgn debug Mudah mengakses data atau procedure pd segmen lain
.COM
.COM prosedur NEAR yg dipanggil dr segmen CODE Hanya dapat mendefinisikan 1 segmen code shg utk penempatan data dan stack diletakkan pd segmen code tsb Program yg dihasilkan berkapasitas lebih kecil & dimuat scr lebih cepat Dapat dibuat dengan debug 100h byte pertama merupakan PSP dr program tsb
Instruksi Aritmatika
INC (increment) DEC (decrement) ADD (addition) SUB (subtract) MUL (multiply) DIV (divide)
NEG (negate) CMP (compare) CBW (convert byte to word) CWD (convert word to doubleword)
Instruksi Logika
AND OR XOR NOT
Instruksi Shift dan Rotate
SHL (Shift Logical Left) SHR (Shift Logical Right) ROR (Rotate Right) ROL (Rotate Left)
Data Transfer Instruction
MOV (move byte or word) LEA (load effective address) LDS (load ds with pointer) LES (load es with pointer) XCHG (exchange)
Instruksi Transfer Program
JMP (unconditional branch) Intrasegment direct near branch Intrasegment indirect branch Intrasegment direct far branch Intrasegment indirect branch Conditional branch (JE,JA,…dst)
Addressing Mode Addressing mode teknik utk menspesifikasi dr operandnya Terdapat 7 cara addressing mode: Immediate Register Direct Register indirect Base relative Direct indexed Base indexed
Immediate Addressing Format : Data Contoh: MOV AX, 50H
Register Addressing
Format : register Contoh: MOV CX,AX
Direct Addressing
Fungsi meng-copy data pd register & simbol Format : displacement dan label Segment register : DS Contoh: MOV AL, T
Register Indirect Addressing
Fungsi mengakses data yg banyak & mengambil alamat effective dr data tsb Contoh: MOV DL,[BX]
Format (alamat effective) [BX]
Segment Register
[BP]
SS
[DI] [SI]
DS DS
DS
Base Relative Addressing
Fungsi mengakses tabel dgn mengambil alamat efektifnya Format (alamat effective) Segment Register [BX]+displacement
DS
[BP]+displacement
SS
Direct Indexed Addressing
Format (alamat effective) Segment Register [DI]+displacement
DS
[SI]+displacement
SS
Base Indexed Addressing
Format (alamat effective) Segment Register [BX][DI]+displacement
DS
[BX][SI]+displacement
DS
[BP][DI]+displacement
SS
[BP][SI]+displacement
SS
Mengapa menggunakan Interrupt????
Interrupt suatu permintaan khusus kpd mikroprosesor utk melakukan sesuatu. Interrupt Handler program yg melayani suatu interupsi
Dlm ROM BIOS, jika terjadi pengetikkan melalui keyboard, maka sinyal elektrik akan menginterupsi CPU dan mengarahkannya pd alamat interrupt (vektor). Vektor 9 mengacu pd alamat 24 heks yg berfungsi utk sandi lacak keyboard pd ROM BIOS. Setelah rutin keyboard menyelesaikan kerjanya, maka kendali dialihkan ke prog yg terinterupsi
Interrupt DOS hanya ada pd komputer yg menggunakan sistem operasi DOS dan Interrupt Handler-nya di-load ke memori oleh DOS pd saat DOS digunakan. Interrupt telah dipastikan kegunaannya oleh sistem utk keperluan yg khusus shg tdk boleh diubah oleh pemrogram
Fungsi DOS DOS menyediakan interrupt 20H hingga 27H 20H Terminate Program 21H DOS Function Services 22H Terminate code 23H Ctrl-Break code 24H Critical Error Handler 25H Absolute Disk Read 26H Absolute Disk Write 27H Terminate But Stay Resident
INT 20h
Fungsi menghentikan prog dan menyerahkan kendali sepenuhnya kpd DOS. Kapasitas 2 byte Tidak dapat digunakan dlm prog. EXE
INT 21H Service 4Ch Fungsi menghentikan prog dan menyerahkan kendali sepenuhnya kpd DOS Input nilai : AH=4Ch AC=return code;nilai yg dikirim ke DOS, dpt dibaca dgn IF ERRORLEVEL n dlm batch file Output nilai: tidak ada Contoh: MOV AH,4Ch Int 21h
INT 21H Service 02h Fungsi mencetak tampilan 1 karakter dlm layar Input nilai : AH= 02h DL= karakter / kode ASCII-nya Contoh: MOV AH,02h MOV DL,41h ; kode ASCII ‘A’ Int 21h
Mnemonic MOV (move) MOV destination, source Operands Memory, accumulator Accumulator, memory Register, register Register, memory Memory, register Register, immediate Memory, immediate
Contoh: MOV array[SI],AL MOV AX,temp MOV AX,CX MOV BP, STACK MOV COUNT[DI], CX MOV CL,2 MOV MASK[BX][SI],2CH
MOV DL,ACh ; AC akan dianggap sbg label MOV DL,0ACh ; AC akan dianggap sbg angka/instruksi
Pengkopian yg dilarang : Antar segmen register c/o : MOV DS,ES Hrs menggunakan perantara MOV AX,ES ; PUSH ES MOV DS,AX ; POP DS Pemberian nilai utk segmen register (DS,ES,CS,SS) scr langsung c/o : MOV ES,02h Pengkopian data langsung antar memori c/o : MOV memB,memA Pengkopian data antar register yg berbeda tipe tanpa menggunakan pointer c/o : MOV AL,BX
Mnemonic CMP (compare) CMP destination, source Operands Contoh: Register, register CMP BX,CX Register, memory CMP DH, ALPHA Memory, register CMP [BP+2],SI Register, immediate CMP BL,02h Memory, immediate CMP TEMP,02h Accumulator, immediate CMP AL,02h
Mnemonic ADD (addition) ADD destination, source Operands Contoh: Register, register ADD CX,DX Register, memory ADD DI, [BX]ALPHA Memory, register ADD temp,CL Register, immediate ADD CL,2 Memory, immediate ADD alpha,2 Accumulator, immediate ADD AX,200
ADD
Maksud : menambahkan operand1 dan operand2, lalu hasilnya di operand1 Tujuan dan asal harus mempunyai daya tampung yang sama. Contoh AH dengan AL (8 bit) atau AX dengan BX (16 bit)
Mnemonic LEA (Load Effective Add) LEA destination, source Tidak ada flag yg berpengaruh Operands Reg16,mem16
Contoh: LEA BX, STRING LEA BX, [BP][DI]
Mnemonic
INC DEC Operasi aritmatika (ADD,SUB,MUL,DIV) Operasi logika (AND, OR,XOR,SHR,SHL,ROR,ROL) Instruksi flow control (CMP,JMP,JE,JA,…) Loop
PR
Cari dan Jelaskan mengenai Mnemonic utk operasi aritmatika Cari dan Jelaskan tentang INT 21h Service noservice (spt contoh int 21h service 4Ch) Tipe data dan ukurannya (db,dw,dd,df,dq,dt) Macam directive code,