Anda di halaman 1dari 35

Pemrograman Bahasa Assembly

Pemograman Bahasa Rakitan Assembly


Oleh :
Ninik Yuliana sir200902

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 Menujukan tempat segmen yang sedang aktif
Segmen)
SS (Stack Untuk letak segmen yang digunakan o/ Stack
Segmen)
DS (Data Ketempat segmen dimana data-data program
Segmen ) disimpan
ES (Extra Register bonus yang tidak memiliki tugas
Segmen) khusus

2.Pointer dan Index Register

Register Pasangan Kegunaan


Register
SP(Stack SS :SP u/ menunjukan alamat dari
Pointer) stack
BP(Base SS:BP u/ mencatat almt dimemori
Pointer) t4 data
SI (Source - Sama spt Register (DI)
Index)
DI(Dstination - u/operasi string dengan
indx) m’akses secara lngsng pd
alamat yg ditunjukan ol ke 2
register

3.General Purpose Register

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

4. Index Pointer Register


Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat
dimemory tempat dari intruksi(perintah) selanjutnya yang akan
dieksekusi. Register IP juga merupakan register 16 bit. Pada
prosesor 80386 digunakan register EIP yang merupakan register
32 bit.

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.

- SF <Sign Flag>. Jika digunakan bilangan bertanda


bit ini akan bernilai 1
- ZF <Zero Flag>. Jika hasil operasi menghasilkan
nol, bit ini akan bernilai 1.
- CF <Carry Flag>. Jika terjadi borrow pada operasi
pengurangan atau carry pada
penjumlahan, bit ini akan bernilai
1.
- PF <Parity Flag>. Digunakan untuk menunjukkan
paritas bilangan. Bit ini akan
bernilai 1 bila bilangan yang
dihasilkan merupakan bilangan
genap
- DF <Direction Flag>. Digunakan pada operasi string
untuk menunjukkan arah proses.

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

- IF <Interrupt Enable Flag>. CPU akan mengabaikan interupsi


yang terjadi
jika bit ini 0.
- TF <Trap Flag>. Digunakan terutama untuk
Debugging, dengan operasi step
by step.
- AF <Auxiliary Flag>. Digunakan oleh operasi BCD,
seperti pada perintah AAA.
- NT <Nested Task>. Digunakan pada prosesor 80286
dan 80386 untuk menjaga
jalannya interupsi yang terjadi
secara beruntun.
- IOPL <I/O Protection level>. Flag ini terdiri atas 2 bit dan
digunakan pada
prosesor 80286 dan 80386 untuk
mode proteksi
- PE <Protection Enable>. Digunakan untuk mengaktifkan
mode proteksi. Flag ini akan
bernilai 1 pada mode proteksi dan
0 pada mode real.
- MP <Monitor Coprosesor> Digunakan bersama flag TS untuk
menangani
terjadinya intruksi WAIT.
- EM <Emulate Coprosesor>. Flag ini digunakan untuk
mensimulasikan
coprosesor 80287 atau 80387
- TS <Task Switched>. Flag ini tersedia pada 80286
keatas.
- ET <Extension Type> Flag ini digunakan untuk
menentukan jenis
coprosesor80287 atau 80387.
- RF <Resume Flag>. Register ini hanya terdapat pada
prosesor 80386 keatas
- VF <Virtual 8086 Mode>. Bila flag ini bernilai 1 pada saat
mode proteksi,
mikroprosesor akan
memungkinkan dijalankannya
aplikasi mode real pada
mode proteksi. Register ini hanya
terdapat pada 80386 keatas

Perintah –Perintah Debug


• A : Merakit intruksi simbolik (kode mesin)
• D : menampilkan isi suatu daerah memori
• E : memasukan data ke memori yang dimulai pad lokasi tertentu

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

• G : run executable program ke memori


• N : menamai program
• P : eksekusi sekumpulan intruksi yang terkait
• Q : quit
• R : menampilkan isi satu atau lebih register
• T : trace isi sebuah intruksi
• U : unassembled kode mesin ke kode simbolik
• W : menulis program ke disk

Langkah-langkah Pemrograman Bahasa assembly

1.Buatlah Folder asm di C:/


2.Dan untuk menuliskan program assemblynya kita bisa gunakan
notepad .dan penyimpananya dimasukan di folder ASM yang
sudah kita buat tadi,
Dan penyimpanannya kita tambahkah .asm misalnya
latihan.asm
3.Dan selanjutnya yang kita lakukan adalah meng-compire
/menjalankan program tadi apakah sudah benar atau masih
terdapat kesalahan yaitu dengan
Klik AllProgram –Accessorise- pilih Command Prompt.
Apabila sudah kita pilh maka akan munjul tampilan seperti ini

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:/

 selanjutnya kita masukan ke TASM {NAMA


PROGRAM }.asm
TASM digunakan untuk mengetest apakah masih terdapat
kesalahn dalam program atau tidak.

Dan kita masukan ke TLINK / t { NAMA PROGRAM }.OBJ


TLINK / t untuk me link-kaan program menjadi program COM
TLINK untuk melink-kan program menjadi program EXE

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

 Selanjutnya kita tinggal memanggil program kita misalnya


Lathan,.COM.
Kemudian ENTER.

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

Praktikum-praktikum Bahasa
Assembly

Pencetakan Satu Karakter

Praktikum 1
Program pencetakan satu karakter ‘ A ’

==========================================
==========================
.MODEL SMALL ; memulai program
.CODE
ORG 100h ; menujukan bahwa program yang akan dibuat
berupa.COM

Mulai:

Mov ah,02 ; service unk mencetak satu karakter


Mov dl , ‘A’

INT 21h ; interrupt untk menampilkan / mencetak


isi program
INT 20h ; intrurrupt untk menghentikan program
End mula ; mengahiri program
==========================================
==========================

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Hasil program : pencetakan satu Karakter ‘A’

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.

PENCETAKAN BEBERAPA KARAKTER dengan


Service 02h
Praktikum 2
Program pencetakkan beberapa karakter dengan menggunakan
service 02h.
Program.misal kita akan mencetak ‘ BUNGA ’

=======================================
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

mov dl,’U’ ; register yang akan dicetak U


INT 21h

mov dl,’N’ ; register yang akan dicetak N


INT 21h

mov dl,’G’ ; register yang akan dicetak G


INT 21h

mov dl,’A’ ; register yang akan dicetak A


INT 21h

INT 20h
End mulai
=======================================
=============================
Hasil Program :Pencetakan beberapa karakter dg
menggunakan servive 02h

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)
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

Program pencetakan karakter huruf


ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFED
CBA

==========================================
=================================
.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

Hasil program praktikum 3 : Mencetak karakter



ABCDEFGHIJKLMNOPQRSTUVWXYYXWVUTSRQPONMLKJIHGFED
CBA ’

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

Program menampilkan karakter ‘ BDFHJLNPRTVXZ ‘


==========================================
================================
.MODEL SMALL
.Code
org 100h

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

loop ulang ;Lompat ke label ulang


int 20h ;service menghentikan program
end mulai
==========================================
=================================

Hasil program praktikum 4

Membuat Karakter Huruf menjadi Berwarna


Tadi kita sudah bisa menampilkan beberapa karakter,dan sekarang
kita akan mengmodif tampilan karakter tdi menjadi tulisan berwarna
agar lebih menarik.dengan menggunakan register BL.

Praktikum 5

Program tampilan karakter berwarna

==========================================
=================================
.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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

end mulai
==========================================
=================================

Hasil program praktikum 5

Membuat Warna Background


Praktikum 6

Program membuat warna background

==========================================
=================================
.model small
.code
org 100h
mulai:

mov ah, 09h ;service untuk mencetak kalimat


mov al, 'A’
mov bl, 01001101b ; service membuat baground warna
mov cx, 10 ;looping senyak 10 kali

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

==========================================
=================================

Hasil Program Praktikum 6

Membuat Program dengan JMP


Perintah JMP (jump) merupakan perintah yang digunakan untuk
melompat daerah data progam.

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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Ket :
LEA : Perintah untuk mendapatkan alamat dari sebuah variable..
JMP: Perintah untuk melakukan lompatan ke label tertentu.
DB (Define Byte) : suatu jenis data yang besarnya 1 byte

Program Pengoprasian Aritmatika


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
==========================================
=================================

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

INC (increment)digunakan khusus untuk pertambahan dengan 1.

Membuat Program Password

FLOWCHART

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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:

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

mov ah,09h
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
==========================================
=================================

Hasil program praktikum 9

KET:

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

LEA : Perintah untuk mendapatkan alamat dari sebuah variable..


JMP: Perintah untuk melakukan lompatan ke label tertentu.
DB (Define Byte) : suatu jenis data yang besarnya 1 byte
JE ( JUMP IF EQUAL ):Lompat ,jika operant1=operant 2
JNE (JUMP NOT EQUAL) :Lompat jika operant 1 tidak sama dengan
operant 2

Membuat Program Inputan


Praktikum 10
==========================================
=================================
.Model Small
.Code
org 100h
Proses :
jmp mulai
vkal db 13,' apakah anda sudah belajar :??(y/t) $ '
vkalr db 10, ' Berarti anda bisa memahaminya !! $ '
vkals db 10, ' sayang sekali belum !! $ '
Mulai :
mov ah,09h
lea dx,vkal
int 21h

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
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

end proses
==========================================
=================================
Hasil Program

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.

LEA : Perintah untuk mendapatkan alamat dari sebuah variable..


JMP: Perintah untuk melakukan lompatan ke label tertentu.
DB (Define Byte) : suatu jenis data yang besarnya 1 byte
JE ( JUMP IF EQUAL ):Lompat ,jika operant1=operant 2
JNE (JUMP NOT EQUAL) :Lompat jika operant 1 tidak sama dengan
operant 2
CMP(COMPERE) :Digunakan untuk membandingkan antara operant
1dengan operant2.
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Membuat program pencarian huruf


Praktikum 11
==========================================
=================================
.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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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
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

Program POP dan PUSH


Pop Dan Push dapat kita bayingkansebagai sebuah tabung yang
panjang.sedangkan nilai pada register dapat dibayangkan berbentuk
koin yang dimasukan dalam tabung tersebut.dan push itu sendiri
diibaratkan kita sedang memasukan koin
PUSH AX :Simpan nilai AX pada stack
PUSH BX: Simpan nilai BX pada stack
PUSH CX: Simpan nilai CX pada stack

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

cetak_k proc near

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

mov ah,02
int 21h
ret
cetak_k endp

end mulai
==========================================
=================================

Hasil Program

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Praktikum 14
==========================================
=================================
.Model Small
.Code
org 100h

mulai:
mov bl,10
mov al,14
div bl

push ax ;simpan nilai ax pd stack


mov dl,al
add dl,30h
mov ah,2
int 21h

pop ax ;ambil nilai pada puncak stack masukan ke ax


mov dl,ah
mov ah,2
add dl,30h
int 21h
int 20h
end mulai
==========================================
================================
Hasil program

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Praktikum 15
==========================================
=================================
.model small
.code
org 100h

Tdata:
jmp proses
test_angka DW 345

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Praktikum 16
==========================================
=================================
code segment

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

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

Praktikum 17
==========================================
=================================
.model small
.code
org 100h
tdata:
jmp res_kan
pesan db 'dibelokan'

noint equ 05h


bag_res proc
push ax
push bx
push dx
push es
push di
push ds
push si
mov ax,1300h
mov bl,01001111b
mov bh,00h
mov,20h
mov dh,12h
mov cx,44h
push cx
push es
lea bp,pesan
Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09
Pemrograman Bahasa Assembly

1nt 10h
push si
push ds
push di
push es
push dx
push cx
push bx
push ax
bag_res endp
res_kan :
mov ah,25h
mov al,noint
lea dx,res_kan
int 27h

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
Pemrograman Bahasa Assembly

Ninik Yuliana
TI / SIR200902
STMIK WIDYA UTAMA PURWOKERTO ‘09