Professional Documents
Culture Documents
A.Pengertian
Bahasa Assembly itu sendiri merupakan bahasa pemograman yang tergolong dalam
pemrograman bahasa tingkat rendah (Low Level Lenguage) dan setingkat diatas bahasa mesin ( Machine
Language).
Dalam pemograman assembly kita akan menemukan apa yang disebut dengan register .Register
itu sendiri merupakan memori dalam mikroprosesor yang bekerja dengan kecepatan yang sangat
tinggi .dan jenis –jenis register itu sendiri dibagi menjadi beberapa bagian yaitu
1.Segmen Register
Register Kegunaan
CS (Code Segmen) Menujukan tempat segmen yang sedang aktif
SS (Stack Segmen) Untuk letak segmen yang digunakan o/ Stack
DS (Data Segmen ) Ketempat segmen dimana data-data program disimpan
ES (Extra Segmen) Register bonus yang tidak memiliki tugas khusus
Register Kegunaan
AX u/ op. aritmatika terutama dlm pembagian & pengurangan
BX u/ menunjukan suatu alamat offset dr suatu segmen
CX u/ op.looping dmn register menentukan bnyk-nya looping
DX u/ menampung sisa hasil pembagian 16 bit
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
5.Flags Register
Flag register menujukan kondisi sari suatu kaadaan [ya atau tidak ].karena setiap keadaan dapat
digunakan 1 bit saja ,maka sesuai dengan jumlah bitnya,flag register hanya mampu mencatat
sampai 16 keaddan .
Flag Kegunaan
- OF <OverFlow Flag>. Jika terjadi OverFlow pada operasi aritmatika,
bit ini akan bernilai 1.
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Apabila sudah masuk ke command prom berarti kita tinggal mengejalankan program kita tadi
.yaitu dengan langkah-langkah dibawah ini.
yang pertama cara supaya kita bisa masuk kedalam folder penyimpanan asm yang sudah kita
simpan tadi yaitu di C:/
Cara cepat mencompire-nya lebih cepat maka kita digukan dengan extensi .BAT.
Buka notepad baru dan ketikasn program seperti ini
@echooff
Tasm {nama program} .asm
Tlink/t {nama program} .obj
{nama program}.com
kemudian di folder ASM dan simpan misalnya Latihan.bat
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Praktikum 1
Program pencetakan satu karakter ‘ A ’
====================================================================
.MODEL SMALL ; memulai program
.CODE
ORG 100h ; menujukan bahwa program yang akan dibuat berupa.COM
Mulai:
Ket : pada saat terjadi interuptsi pada 21h,maka register akan melihat isi pada AH Jika berisi
02,maka akan mencetak satu karaktr berdasarka kode ASCII yang terdapat di DL.
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
====================================================================
.MODEL SMALL
.CODE
org 100h
Mulai:
mov ah,02 ; service mencetak satu karakter
mov dl,’B’ ; register yang akan dicetak B
INT 21h
INT 20h
End mulai
====================================================================
Hasil Program :Pencetakan beberapa karakter dg menggunakan servive 02h
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Ket : Pencetakan yang digunakan masih menggunakan service 02h,tetapi disini masih menggunakan
secara manual yaitu pada DL.pada program masih menggunakan DL secra berulang-ulang yaitu akan disi
sejumlah karakter yang akan ditampilkan.
Perulangan (LOOP)
Dalam pencetakan beberapa karakter,selain menggunakan service 02h dapat juga menggunakan looping
atau dengan register CX.
Register CX digunakan secara khusus pada operasi looping dimana register ini menentukan berapa
banyaknya looping yang akan terjadi.
Praktikum 3
===========================================================================
.MODEL SMALL
.CODE
ORG 100h
mulai:
mov ah,02h ;service mencetak karakter
mov dl,'A'
mov cx,25 ; akan melooping sebanyak 25
ulang:
int 21h
inc dl ; tambah DL sebanyak 1
loop ulang ; akan mengulang label ulang sebanyak 25 kali
mov dl,'Y'
mov cx,25
maning:
int 21h ; akan mencetak / menampilkan karakter
dec dl ; kurangi DL senyak 1
loop maning ; akan menulang label maning sebanyak 25 kali
int 20h
End mulai
================================================================
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Ket :
looping atau perulangan ini sama dengan perintah jump.semua instruksi loop menggunakan register CX
memiliki 16 bit dan nilai maksumum dapat mencangkau 65535.
Praktikum 4
mulai:
mov ah,02h ;service mencetak karakter
mov dl,'B'
mov cx,13 ;register untuk me-looping
ulang:
int 21h
inc dl ;Tambah DL Sebanyak 1
inc dl
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Praktikum 5
===========================================================================
.MODEL SMALL
.CODE
ORG 100h
mulai:
mov ah,09h ;service untuk mencetak kalimat
mov al,'A' ;masukan A ke AL
mov bl,00000001b ;service mengubah karakter menjadi berwarna
mov cx,25 ;register untuk me-looping
ulang:
int 10h
inc al ;tambah AL
inc bl ;tambah BL
loop ulang
int 20h
end mulai
===========================================================================
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
===========================================================================
.model small
.code
org 100h
mulai:
ulang:
int 10h
inc al ;tambah AL
loop ulang ;lompat ke ulang
int 20h
end mulai
===========================================================================
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Praktikum 7
=========================================================================
.Model Small
.Code
org 100h
mulai:
jmp proses
vkal db ' my love $ '
vkalr db 'is blink $ '
proses :
mov ah,09h
lea dx,vkal
int 21h
lea dx,vkalr
int 21h
int 20h
end mulai
===========================================================================
Hasil program Prktikum 7
Ket :
LEA :
Praktikum 8
===========================================================================
.model small
.code
org 100h
proses :
mov ah,15h ;AH = 15 h
mov al,4 ;AL= 4
add ah,al ;AH = AH + AL = 19h
mov ax,1234h ;AX=1234 h CF=0
mov bx,0f221h ;BX=01221h
add ax,bx ;AX=AX+BX=1234h+01221h =2455h
mov bx,9ABCh ;BX=9ABCh CF=0
mov cx,5678h ;BX=5678h CF=0
mov dx,0DEF0h :DX=DEF0h CF=0
add cx,dx ;5678h+0DEF0h
adc ax,bx ;1234h+9ABCh
inc al
int 20h
end proses
===========================================================================
Ket ;
ADD , ADC dan INC digunakan untuk menambah.
ADD Tujuan,Asal
Mov ah,15h
Mov al,4
Add ah,al ;ah=ah+al jadi AH=19h
Dan pada ADD ini antara tujuan dan asal harus mempunyai daya tampung yang sama,jika AH =8bit dan
AL=8bit , AX=16bit dan BX= 16 bit.
Adapun hasil penjumlahan akan ditampung pada register AX:CX yaitu ACF13568h .adapun Flag-
flag yang terpengaruh oleh perintah ADD dan ADC adalah CF,PF,AF,ZF,SF dan OF
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
FLOWCHART
praktikum 9
===========================================================================
.Model Small
.Code
org 100h
mulai:
jmp proses
vkal db 10, 'ENTER PASSWORD:',13,10,' $ '
vkalr db 13,10,'INCORECT $'
vkals db 10, 'WELCOME GUYS ',10,' $'
proses:
mov ah,09h
lea dx,vkal
int 21h
mov ah,08h
int 21h
cmp al,'Y'
JE OK1
JNE NO1
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
OK1:
mov ah,02h
mov dl,2Ah
int 21h
mov ah,08h
int 21h
cmp al,'O'
JE OK2
JNE NO2
NO1:
mov ah,09h
lea dx,vkalr
int 21h
jmp proses
OK2:
mov ah,02h
mov dl,2Ah
int 21h
mov ah,08h
int 21h
cmp al,'U'
JE OK3
JNE NO3
NO2:
mov ah,09h
lea dx,vkalr
int 21h
jmp proses
OK3:
mov ah,02h
mov dl,2Ah
int 21h
mov ah,08h
int 21h
cmp al,'R'
JE OK4
JNE NO4
NO3:
mov ah,09h
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
lea dx,vkalr
int 21h
jmp proses
OK4:
mov ah,02h
mov dl,2Ah
int 21h
mov ah,09h
lea dx,vkals
int 21h
int 20h
NO4:
mov ah,09h
lea dx,vkalr
int 21h
jmp proses
end mulai
===========================================================================
KET:
LEA :
mov ah,01h
int 21h
cmp al,'y'
cmp al,'Y'
Je ya
JNE Tidak
ya:
mov ah,09h
lea dx,vkalr
int 21h
int 20h
Tidak:
mov ah,09h
lea dx,vkals
int 21h
int 20h
end proses
===========================================================================
Hasil Program
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Ket :
Pada
program diatas adalah suatu perbandingan yang apabila inputan yang diberikan berupa “ Y” Maka akan
mendeteksi yang sama dengan operant1 atau JE ya:”Berarti anda bisa memahaminya!!
tapi tidak berlaku jika yang kita masukan adalah “y” atau huruf-huruf yang lain maka hasilnya akan
mendeteksi yang JNE tidak: “sayang sekali belum” !!
Jika Inputan yang berikan adalah “T” maka akan mendeteksi JNE tidak.
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
===========================================================================
.Model Small
.Code
org 100h
data:
jmp mulai
asal db 'widyautama ',13,10,'$'
kata db 'masukan huruf yang dicari : ',13,10,' $'
ket1 db 'Huruf ditemukan ',13,10,'$'
ket2 db 'huruf tidak ditemukan ',13,10,' $'
mulai:
xor bx,bx ;cek panjang kalimat
cek :
mov al,asal [bx] ;pindahan asal [index] ke al
inc bx
cmp al,'$'
jne cek
dec bx
mov cx,bx
xor bx,bx
mov ah,9
mov dx,offset asal
int 21h
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
mov ah,9
mov dx,offset kata
int 21h
mov ah,1
int 21h
ulang:
mov dl,asal [bx]
inc bx
cmp dl,'$'
je salah
cmp al,dl
jne ulang
jmp benar
salah:
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
mov ah,9
mov dx,offset ket2
int 21h
jmp barisbaru
benar:
mov ah,2
mov dl,13
int 21h
mov dl,10
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
int 21h
mov ah,9
mov dx,offset ket1
int 21h
jmp barisbaru
barisbaru:
mov ah,2
mov dl,13
int 21h
mov dl,10
int 21h
int 20h
end data
===========================================================================
Hasil program praktikum 11
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Sedangkan POP akan mengambil koin nilai pada stack yang paling atas dan dimasukan pada register 16
bit .dari sini bisa kita lihat bahwa data terakhir dimasukan akan merupakan yang pertama dikeluarkan
.Inillah sebanya operasi stack dinamakan LIFO ( Last In First Out )
Sebagai contoh untuk mengambil nilai dari register AX,BX dan CX yang disimpan pada stack harus
dilakukan pada register CX dahulu brulah BX dan AX seperti :
POPCX: Ambil nilai pada puncak stack,masukan ke CX
POPBX: Ambil nilai pada puncak stack,masukan ke BX
POPAX: Ambil nilai pada puncak stack,masukan ke AX
Bila terbalik dalam menngambil nilai pada stack dengan POP AX kemudian POP BX dan POP CX,maka
nilai yang akan didapatkan pada register AX,BX,CX akan terbalik.
Praktikum 13
===========================================================================
.Model Small
.Code
org 100h
mulai:
mov ax,15
mov bx,80
add ax,bx
mov bx,10
xor cx,cx
ulang:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jne ulang
cetak:
pop dx
add dl,'0'
call cetak_k
loop cetak
int 20h
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
int 21h
ret
cetak_k endp
end mulai
===========================================================================
Hasil Program
Praktikum 14
===========================================================================
.Model Small
.Code
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
org 100h
mulai:
mov bl,10
mov al,14
div bl
Praktikum 15
===========================================================================
.model small
.code
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
org 100h
Tdata:
jmp proses
test_angka DW 345
Proses:
mov ax,test_Angka
mov bx,10
xor cx,cx
ulang:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jne ulang
cetak:
pop dx
add dl,'0'
mov ah,02
int 21h
loop cetak
int 20h
end tdata
===========================================================================
Hasil program
Praktikum 16
===========================================================================
code segment
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
assume cs:code
org 100h
start:
jmp mulai
tanya db 'hello','$'
mulai:
mov ah,09h
mov dx,offset tanya
int 21h
mov ah,01h
int 21h
cmp al,'y'
jne boot
int 20h
boot:
int 18h
code ends
end start
===========================================================================
Hasil program
Praktikum 17
===========================================================================
.model small
.code
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
org 100h
tdata:
jmp res_kan
pesan db 'dibelokan'
end tdata
===========================================================================
Lampiran Code ASCII
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09