Sunday, June 10, 2012

Dasar-dasar Assembly


Untuk mempelajari bahasa assembler, anda harus menghafalkan semua register dan mengerti apa kegunaannya, karena anda akan selalu berhubungan dengan register – register tersebut. Register adalah sebagian kecil memory komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut.

Secara umum register dapat dibagi dalam lima golongan yaitu :
1. General Purpose Register
1.1 Register AX
Register AX merupakan register aritmatika karena register ini selalu dipakai dalam operasi pertambahan,pengurangan,perkalian dan pembagian
1.2 Register BX
Register BX merupakan salah satu dari dua register base addressing mode, yang dapat mengambil atau menulis langsung dari/ke memory
1.3 Register CX
Register CX merupakan suatu counter untuk meletakan jumlah lompatan pada loop-loop yang anda lakukan
2. Segment Register
2.1 Register CS : Code Segment Register
2.2 Register DS : Data Segment Register
2.3 Register SS : Stack Segment Register
2.4 Register ES : Extra Segment Register
3. Pointer Register
3.1 IP : Instruction Pointer Register
3.2 SP : Stack Pointer Register
3.3 BP: Base Pointer Register
4. Index Register
4.1 SI : Source Index Register
4.2 DI : Destination Index Register
5. Flag Register 

 Program Debugv
Untuk menjalankan utility DEBUG, anda cukup mengetik DEBUG dari prompt. Sedang bila ingin membuka sebuah file langsung untuk dioperasikan DEBUG, anda cukup menambahkan nama file itu sebagai command tail. Contohnya :
A> DEBUG AGUS.COM
1. Perintah Debug
a. Q (Quit)
Bila anda mengetikan huruf Q dan menekan enter, maka akan segera kembali ke dos prompt.
b. H (Hexa)
Perintah Hexa adalah perintah yang melaksanakan penjumlahan dan pengurangan terhadap dua bilangan Hexa. Bentuk umum instruksi adalah H operand1,operand2
c. R (Register)
Perintah R digunakan untuk mengetahui isi masing-masing register pada saat mengetik R dan menekan enter
d. A (Assembler)
Perintah Assembler berguna untuk tempat menulis program Assembler.
-A100
0FD8:100
e. N (Name)
Perintah ini digunakan untuk memberi nama suatu program assembler
f. RCX (Register CX)
Perintah ini digunakan untuk mengetahui dan memperbaruhi isi register CX yang merupakan tempat penampungan panjang program yang sedan aktif
g. RIP (Register IP)
Perintah ini digunakan untuk memberitahu komputer untuk memulai memproses program dari titik tertentu.
h. W (Write)
Perintah ini digunakan untuk menulis/ menyimpan program
i. G (Go)
Perintah ini digunakan untuk menjalankan suatu program
j. T (Trace)
Perintah ini digunakan untuk memproses sebaris program saja.
k. U (Unassemble)
Perintah ini digunakan untuk melihat listing program yang sedang aktif.

2. Perintah Dasar Assembler
a. MOV
Perintah MOV adalah perintah untuk mengisi, memindahkan, memperbaruhi isi suatu register, variable ataupun lokasi memory
Adapun tata penulisan perintah MOV adalah :
MOV [operand A], [Operand B]
Contoh :
MOV AH,02
Operand A adalah Register AH
Operand B adalah bilangan 02
Hal yang dilakukan oleh komputer untuk perintah diatas adalah memasukan 02 ke register AH.
b. INT (Interrupt)
Bila anda pernah belajar BASIC, maka pasti anda tidak asing lagi dengan perintah GOSUB. Perintah INT juga mempunyai cara kerja yang sama dengan GOSUB, hanya saja subroutine yang dipanggil telah disediakan oleh memory komputer yang terdiri 2 jenis yaitu :

- Bios Interrupt ( interput yang disediakan oleh BIOS (INT 0 – INT 1F))
- Dos Interrupt ( Interrupt yang disediakan oleh DOS (INT 1F – keatas))
 Contoh Program Sederhanav
- A100
0FD8:0100 MOV AH,02
0FD8:0102 MOV DL,41
0FD8:0104 INT 21
0FD8:0106 INT 20
0FD8:0108 
- Jika sudah Ketikan perintah G ( Go ) maka akan tampil huruf A
- Cara menyimpan program :
- RIP
IP 102
: 100  diisià-
- RCX
CX 0000
: 8 --> diisi ( panjangnya program)
- N Coba.Com memberi nama program
- W Menulis program


LOOPING DAN STACK
 Loopingv
Dalam Assembler perintah untuk melakukan perulangan digunakan perintah LOOP. Yang mempunyai tata penulisan sebagai berikut :
Loop [lokasi memory]
Adapun syarat lain untuk operasi Loop adalah harus mengisi register CX untuk setiap kali pengulangan. Coba anda lihat contoh program looping dibawah ini :

MOV CX,05
:0103 MOV AH,02
MOV DL,41
INT 21
LOOP 0103
INT 20

Jika program diatas dijalankan maka akan terjadi perulangan sebanyak lima kali. Hal ini karena isi dari register CX adalah 5 dan program akan looping ke memory segment 0103 yaitu tempat yang berisikan perintah MOV AH,02


Untuk setiap kali looping komputer akan mengurangi isi register CX satu sampai dengan CX menunjukan nol dan komputer akan melanjutkan ke baris berikutnya dibawah loop. Jika anda meletakan Loop ke tempat MOV CX,05 maka hasil running program tidak akan berhenti.
 Stackv
Secara umum stack adalah tempat peletakan sementara isi register. Stack pada file.COM terdapat di akhir segment dan ketika pertama kali dijalankan program penunjuk stack (SP) akan langsung ke byte terakhir dari segment.
Operasi Stack mempunyai dua fungsi yaitu fungsi untuk memasukan isi suatu register/variable ke dalam stack dan mengeluarkan isi register / variable dari Stack. Adapun perintah untuk memasukan isi register pada stack adalah perintah PUSH dengan tata penulisannya adalah :
PUSH [operand 16 bit]
Perintah lain untuk operasi stack adalah perintah yang berguna untuk mengeluarkan isi dari register/variable dari stack digunakan perintah POP dengan tata penulisannya adalah : 
POP [operand 16 bit]
Untuk lebih jelasnya bisa anda perhatika program dibawah ini :
MOV CX,009
MOV DL,31
MOV AH,02
INT 21
PUSH DX
PUSH CX
MOV CX,001A
MOV DL,61
INT 21
INC DL
LOOP 0110
MOV DL,0D
INT 21
MOV DL,0A
INT 21
POP CX
POP DX
INC DL
LOOP 0107
INT 20








Pada baris kelima dan keenam terlihat bahwa anda melakukan operasi penyimpanan register ke stack dan pada baris keenambelas anda mengambil isi stack menggunakan perintah POP. Bila anda menggambarkan stack pada akhir segment. Anda dapat menunjukan bahwa ketika anda melakukan push terhadap register DX yang seandainya berisikan bilanagan 0021 H maka pada stack akan terlihat :
0000
0100

Penunjuk(SP)
FFFD
FFFF 

Pada saat perintah PUSH CX dengan register CX berisikan angka 0009, maka akan terlihat di Stack :

0000
0100

Penunjuk(SP) FFFB
FFFD
FFFF

Pada saat perintah POP CX, keadaan stack akan kembali lagi pada saat tampilan stack yang pertama. Dari pembayangan diatas dapat disimpulkan bahwa pada operasi stack yang pertama masuk ke stack adalah yang terakhir keluar dari stack dan yang terakhir masuk ke stack, maka pertama yang keluar dari stack ( LIFO).
PENGENALAN TASM DAN OPERASI ARITMATIKA

 Program Tanpa Debugv
Selain kita bisa menggunakan DEBUG.COM dalam membuat program assembler kita juga bisa membuat program assembler tanpa menggunakan DEBUG.COM, dimana untuk keperluan itu diperlukan beberapa program yaitu : 
- Text Editor
Text editor ini digunakan untuk membuat/menulis program assembler. Adapun contoh dari editor ini adalah SideKick , Notepad, Norton Editor, dll.
- Compiler
Yang dimaksud dengan Compiler adalah suatu program yang menterjemahkan program assembler dalam ASCII file ke bentuk file object, dalam assembler kita gunakan TASM. Contohnya :
TASM CETAK.ASM CETAK.OBJ 
- Linker
Yang dimaksud dengan Linker adalah suatu program yang menterjemahkan program object ke bentuk file eksekusi (berextension .COM atau . EXE), dalam assembler kita gunakan TLINK. Contohnya :
TLINK /T CETAK
 Struktur Programv Dalam TASM

Secara umum struktur penulisan suatu segment dapat dilukiskan sebagai berikut : 
[nama segment] segment
ASSUME CS:[segment] DS:[segment] SS:[segment] ES:[segment]
Org 100H
[label] :
Program Assemblernya
-
[nama segment] ends
End [label]
Contohnya :
.MODEL SMALL
.CODE
ORG 100H
Start : Mov CX,05
Mov DL,41H
Label1 : Mov Ah,02H
Int 21H
Inc DL
Loop label1
Int 20H
End Start
Setelah program diatas dicompile dengan menggunakan TASM dan dilinker menggunkan TLINK /T , kemudian untuk menjalankan programnya kita tinggal mengetikan nama filenya saja. Contohnya : CETAK 
 Operasi Aritmatikav
Dalam Assembler operasi aritmatika yang dibahas adalah operasi pertambahan , pengurangan, perkalian dan pembagian. 
- Operasi Pertambahan
• Pertambahan dengan 1
Adapun perintah untuk pertambahan dengan 1 dalam assemblera adalah INC, dengan tata penulisan perintah INC adalah : 
INC [Register/Variable]
Contoh programnya :
MOV CX,05
MOV DL,41
# MOV AH,02
INT 21
INC DL
LOOP #
INT 20
• Pertambahan Selain 1
Perintah yang digunakan untk pertambahan selain 1 dalam assembler yaitu ADD, dengan tata penulisan perintah ADD adalah:
ADD [operand1],[operand2]


- Operasi Pengurangan
• Pengurangan Dengan Satu 
Perintah yang digunakan untuk penguarangan satu ini adalah perintah DEC, jika kita tulis biasa sama dengan A = A – 1. Tata penulisan dari perintah DEC adalah :
DEC [Variable/Register]
Contoh Program :
MOV CX,05
MOV DL,5A
# MOV AH,02
INT 21
DEC DL
LOOP #
INT 20
• Pengurangan Selain Satu
Bila dalam pertambahan kita gunakan ADD maka dalam pengurangan selain satu digunakan SUB dengan tata penulisannya adalah :
SUB [operand1],[operand2]
- Perkalian
Operasi perkalian dalam assembler dapat menggunakan perintah MUL yang berarti perkalian. Adapun tata penulisannya adalah :
MUL [Register]
Bila memerintahkan dengan perintah MUL, maka yang dilakukan komputer adalah :
• Mengambil nilai register terlampir pada perintah MUL. Contoh MUL BL, maka isi register BL yang diambil
• Kemudian komputer mengambil isi register AL dan dikalikan dengan isi register BL
• Hasilnya dapat dilihat pada register AX. Langkah diatas adalah oprasi 8 bit, sedang untuk operasi 16 bit yang dilakukan komputer adalah :
• Mengambil nilai register terlampir yang besarnya 16 bit. Contohnya : MUL BX
• Kemudian komputer mengambil isi register AX dan dikalikan dengan isi register BX
• Hasilnya dapat dilihat pada register OX
Contoh programnya :
MOV AH,02
MOV BH,32
MOV AL,01
MUL BH
MOV DL,AL
INT 21
INY 20
- Pembagian
Seperti juga perkalian, pembagian pun membedakan cara kerja pembagian dengan 8 bit dan 16 bit. Adapun cara kerja operasi pembagian adalah :
- Pembagian 8 Bit - Pembagian 16 Bit
Tata penulisan : Tata Penulisan:
DIV [Register 8 bit] DIV [Register 16 Bit]

Contoh : Contoh:
DIV BL DIV BX
Dibagi dengan AX Dibagi dengan 
DX:AX
Hasil dilihat di AL Hasil dilihat di DX
Sisa dilihat di AH Sisa dilihat di AX

Contoh Programnya :
MOV BL,0A
MOV AX,0101
DIV BL
MOV AH,02
MOV DL,AL
INT 21
INT 20 

MENCETAK STRING DAN MENGINPUT STRING
 Mencetak Stringv
Sebelum kita mencetak sebuah string terlebih dahulu kita harus mendefinisikan variablenya. Variabel dalam bahasa assembler dapat dibagi menjadi 2 jenis variabel, yaitu :
- Variabel yang dapat dimodifikasi isinya.
Variabel ini adalah variabel yang memakan tempat pada memory, besar memory yang dipakai variabel ini ditentukan oleh besarnya variabel tersebut. Adapun besaran-besaran variabel tersebut adalah :
• DB (Define Byte), mendefinisikan variabel per byte
• DW (Define Word), mendefinisikan variabel per wprd
• DD (Define Double Word), mendefinisikan variabel per 2 word


Tata penulisan variabel jenis ini adalah dengan :
Label [DB/DW/DD] [Isi Variabel]
Contohnya :
Satu db ‘Ini Adalah Sebuah Variabel $’
- Variabel yang tidak dapat dimodifikasi isinya.
Jenis variabel ini tidak akan memakan memory pada komputer, jenis variabel ini hanya dapat dipakai dalam assembler menggunakan compiler. Untuk mendefinisikan jenis variabel ini anda cukup menggantikan besaran pada variabel yang dapat dimodifikasikan isinya menjadi kata equ.
Pada bagian ini akan dibahas bagaimana cara mencetak sebuah kalimat ke layar menggunakan Int 21 Hexa service number 09h. Adapun syarat-syarat untuk menggunakan Int 21 H service 09H ini adalah :
- Masukan Service number Interupt ke register AH.
- Masukan segment dario variabel tempat menampung kata yang akan dicetak ke DS dan offset-nya ke DX dan kata-kata yang dicetak tersebut harus diakhiri dengan tanda dollar ‘$’.
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START : JMP MULAI
;Disini data dimulai
KATA DB ‘TEST KATA-KATA’,13,10
DB ‘SATU $’
MULAI : MOV AH,09H
MOV DX,OFFSET KATA ; ATAU LEA DX,KATA
INT 21H
INT 20H
END START
 Input Satu Karakterv
Untuk input 1 karakter dengan ECHO kita akan menggunakan Interrupt 21H dengan service number 01H. Adapun syarat-syarat menggunakan Interupt 21H service number 01H ini adalah :
- Pada saat sebelum dilakukan proses, register AH harus berisi service number dari interupt 21H yaitu 01H
- Selama proses, proses dapat dihentikan dengan menekan tombol control dan tombol break atau C secara bersamaan.
- Hasil input dari keyboard akan diletakan di register AL
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START :JMP MULAI
TANYA DB ‘JAWAB SAJA PERTANYAAN INI : ‘,13,10
DB ‘MASUKAN SATU KARAKTER : $’,13,10
HASIL DB ‘KARAKTER ITU : $’
MULAI : MOV AH,09H
LEA DX,TANYA ;MENCETAK TANYA
INT 21H
MOV AH,01H ;SERVICE UNTUK INPUT 1 CHAR
INT 21H
MOV AH,09H
LEA DX,HASIL ;MENCETAK HASIL
INT 21H
MOV AH,02H
MOV DL,AL ;CETAK HASIL INPUT
INT 21H
INT 20H
END START

Untuk mempelajari bahasa assembler, anda harus menghafalkan semua register dan mengerti apa kegunaannya, karena anda akan selalu berhubungan dengan register – register tersebut. Register adalah sebagian kecil memory komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut.

Secara umum register dapat dibagi dalam lima golongan yaitu :
1. General Purpose Register
1.1 Register AX
Register AX merupakan register aritmatika karena register ini selalu dipakai dalam operasi pertambahan,pengurangan,perkalian dan pembagian
1.2 Register BX
Register BX merupakan salah satu dari dua register base addressing mode, yang dapat mengambil atau menulis langsung dari/ke memory
1.3 Register CX
Register CX merupakan suatu counter untuk meletakan jumlah lompatan pada loop-loop yang anda lakukan
2. Segment Register
2.1 Register CS : Code Segment Register
2.2 Register DS : Data Segment Register
2.3 Register SS : Stack Segment Register
2.4 Register ES : Extra Segment Register
3. Pointer Register
3.1 IP : Instruction Pointer Register
3.2 SP : Stack Pointer Register
3.3 BP: Base Pointer Register
4. Index Register
4.1 SI : Source Index Register
4.2 DI : Destination Index Register
5. Flag Register 

 Program Debugv
Untuk menjalankan utility DEBUG, anda cukup mengetik DEBUG dari prompt. Sedang bila ingin membuka sebuah file langsung untuk dioperasikan DEBUG, anda cukup menambahkan nama file itu sebagai command tail. Contohnya :
A> DEBUG AGUS.COM
1. Perintah Debug
a. Q (Quit)
Bila anda mengetikan huruf Q dan menekan enter, maka akan segera kembali ke dos prompt.
b. H (Hexa)
Perintah Hexa adalah perintah yang melaksanakan penjumlahan dan pengurangan terhadap dua bilangan Hexa. Bentuk umum instruksi adalah H operand1,operand2
c. R (Register)
Perintah R digunakan untuk mengetahui isi masing-masing register pada saat mengetik R dan menekan enter
d. A (Assembler)
Perintah Assembler berguna untuk tempat menulis program Assembler.
-A100
0FD8:100
e. N (Name)
Perintah ini digunakan untuk memberi nama suatu program assembler
f. RCX (Register CX)
Perintah ini digunakan untuk mengetahui dan memperbaruhi isi register CX yang merupakan tempat penampungan panjang program yang sedan aktif
g. RIP (Register IP)
Perintah ini digunakan untuk memberitahu komputer untuk memulai memproses program dari titik tertentu.
h. W (Write)
Perintah ini digunakan untuk menulis/ menyimpan program
i. G (Go)
Perintah ini digunakan untuk menjalankan suatu program
j. T (Trace)
Perintah ini digunakan untuk memproses sebaris program saja.
k. U (Unassemble)
Perintah ini digunakan untuk melihat listing program yang sedang aktif.

2. Perintah Dasar Assembler
a. MOV
Perintah MOV adalah perintah untuk mengisi, memindahkan, memperbaruhi isi suatu register, variable ataupun lokasi memory
Adapun tata penulisan perintah MOV adalah :
MOV [operand A], [Operand B]
Contoh :
MOV AH,02
Operand A adalah Register AH
Operand B adalah bilangan 02
Hal yang dilakukan oleh komputer untuk perintah diatas adalah memasukan 02 ke register AH.
b. INT (Interrupt)
Bila anda pernah belajar BASIC, maka pasti anda tidak asing lagi dengan perintah GOSUB. Perintah INT juga mempunyai cara kerja yang sama dengan GOSUB, hanya saja subroutine yang dipanggil telah disediakan oleh memory komputer yang terdiri 2 jenis yaitu :

- Bios Interrupt ( interput yang disediakan oleh BIOS (INT 0 – INT 1F))
- Dos Interrupt ( Interrupt yang disediakan oleh DOS (INT 1F – keatas))
 Contoh Program Sederhanav
- A100
0FD8:0100 MOV AH,02
0FD8:0102 MOV DL,41
0FD8:0104 INT 21
0FD8:0106 INT 20
0FD8:0108 
- Jika sudah Ketikan perintah G ( Go ) maka akan tampil huruf A
- Cara menyimpan program :
- RIP
IP 102
: 100  diisià-
- RCX
CX 0000
: 8 --> diisi ( panjangnya program)
- N Coba.Com memberi nama program
- W Menulis program


LOOPING DAN STACK
 Loopingv
Dalam Assembler perintah untuk melakukan perulangan digunakan perintah LOOP. Yang mempunyai tata penulisan sebagai berikut :
Loop [lokasi memory]
Adapun syarat lain untuk operasi Loop adalah harus mengisi register CX untuk setiap kali pengulangan. Coba anda lihat contoh program looping dibawah ini :

MOV CX,05
:0103 MOV AH,02
MOV DL,41
INT 21
LOOP 0103
INT 20

Jika program diatas dijalankan maka akan terjadi perulangan sebanyak lima kali. Hal ini karena isi dari register CX adalah 5 dan program akan looping ke memory segment 0103 yaitu tempat yang berisikan perintah MOV AH,02


Untuk setiap kali looping komputer akan mengurangi isi register CX satu sampai dengan CX menunjukan nol dan komputer akan melanjutkan ke baris berikutnya dibawah loop. Jika anda meletakan Loop ke tempat MOV CX,05 maka hasil running program tidak akan berhenti.
 Stackv
Secara umum stack adalah tempat peletakan sementara isi register. Stack pada file.COM terdapat di akhir segment dan ketika pertama kali dijalankan program penunjuk stack (SP) akan langsung ke byte terakhir dari segment.
Operasi Stack mempunyai dua fungsi yaitu fungsi untuk memasukan isi suatu register/variable ke dalam stack dan mengeluarkan isi register / variable dari Stack. Adapun perintah untuk memasukan isi register pada stack adalah perintah PUSH dengan tata penulisannya adalah :
PUSH [operand 16 bit]
Perintah lain untuk operasi stack adalah perintah yang berguna untuk mengeluarkan isi dari register/variable dari stack digunakan perintah POP dengan tata penulisannya adalah : 
POP [operand 16 bit]
Untuk lebih jelasnya bisa anda perhatika program dibawah ini :
MOV CX,009
MOV DL,31
MOV AH,02
INT 21
PUSH DX
PUSH CX
MOV CX,001A
MOV DL,61
INT 21
INC DL
LOOP 0110
MOV DL,0D
INT 21
MOV DL,0A
INT 21
POP CX
POP DX
INC DL
LOOP 0107
INT 20








Pada baris kelima dan keenam terlihat bahwa anda melakukan operasi penyimpanan register ke stack dan pada baris keenambelas anda mengambil isi stack menggunakan perintah POP. Bila anda menggambarkan stack pada akhir segment. Anda dapat menunjukan bahwa ketika anda melakukan push terhadap register DX yang seandainya berisikan bilanagan 0021 H maka pada stack akan terlihat :
0000
0100

Penunjuk(SP)
FFFD
FFFF 

Pada saat perintah PUSH CX dengan register CX berisikan angka 0009, maka akan terlihat di Stack :

0000
0100

Penunjuk(SP) FFFB
FFFD
FFFF

Pada saat perintah POP CX, keadaan stack akan kembali lagi pada saat tampilan stack yang pertama. Dari pembayangan diatas dapat disimpulkan bahwa pada operasi stack yang pertama masuk ke stack adalah yang terakhir keluar dari stack dan yang terakhir masuk ke stack, maka pertama yang keluar dari stack ( LIFO).
PENGENALAN TASM DAN OPERASI ARITMATIKA

 Program Tanpa Debugv
Selain kita bisa menggunakan DEBUG.COM dalam membuat program assembler kita juga bisa membuat program assembler tanpa menggunakan DEBUG.COM, dimana untuk keperluan itu diperlukan beberapa program yaitu : 
- Text Editor
Text editor ini digunakan untuk membuat/menulis program assembler. Adapun contoh dari editor ini adalah SideKick , Notepad, Norton Editor, dll.
- Compiler
Yang dimaksud dengan Compiler adalah suatu program yang menterjemahkan program assembler dalam ASCII file ke bentuk file object, dalam assembler kita gunakan TASM. Contohnya :
TASM CETAK.ASM CETAK.OBJ 
- Linker
Yang dimaksud dengan Linker adalah suatu program yang menterjemahkan program object ke bentuk file eksekusi (berextension .COM atau . EXE), dalam assembler kita gunakan TLINK. Contohnya :
TLINK /T CETAK
 Struktur Programv Dalam TASM

Secara umum struktur penulisan suatu segment dapat dilukiskan sebagai berikut : 
[nama segment] segment
ASSUME CS:[segment] DS:[segment] SS:[segment] ES:[segment]
Org 100H
[label] :
Program Assemblernya
-
[nama segment] ends
End [label]
Contohnya :
.MODEL SMALL
.CODE
ORG 100H
Start : Mov CX,05
Mov DL,41H
Label1 : Mov Ah,02H
Int 21H
Inc DL
Loop label1
Int 20H
End Start
Setelah program diatas dicompile dengan menggunakan TASM dan dilinker menggunkan TLINK /T , kemudian untuk menjalankan programnya kita tinggal mengetikan nama filenya saja. Contohnya : CETAK 
 Operasi Aritmatikav
Dalam Assembler operasi aritmatika yang dibahas adalah operasi pertambahan , pengurangan, perkalian dan pembagian. 
- Operasi Pertambahan
• Pertambahan dengan 1
Adapun perintah untuk pertambahan dengan 1 dalam assemblera adalah INC, dengan tata penulisan perintah INC adalah : 
INC [Register/Variable]
Contoh programnya :
MOV CX,05
MOV DL,41
# MOV AH,02
INT 21
INC DL
LOOP #
INT 20
• Pertambahan Selain 1
Perintah yang digunakan untk pertambahan selain 1 dalam assembler yaitu ADD, dengan tata penulisan perintah ADD adalah:
ADD [operand1],[operand2]


- Operasi Pengurangan
• Pengurangan Dengan Satu 
Perintah yang digunakan untuk penguarangan satu ini adalah perintah DEC, jika kita tulis biasa sama dengan A = A – 1. Tata penulisan dari perintah DEC adalah :
DEC [Variable/Register]
Contoh Program :
MOV CX,05
MOV DL,5A
# MOV AH,02
INT 21
DEC DL
LOOP #
INT 20
• Pengurangan Selain Satu
Bila dalam pertambahan kita gunakan ADD maka dalam pengurangan selain satu digunakan SUB dengan tata penulisannya adalah :
SUB [operand1],[operand2]
- Perkalian
Operasi perkalian dalam assembler dapat menggunakan perintah MUL yang berarti perkalian. Adapun tata penulisannya adalah :
MUL [Register]
Bila memerintahkan dengan perintah MUL, maka yang dilakukan komputer adalah :
• Mengambil nilai register terlampir pada perintah MUL. Contoh MUL BL, maka isi register BL yang diambil
• Kemudian komputer mengambil isi register AL dan dikalikan dengan isi register BL
• Hasilnya dapat dilihat pada register AX. Langkah diatas adalah oprasi 8 bit, sedang untuk operasi 16 bit yang dilakukan komputer adalah :
• Mengambil nilai register terlampir yang besarnya 16 bit. Contohnya : MUL BX
• Kemudian komputer mengambil isi register AX dan dikalikan dengan isi register BX
• Hasilnya dapat dilihat pada register OX
Contoh programnya :
MOV AH,02
MOV BH,32
MOV AL,01
MUL BH
MOV DL,AL
INT 21
INY 20
- Pembagian
Seperti juga perkalian, pembagian pun membedakan cara kerja pembagian dengan 8 bit dan 16 bit. Adapun cara kerja operasi pembagian adalah :
- Pembagian 8 Bit - Pembagian 16 Bit
Tata penulisan : Tata Penulisan:
DIV [Register 8 bit] DIV [Register 16 Bit]

Contoh : Contoh:
DIV BL DIV BX
Dibagi dengan AX Dibagi dengan 
DX:AX
Hasil dilihat di AL Hasil dilihat di DX
Sisa dilihat di AH Sisa dilihat di AX

Contoh Programnya :
MOV BL,0A
MOV AX,0101
DIV BL
MOV AH,02
MOV DL,AL
INT 21
INT 20 

MENCETAK STRING DAN MENGINPUT STRING
 Mencetak Stringv
Sebelum kita mencetak sebuah string terlebih dahulu kita harus mendefinisikan variablenya. Variabel dalam bahasa assembler dapat dibagi menjadi 2 jenis variabel, yaitu :
- Variabel yang dapat dimodifikasi isinya.
Variabel ini adalah variabel yang memakan tempat pada memory, besar memory yang dipakai variabel ini ditentukan oleh besarnya variabel tersebut. Adapun besaran-besaran variabel tersebut adalah :
• DB (Define Byte), mendefinisikan variabel per byte
• DW (Define Word), mendefinisikan variabel per wprd
• DD (Define Double Word), mendefinisikan variabel per 2 word


Tata penulisan variabel jenis ini adalah dengan :
Label [DB/DW/DD] [Isi Variabel]
Contohnya :
Satu db ‘Ini Adalah Sebuah Variabel $’
- Variabel yang tidak dapat dimodifikasi isinya.
Jenis variabel ini tidak akan memakan memory pada komputer, jenis variabel ini hanya dapat dipakai dalam assembler menggunakan compiler. Untuk mendefinisikan jenis variabel ini anda cukup menggantikan besaran pada variabel yang dapat dimodifikasikan isinya menjadi kata equ.
Pada bagian ini akan dibahas bagaimana cara mencetak sebuah kalimat ke layar menggunakan Int 21 Hexa service number 09h. Adapun syarat-syarat untuk menggunakan Int 21 H service 09H ini adalah :
- Masukan Service number Interupt ke register AH.
- Masukan segment dario variabel tempat menampung kata yang akan dicetak ke DS dan offset-nya ke DX dan kata-kata yang dicetak tersebut harus diakhiri dengan tanda dollar ‘$’.
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START : JMP MULAI
;Disini data dimulai
KATA DB ‘TEST KATA-KATA’,13,10
DB ‘SATU $’
MULAI : MOV AH,09H
MOV DX,OFFSET KATA ; ATAU LEA DX,KATA
INT 21H
INT 20H
END START
 Input Satu Karakterv
Untuk input 1 karakter dengan ECHO kita akan menggunakan Interrupt 21H dengan service number 01H. Adapun syarat-syarat menggunakan Interupt 21H service number 01H ini adalah :
- Pada saat sebelum dilakukan proses, register AH harus berisi service number dari interupt 21H yaitu 01H
- Selama proses, proses dapat dihentikan dengan menekan tombol control dan tombol break atau C secara bersamaan.
- Hasil input dari keyboard akan diletakan di register AL
Contoh Programnya :
.MODEL SMALL
.CODE
ORG 100H
START :JMP MULAI
TANYA DB ‘JAWAB SAJA PERTANYAAN INI : ‘,13,10
DB ‘MASUKAN SATU KARAKTER : $’,13,10
HASIL DB ‘KARAKTER ITU : $’
MULAI : MOV AH,09H
LEA DX,TANYA ;MENCETAK TANYA
INT 21H
MOV AH,01H ;SERVICE UNTUK INPUT 1 CHAR
INT 21H
MOV AH,09H
LEA DX,HASIL ;MENCETAK HASIL
INT 21H
MOV AH,02H
MOV DL,AL ;CETAK HASIL INPUT
INT 21H
INT 20H
END START

No comments:

Post a Comment