Sabtu, 15 Oktober 2011

PEMROGRAMAN BAHASA RAKITAN


UTS PRAKTEK
PEMROGRAMAN BAHASA RAKITAN
Dosen : Nahar Mardiyantoro, M.Kom

1.       Menampilkan karakter beratribut M-A dengan foreground merah dan background hitam :
Flowchart :

.model small
.code
org 100h
mulai:
        mov ah,09h
        mov bl,00001100b
        mov cx,13           
int 10h         
a:
        mov ah,02h
        mov dl,77
        mov cx,13
ulang:
        int 21h
        dec dl
        loop ulang
int 20h
end mulai


jika coding tersebut dijalankan akan tampak seperti dalam gambar berikut :


Mov ah,09h adalah perintah untuk memasukan instruksi dengan alamat mov bl,00001100b. Intruksi mov bl,00001100b berfungsi untuk merubah karakter hasilnya menjadi warna merah. Mov cx,13 adalah perulangan sebanyak 13 kali perulangan yang dalam coding diatas akan menampilkan 13 karakter dimulai dari huruf M sampai dengan A. Mov ah,02h adalah perintah untuk mengcopy atau memindahkan. Mov dl,77 adalah intruksi yang berisi bilangan hexa yang merupakan karakter ascii yang akan dicetak. 77 adalah ascii dari “M”.  Karena hasil yang akan ditampilkan adalah pengurangan dari huruf M – A, maka menggunakan dec dl. Perulangan akan berlaku hingga nilai dl = 64 baru stop.

2.       Menampilkan kalimat jika menemukan huruf tertentu maka pencetakan selesai.
Flowchart :



Coding :
.model small
.code
org 100h
mulai :
            jmp ulang
            vkal db 'ARI DWIJAYANTI$'
ulang :
            mov dl, vkal[bx]
            mov ah, 02h
            int 21h
            inc bx
            mov ax, bx
            cmp ax,9
            je keluar
            jmp ulang
        keluar: int 20h

end mulai
 
Jika dijalankan :


 Jmp adalah perintah loncat/lompat. mov dl,vkal [bx] maka dengan alamat vkal[bx] akan dimasukan ke dl, yang dalam intruksi di atas berisi ARI DWIJAYANTI. mov ah 02h pasangan dengan int 21h merupakan perintah untuk menampilkan . inc bx  artinya mengurangi 1 karakter yang ada didalam bx mov ax secara khusus register AX digunakan pada operasi aritmatika dalam operasi pembagian dan pengurangan sedangkan bx biasanya digunakan untuk menunjukan suatu alamat offset dari suatu segmen. cmp ax,9 adalah perintah membandingkan (compare) dengan 9 karakter yang diminta yaitu jika bertemu dengan huruf Y maka akan berhenti mencetak. Jika sudah bertemu dengan karakter yang dimaksud maka akan keluar. Sebaliknya selamat belum menemukan huruf Y, maka instruksi akan diulang terus.


PEMROGRAMAN BAHASA RAKITAN


 UJIAN TENGAH SEMESTER
Pemrograman Bahasa Rakitan
Dosen : Nahar Mardiyantoro, M.Kom

TEORI
1.       Tahapan yang dilakukan dalam mendevelop sebuah software menggunakan bahasa assembly :
-                     -Coding  (membuat intruksi)
      -Coding (membuat instruksi) dalam bahasa asembly menggunakan notepad. Perlu diperhatikan dalam menjalankan program assemblu menggunakan DOS (disk operating system) dimana dalam DOS function service terdapat beberapa pasangan intruksi. File dalam notepad disimpan dalam file asm
-                    -Compare (membandingkan)
Membandingkan coding (instruksi) yang dibuat dalam file txt dalam notepad dengan yang ada di turbo assembler.  Sebelum menjalankan program harus mempunyai file asm yang terdiri dari RTM.EXE,TASM.EXE, TASM.HLP, TLINK.CFG dan TLINK.EXE sebagai syarat untuk menjalankan program.
-          Link
Yaitu merubah file objek kedalam bahasa mesin dengan memanggil tLink/t diikuti dengan nama file.obj
-          Run (menjalankan)
Menjalankan program dalam turbo assembler dengan perintah run.

2.       Perbedaan yang dihasilkan jika melakukan linking terhadap sebuah file OBJ menggunakan parameter /t dan tanpa t :
Setelah saya mencobanya dengan turbo assembler, ternyata jika menggunakan parameter /t, hasilnya akan sesuai dengan apa yang diharapkan, berbeda dengan tidak menggunakan parameter /t pada tLink , hasil akan tetap muncul, namun ada pemberitahuan / peringatan : warning : No Stack. Dapat dilihat dalam gambar :
 

3.       Contoh program yang didalamnya berisikan perulangan :
Berikut adalah contoh program yang menggunakan perulangan untuk menampilkan bilangan genap dari 0 sampai dengan 9 :

.model small
.code
org 100h
 mulai:
mov ah,02h
mov dl,48
mov cx,5
ulang:
int 21h
inc dl
inc dl
loop ulang
int 20h
 end mulai

mov dl,48 adalah perulangan dimulai dari ascii 48 yaitu 0. Mov cx,5 artinya perulangan terjadi sampai 5 kali perulangan. Jika coding diatas dijalankan menggunakan turbo assembler, maka hasilnya sebagai berikut :

4.       Pada contoh program dibawah ini ada 1 register yang tidak sesuai penggunaannya.
 .model small
.code
org 100h
mulai:
mov ah,02h
mov dl,'B'
mov cx,8
lagi:
int 21h
inc al
inc cx
loop lagi
int 20h

end mulai

pada coding tersebut diatas, jika dijalankan menggunakan turbo assembler, maka hasilnya sebagai berikut :
 pada contoh coding tersebut, setelah dijalankan ternyata huruf B tercetak terus menerus dan tiada terbatas. Padahal dalam sebuah program seharusnya memiliki batasan karakter jika karakter yang diharapkan telah sesuai dengan menambahkan tanda $. Dalam contoh program diatas, yang tidak sesuai adalah inc cx . perintah ini ditulis didalam blok looping sehingga melakukan perintah looping yang terus menerus tanpa batasan, padahal perintah looping sudah ada dalam mov cx,8 yang artinya lakukan perulangan sebanyak 8 kali. Jika inc cx  ini kita hapus, maka :

.model small
.code
org 100h
mulai:
mov ah,02h
mov dl,'B'
mov cx,8
lagi:
int 21h
inc al
loop lagi
int 20h

end mulai

hasilnya jika dijalankan sebagai berikut :




Singgle variabel dan array variabel

Singgle Variable merupakan suatu variabel yang hanya dapat menyimpan satu data

contoh : Vkal DB 'YES'
             Vkal,'NO'
maka yang akan ditampilkan adalah NO




Array Variabel  adalah sebuah tempat penyimpanan data dimana salah satu variabel hilang atau diseplit
sebagai contoh dalam flowchart :
coding :
.model small
.code
org 100h
Mulai :
   jmp ulang
   vkal DB 'my name is aridj$'

ulang:
   mov DL,vkal[BX]
   mov ah,02h
   int 21h
   inc bx
   mov ax,bx
   cmp ax,9
   je exit
   jmp ulang
   exit:int 20h

end mulai

jika coding (intruksi) diatas dijalankan dengan command prompt, maka akan tampak dalam gambar :

 pada coding diatas, dapat kita lihat vkal DB 'my name is aridj$' artinya variabel vkal DB berisikan karakter my name is aridj. namun akan ditampilkan hanya sebanyak 9 karakter yang diwakilkan oleh perintah cmp ax,9. maka jika akan dijalankan dalam command prompt, akan tampak hasil my name i.

Sabtu, 01 Oktober 2011

PEMROGRAMAN BAHASA RAKITAN


PERINTAH STRING JUMP DAN COMPARE PADA ASSEMBLER
Dosen : Nahar Mardiyantoro, M.Kom

Instruksi atau perintah pada  mikro kumputer disusun dalam bentuk singkatan kata yang disebut dengan Mnemonic, yang disusun dalam kelompok tertentu dimana tiap kelompok memiliki pasangannya sendiri dan tidak dapat kita pisahkan menurut kehendak dari kita. Berikut salah satu perintah yang menggunakan instruksi string yaitu compare (membandingkan).

Pada Notepad :
.model small
.code
org 100h
Mulai : jmp proses
    bila db 5
    kal1 db 'sama$'
    kal2 db 'lebih kecil$'
    kal3 db 'lebih besar$'
      
Proses:
    mov al,bila
    cmp al,8
    je sama
    ja kecil
    jb besar
  
sama :  mov ah,09h
    lea dx, kal1
    int 21h
    int 20h

kecil : mov ah,09h
    lea dx, kal2
    int 21h
    int 20h

besar : mov ah,09h
    lea dx, kal3
    int 21h

    int 20h
End mulai

Pada intruksi (coding) di atas, kita hendak membandingkan db dengan al, dimana db kita isi dengan angka 5 dan al kita isi dengan 8. Disini peran cmp al, 8 untuk membandingkan, (cmp=compare/Bandingkan). Bandingkan 5 dengan 8 , maka akan didapat hasil lebih besar. Dan hasil akan sebaliknya lebih kecil jika angka 5 dibandingkan dengan angka/bilangan yang lebih kecil.
pada Command Prompt :

Hasil akan berbeda jika kita bandingkan db 5 dengan al, 5 akan didapat hasil sama



Jmp / jump (dalam bahasa indonesia=lompat) merupakan perintah perintah kondisional karena tidak memerlukan syarat untuk melaksanakannya.
je = jump equal jika perintah yang digunakan hanya dua pembanding misal sama dan beda  jne = jump not equal (lompat jika tidak sama )
pembanding yang digunakan ada 3 macam yaitu sama, lebih kecil dan lebih besar maka digunakan :
 je (jump equal = lompat jika sama);
 ja (jump above = lompat ke atas);
 jb (jump bellow= lompat ke bawah).




 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | Best Buy Printable Coupons