ekor

Jumat, 12 Desember 2014

PRAKTIKUM 15-21

ZAENAL AMIN         12429180       nimanal-aja.blogspot.com                zaenala100@gmail.com

Praktek XV
 

HASIL RUN
PRAKTEK XVI
HASIL RUN :

   

PRAKTEK XVII
Setelah di run,tidak bias karna gada file pustaka.mcr, maka perlu coding tambahan
Dan hasilnyaaaa,,,eng ing eeeng,, !!!!!
Praktek XVIII
Hasil run:
Praktikum XIX
HASIL RUN
PRAKTIKUM XX
 

HASIL RUN
PRAKTIKUM XX1
HASIL RUN

Selasa, 02 Desember 2014

LATIHAN XII

eitsss,, ternyata masih ada yg belum aku upload,, stelah lama bersemayam di draf, akhirnya ke upload jg,,, baru latihan ya, jika ada senior melihat thread ini, silahkan di perbaiki,, masukan sodara adalah kesuksesan bagi saya,,, cuzzzzzzzzzzzzzzzz

 assembly latihan xii


.MODEL SMALL 
.CODE

ORG 100h                                            ; meminta memory kosong sebanyak 100h
 

TData : JMP Proses                           ; lompat ke proses
Kal DB 'LANG LING LUNG $'            ; menampilkan 14 karakter (LANG LING LUNG)
Ganti DB 13,10,'$'                              ; proses baris baru atau enter
Stacks DW ?                                       ; menyimpan nilai sementara
Proses:
LEA DX,Kal                                        ; alamat dari register DX
PUSH DX 


MOV AH,09                                       ; nilai Servis untuk cetak karakter
INT 21h                                              ;  Cetak karakter
LEA DX,Ganti                                    ; alamat dari register DX, DX = Ganti
INT 21h                                               ; Cetak karakter
 

POP DX
INT 21h                                               ; Cetak karakter
 

Exit : INT 20h                                    ; Program dikembali ke DOS
END TData


tingkiyu/ matursuwon sanget,,
 

sedikit saya copas materi pak dosen saya, yg tentunya uda master,, pengen kenal?? besok sya kenalin.

next..
secara umum stack bisa diartikan adalah tumpukan, akan tetapi dalam hal assembler stack adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu register untuk sementara.Pada Assembler yang langsung menggunakan stack adalah perintah PUSH,POP,PUSF dan POPF. 

rangkuman program diatas=> Kita menggunakan perintah PUSH, kita menyimpan nilai register DX pada stack, kemudian pada perintah POP kita mengambil keluar nilai yang disimpan tersebut dari stack. Pada program ini kita bisa lihat peran stack menggantikan variable untuk menyimpan nilai.

Rabu, 19 November 2014

JAWABAN UTS SEMESTER V

ASSALAMUALAIKUM WR.WB ( Pembaca yang budiman )



·         Zaenal Amin 
·         12429180

Jawaban UTS SEMSTER 5
1. Apa yang dimaksud register,memory,interrupt dan sebutkan 8 general pusposse
  •  Register adalah sebagian kecil memori 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.
  • computer memory atau memory, merupakan piranti komputer yang digunakan sebagai media penyimpan data dan informasi saat menggunakan komputer.
  • Interrupt adalah suatu kejadian atau peristiwa yang menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut.
  • ·         8 general purpuse 
                a. AX (AH + AL) = Accumulator Register
                b. BX (BH + BL) = Basis Register
                c. CX (CH + CL) = Counter Register                           
                d. DX (DH + DL) = Data Register

  
2. Arsitektur komputer ?
  • Input device = piranti masukan terdiri dari, mouse,keyboard,scaner dll
  • Motherboot= sebagai tempat beberapa komponen komputer
  •  prosessor    = otak dari komputer (CPU)
  • Rom  = sebagai penyimpanan data.
  • Ram= sebagai pembaca sistem, penyimpanan sementara.
  • Output device = piranti keluaran/ menampilkan hasil.

 3. Apa yang dimaksud opcode, bahasa assembly & bahasa mesin & kenapa kita pelajari       assembley?
  • - opCode adalah merupakan bagian perintah yang harus dikerjakan.
  • - Bahasa assembly adalah sebuah program yang terdiri dari instruksi-instruksi  yang menggantikan kode-kode biner dari bahasa mesin dengan mnemonik  yang mudah diingat.
  • - Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh komputer. Program bahasa mesin sering disebut sebagai kode objek.
  • - Kenapa ? untuk mengetahui suatu register/code-kode register yang terdapat pada komputer. Realitanya, agar kita mengerti bagaimana cara kerja komputer itu secara detail.
4.  Rubah kedalam bentuk binner
  1. 125            =  01111101b
  2. 47h            =  01000111b
  3. 330             =  00011011b
  4. 0AAAh      =  0000101010101010b
  5. 68           =  01000100b
5. program tampil “ PQSTUV”
.model small
.code
.org 100h
   proses:
                 mov ah,02h       ;nilai servis
                 mov dl,'p'          ;dl karakter 'a' atau dl=41h
                 mov cx,07h       ;banyaknya pengulangan akan ditampilkan
   ulang:
         int 21h              ;cetak karakter
         inc DL              ;tambah dl dg 1
         loop ulang        ;lompat dg ulang
int 20h
end proses





6 .            PENJELASAN DARI PROGRAM (OUTPUT  'STMIK CIKARANG TEKNIK  INFORMATIKA' )


.MODEL SMALL
.CODE
ORG 100h
Text : jmp mulai                                                                 ;lompat(perintah lompatan tak bersyarat)
Tulis DB 'STMIK CIKARANG TEKNIK INFORMATIKA'            ;definisi karakter/byte
Mulai:                                  
XOR BX, BX                          ; berfungsi untuk me-nol register operan BX=0                      
MOV CX,33                          ; Jumlah karakter yang akan di cetak
Ulang:
MOV DL,Tulis [BX]           ; Mencetak bx ke DL
MOV Ah,02                          ; NILAI servis
Int 21h                                   ; perintah untuk cetak karakter
Inc  BX                                    ; BX ditambah (+) 1
LOOP Ulang                         ; kembali ke ulang
Int 20h                                  ; program dikembalikan ke DOS
END Text




 TERIMA KASIH
WASSALAMU'ALAIKUM WR.WB



Minggu, 16 November 2014

BELAJAR ASSEMBLY


Assembly Dan Eksekusi Program
Source program yang ditulis dalam bahasa assembly harus diassemble menjadi object program bahasa mesin sebelum dapat dieksekusi. Hal ini dilakukan oleh program assembler, yang mengganti semua simbol untuk mode operasi dan penggalamatan dengan kode biner yang digunakaa dalam instruksi mesin, dan mengganti semua nama dan label dengan nilai sebenarnya.
Assembler menetapkan alamat untuk instruksi dan blok data, mulai dari alamat yang ada dalam asembler directive ORIGIN. Juga menyisipkan konstanta yang dapat dinyatakan dalam perintah DATAWORD dan ruang memori cadangan sebagaimana yang diminta oleh perintah RESERVE. Bagian utama proses assembly menetapkan nilainilai untuk menggantikan namanama tersebut. Pada beberapa kasus, dimana nilai suatu nama ditetapkan oleh directive EQU, maka ini merupakan tugas langsung. Pada kasus lain,dimana suatu nama didefinisikan dalam field Label suatu instruksi, maka nilai yang diwakili nama ini ditentukan dengan lokasi instruksi ini dalam object program terassemble. Karenanya, assembler barns mencatat alamatalamat yang menghasilkan kode mesin untuk instruksi yang berurutan. Misalnya, nama START dan LOOP masingmasing akan menetapkan nilai 100 dan 112.
Membuat Program COM
Untuk membuat program .COM yang hanya menggunakan 1 segment, bisa anda buat dengan model program seperti gambar 6.1. Bentuk yang digunakan disini adalah bentuk program yang dianjurkan(Ideal). Dipilihnya bentuk program ideal dalam buku ini dikarenakan pertimbangan dari berbagai keunggulan bentuk program ideal ini seperti, prosesnya lebih cepat dan lebih mudah digunakan oleh berbagai bahasa tingkat tinggi yang terkenal(Turbo Pascal dan C).
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+---------------------+
| TEMPAT DATA PROGRAM |
+---------------------+
Label2 : +---------------------+
| TEMPAT PROGRAM |
+---------------------+
INT 20H
END Label1
Supaya lebih jelas bentuk dari program ideal, marilah kita telusuri lebih lanjut dari bentuk program ini.


MODEL SMALL
Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang bisa digunakan adalah :
TINY
Jika program anda hanya menggunakan 1 segment seperti program COM. Model ini disediakan khusus untuk program COM.
SMALL
Jika data dan code yang digunakan oleh program kurang dari ukuran 1 segment atau 64 KB.
MEDIUM
Jika data yang digunakan oleh program kurang dari 64 KB tetapi code yang digunakan bisa lebih dari 64 KB.
- COMPACT
Jika data yang digunakan bisa lebih besar dari 64 KB tetapi codenya kurang dari 64 KB.
- LARGE
Jika data dan code yang dipakai oleh program bisa lebih dari 64 KB.
- HUGE
Jika data, code maupun array yang digunakan bisa lebih dari 64 KB.
Mungkin ada yang bertanya-tanya mengapa pada program COM yang dibuat digunakan model SMALL dan bukannya TINY ? Hal ini disebabkan karena banyak dari compiler bahasa tingkat tinggi yang tidak bisa berkomunikasi dengan model TINY, sehingga kita menggunakan model SMALL sebagai pemecahannya.

.CODE
      .CODE Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan untuk menyimpan program yang nantinya akan dijalankan.

ORG 100h
       Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte kosong pada saat program dijalankan. 100h byte kosong ini nantinya akan ditempati oleh PSP(Program Segment Prefix) dari program tersebut. PSP ini digunakan oleh DOS untuk mengontrol jalannya program tersebut.

JMP
      Perintah JMP(JUMP) ini digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP. Adapun syntaxnya adalah:
Tujuan JUMP: Dimana tujuannya dapat berupa label seperti yang digunakan pada bagan diatas. Mengenai perintah JUMP ini akan kita bahas lebih lanjut nantinya.
Perintah JUMP yang digunakan pada bagan diatas dimaksudkan agar melewati tempat data program, karena jika tidak ada perintah JUMP ini maka data program akan ikut dieksekusi sehingga kemungkinan besar akan menyebabkan program anda menjadi Hang.

 INT 20h
      Perintah INT adalah suatu perintah untuk menghasilkan suatu interupsi dengan syntax:
INT NoInt
Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada Dos. Pada program COM cara ini bukanlah satu-satunya tetapi cara inilah yang paling efektif untuk digunakan. Bila anda lupa untuk mengakhiri sebuah program maka program anda tidak akan tahu kapan harus selesai, hal ini akan menyebabkan komputer menjadi hang.

MENCETAK HURUF
     Bila dihasilkan interupsi 21h apa yang akan dikerjakan oleh komputer ?. Jawabnya, ada banyak sekali kemungkinan. Pada saat terjadi interupsi 21h maka pertama-tama yang dilakukan komputer adalah melihat isi atau nilai apa yang terdapat pada register AH. Misalkan bila nilai AH adalah 2 maka komputer akan mencetak sebuah karakter, berdasarkan kode ASCII yang terdapat pada register DL. Bila nilai pada register AH bukanlah 2, pada saat dilakukan interupsi 21h maka yang dikerjakaan oleh komputer akan lain lagi.
Dengan demikian kita bisa mencetak sebuah karakter yang diinginkan dengan meletakkan angka 2 pada register AH dan meletakkan kode ASCII dari karakter yang ingin dicetak pada register DL sebelum menghasilkan interupsi 21h.

MENCETAK KARAKTER BESERTA ATRIBUT

Sebuah karakter disertai dengan warna tentunya akan lebih menarik. Untuk itu anda bisa menggunakan interupsi ke 10h dengan aturan pemakaiannya :
INPUT
AH = 09h
AL = Kode ASCII dari karakter yang akan dicetak
BH = Nomor halaman(0 untuk halaman 1)
BL = Atribut atau warna dari karakter yang akan dicetak
CX = Banyaknya karakter tersebut akan dicetak
Setelah semua register dimasukkan nilainya maka lakukanlah interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter tanpa menggerakkan kursor.

PENGULANGAN DENGAN LOOP
Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang. Adapun syntax dari perintah ini adalah :
LOOP Tujuan
Tujuan dapat berupa suatu label yang telah didefinisikan, contoh:
MOV CX,3 ; Banyaknya pengulangan yang dilakukan
Ulang : INT 10h ; Tempat terjadinya pengulangan
LOOP Ulang ; Lompat ke label 'Ulang'
Pada proses pengulangan dengan perintah LOOP, register CX memegang suatu peranan yang khusus dimana register ini dijadikan sebagai counter/penghitung terhadap banyaknya looping yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai 0. Proses looping akan selesai bila nilai pada register CX mencapai nol. Seperti pada contoh diatas, maka interupsi 10h akan dihasilkan sebanyak 3 kali(sesuai dengan nilai CX).
Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP karena hal ini akan menyebabkan nilai CX diSET terus sehingga proses looping tidak bisa berhenti.
TRICK:
Bila anda menetapkan nilai CX menjadi nol pada saat pertama kali sebelum dilakukan loop, maka anda akan mendapatkan proses looping yang terbanyak. Hal ini dikarenakan proses pengurangan 0 dengan 1 akan menghasilkan nilai FFFFh(-1), Contoh :
MOV CX,00
Ulang: LOOP Ulang
Operasi Aritmatika
Operasi Penambahan
a.                   ADD
Untuk menambah dalam bahasa assembler digunakan perintah ADD dan ADC serta INC. Perintah ADD digunakan dengan syntax :
ADD Tujuan,Asal
Perintah ADD ini akan menambahkan nilai pada Tujuan dan Asal. Hasil yang didapat akan ditaruh pada Tujuan, dalam bahasa pascal sama dengan instruksi Tujuan:=Tujuan + Asal. Sebagai contohnya :
MOV AH,15h ; AH:=15h
MOV AL,4 ; AL:=4
ADD AH,AL ; AH:=AH+AL, jadi AH=19h
Perlu anda perhatikan bahwa pada perintah ADD ini antara Tujuan dan Asal harus mempunyai daya tampung yang sama, misalnya register AH(8 bit) dan AL(8 bit), AX(16 bit) dan BX(16 bit).
Mungkin ada yang bertanya-tanya, apa yang akan terjadi bila Tujuan tempat hasil penjumlahan disimpan tidak mencukupi seperti pertambahan 1234h dengan F221h.
1234 h Biner --> 0001 0010 0011 0100
F221 h Biner --> 1111 0010 0010 0001
---------- + --------------------- +
10455 h 1 0000 0100 0101 0101
Pada pertambahan diatas dapat dilihat bahwa pertambahan bilangan 1234 dengan F221 akan menghasilkan nilai 10455. Supaya lebih jelas dapat anda lihat pada pertambahan binernya dihasilkan bit ke 17, padahal register terdiri atas 16 bit saja. Operasi pertambahan yang demikian akan menjadikan carry flag menjadi satu, Contoh : 

MOV AX,1234h ; NIlai AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
ADD AX,BX ; Nilai AX menjadi 0455h dan carry=1
b.               ADC
Perintah ADC digunakan dengan cara yang sama pada perintah ADD, yaitu :
ADC Tujuan,Asal
Perbedaannya pada perintah ADC ini Tujuan tempat menampung hasil pertambahan Tujuan dan Asal ditambah lagi dengan carry flag (Tujuan:=Tujuan+Asal+Carry). Pertambahan yang demikian bisa memecahkan masalah seperti yang pernah kita kemukakan, seperti pertambahan pada bilangan 12345678h+9ABCDEF0h.
Seperti yang telah kita ketahui bahwa satu register hanya mampu menampung 16 bit, maka untuk pertambahan seperti yang diatas bisa anda gunakan perintah ADC untuk memecahkannya, Contoh:
MOV AX,1234h ; AX = 1234h CF = 0
MOV BX,9ABCh ; BX = 9ABCh CF = 0
MOV CX,5678h ; BX = 5678h CF = 0
MOV DX,0DEF0h ; DX = DEF0h CF = 0
ADD CX,DX ; CX = 3568h CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1
Hasil penjumlahan akan ditampung pada register AX:CX yaitu ACF13568h.
Adapun flag-flag yang terpengaruh oleh perintah ADD dan ADC ini adalah CF,PF,AF,ZF,SF dan OF

c.                   INC
Perintah INC(Increment) digunakan khusus untuk pertambahan dengan 1. Perintah INC hanya menggunakan 1 byte memory, sedangkan perintah ADD dan ADC menggunakan 3 byte. Oleh sebab itu bila anda ingin melakukan operasi pertambahan dengan 1 gunakanlah perintah INC. Syntax pemakainya adalah :
INC Tujuan
Nilai pada tujuan akan ditambah dengan 1, seperti perintah Tujuan:=Tujuan+1 dalam Turbo Pascal. Tujuan disini dapat berupa suatu register maupun memory. Contoh : perintah INC AL akan menambah nilai di register AL dengan 1. Adapun flag yang terpengaruh oleh perintah ini adalah OF,SF,ZF,AF dan PF.

d.                  Program Penambahan dan Debug
Pada program penambahan, setelah dikadikan program COM, cobalah menggunakan debug untuk melihat kebenaran dari hasil penjumlahan tersebut, perintahnya adalah:
C:\>debug Tambah.com
-r < tekan enter >
AX=0000 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=3597 ES=3597 SS=3597 CS=3597 IP=0100 NV UP EI PL NZ NA PO NC
3597:0100 B415 MOV AH,15
-t < tekan enter >
            Ulangilah perintah –t disini sampai nilai INT 20 muncul, kemudian tekanlah –Q.

Operasi Pengurangan
a.                   SUB
Untuk Operasi pengurangan dapat digunakan perintah SUB dengan syntax:
SUB Tujuan,Asal
Perintah SUB akan mengurangkan nilai pada Tujuan dengan Asal. Hasil yang didapat akan ditaruh pada Tujuan, dalam bahasa pascal sama dengan instruksi Tujuan:=Tujuan-Asal.
Contoh :
MOV AX,15 ; AX:=15
MOV BX,12 ; BX:=12
SUB AX,BX ; AX:=15-12=3
SUB AX,AX ; AX=0
Untuk menolkan suatu register bisa anda kurangkan dengan dirinya sendiri seperti SUB AX,AX.

b.                  SBB
Seperti pada operasi penambahan, maka pada operasi pengurangan dengan bilangan yang besar(lebih dari 16 bit), bisa anda gunakan perintah SUB disertai dengan SBB(Substract With Carry). Perintah SBB digunakan dengan syntax:
SBB Tujuan,Asal
Perintah SBB akan mengurangkan nilai Tujuan dengan Asal dengan cara yang sama seperti perintah SUB, kemudian hasil yang didapat dikurangi lagi dengan Carry Flag(Tujuan:=Tujuan-Asal-CF).
c.                   DEC
Perintah DEC(Decrement) digunakan khusus untuk pengurangan dengan 1. Perintah DEC hanya menggunakan 1 byte memory, sedangkan perintah SUB dan SBB menggunakan 3 byte. Oleh sebab itu bila anda ingin melakukan operasi pengurangan dengan 1 gunakanlah perintah DEC. Syntax pemakaian perintah dec ini adalah:
DEC Tujuan
Nilai pada tujuan akan dikurangi 1, seperti perintah Tujuan:=Tujuan-1 dalam Turbo Pascal. Tujuan disini dapat berupa suatu register maupun memory. Contoh : perintah DEC AL akan mengurangi nilai di register AL dengan 1.

Operasi Perkalian
Untuk perkalian bisa digunakan perintah MUL dengan syntax:
MUL Sumber
Sumber disini dapat berupa suatu register 8 bit(Mis:BL,BH,..), register 16 bit(Mis: BX,DX,..) atau suatu varibel. Ada 2 kemungkinan yang akan terjadi pada perintah MUL ini sesuai dengan jenis perkalian 8 bit atau 16 bit.
Bila Sumber merupakan 8 bit seperti MUL BH maka komputer akan mengambil nilai yang terdapat pada BH dan nilai pada AL untuk dikalikan. Hasil yang didapat akan selalu disimpan pada register AX. Bila sumber merupakan 16 bit seperti MUL BX maka komputer akan mengambil nilai yang terdapat pada BX dan nilai pada AX untuk dikalikan. Hasil yang didapat akan disimpan pada register DX dan AX(DX:AX), jadi register DX menyimpan Word tingginya dan AX menyimpan Word rendahnya.

Operasi Pembagian
Operasi pada pembagian pada dasarnya sama dengan perkalian. Untuk operasi pembagian digunakan perintah DIV dengan syntax:
DIV Sumber
Bila sumber merupakan operand 8 bit seperti DIV BH, maka komputer akan mengambil nilai pada register AX dan membaginya dengan nilai BH. Hasil pembagian 8 bit ini akan disimpan pada register AL dan sisa dari pembagian akan disimpan pada register AH.
Bila sumber merupakan operand 16 bit seperti DIV BX, maka komputer akan mengambil nilai yang terdapat pada register DX:AX dan membaginya dengan nilai BX. Hasil pembagian 16 bit ini akan disimpan pada register AX dan sisa dari pembagian akan disimpan pada register DX.



HASIL PERCOBAAN

Pernyataan Mencetak Huruf

Listing Program
Hasil Eksekusi  
Keterangan : Nilai servis 02h dimasukkan kedalam AH melalui perintah MOV, kemudian huruf A dicetak ke dalam DL. Fungsi DOS lalu dikerjakan melalui interupsi 021h.

Pernyataan Mencetak Karakter Beserta Atribut

Listing Program
Hasil Eksekusi 
Keterangan : Program untuk memunculkan nilai A sebanyak tiga kali.


Mencetak Beberapa Karakter Dengan  Pengulangan  LooP

LISTING PROGRAM :
Hasil Eksekusi
Keterangan : Nilai servis yang digunakan kali ini adalah 02h. Lalu dicetaklah huruf mulai dari huruf yang paling awal yaitu A. Kemudian nilai perulangan 10h dimasukkan sehingga hurufnya nantinya akan keluar 10 kali. Dengan menggunakan loop pada fungsi ulang, lalu huruf selanjutnya sampai huruf ke-10 pun dicetak dengan menggunakan fungsi INC sehingga setelah A muncul huruf B, lalu C sampai akhirnya didapatkan hasil akhir diatas.

Operasi Penambahan Dengan ADD

LISTING PROGRAM :
Hasil Eksekusi
Keterangan :
Pertama, nilai 15h dimasukkan ke AH, lalu 4 dimasukkan ke AL. Jadi, AX=1504. Kemudian nilai AL ditambahkan ke AH sehingga nilai AH menjadi 19. Akhirnya nilai AX =1904. Nilai yang ditambahkan disini hanya AH sehingga yang berubah hanya AH, bukan AL yang tetap bernilai 4 karena tujuannya adalah AH.

Operasi Penambahan Dengan ADC
                       
LISTING PROGRAM :

Hasil Eksekusi
Pada awalnya, nilai 1234 dimasukkan ke AX, 9ABC ke BX, 5678 ke CX dan DEF0 ke DX. Nilai DX ditambahkan ke CX, jadi CX=3568 dengan nilai CF=1. Lalu nilai BX ditambahkan ke AX dengan menggunakan perintah ADC, hasilnya AX=ACF1. Dapat dilihat bahwa carry flagnya juga 1. Kemudian, hasil akhirnya disini yang ditampung pada AX:CX adalah ACF13568h.

Operasi Penambahan Dengan INC

LISTING PROGRAM :
Hasil Eksekusi
Keterangan: Nilai 1234 dimasukkan pada AX, sehingga AH=12 dan AL=34.Fungsi increment pun dikerjakan pada keduanya secara terpisah. Awalnya INC dikerjakan pada AH
sehingga nilainya berubah menjadi 13, AX=1334. Lalu dikerjakan pada AL, sehingga nilainya berubah menjadi 35. Hasil akhir AX=1335.

Program Penambahan dan Debug
LISTING PROGRAM :
Hasil Eksekusi
Keterangan:
Awalnya 15h dimasukkan ke AH, 4 ke AL. Lalu AL ditambahkan AH, sehingga AX=1904. Kemudian AX dimasukkan 1234H, BX=0F221h. BX pun dimasukkan ke AX jadi AX=0455. Selanjutnya 1234 dimasukkan ke AX lagi dan BX=9ABCh, 5678h dimasukkan ke CX, DX=0DEF0h. Nilai CX lalu diganti dengan nilai DX sehingga nilai keduanya sama. Dengan menggunakan ADC kemudian BX ditambahkan AX sehingga AX=ACF1. Terakhir dengan menggunakan INC nilai Carry flagnya berubah menjadi 2 sehingga AX=ACF2.


Program Operasi Pengurangan Dengan SUB dan SBB

LISTING PROGRAM :
Hasil Eksekusi 
Keterangan : Nilai awal yang dimasukkan AX= 15h, BX=12h. Lalu AX-BX= 003h dengan menggunakan perintah SUB. Terakhir AX dikurangi lagi dengan AX sehingga nilainya menjadi nol.
Pada TData, program melompat ke proses sementara dibawahnya sudah didefinisikan beberapa data yang konstan dengan menggunakan perintah EQU. Disini didefinisikan bahwa nilai ALo =0EFFFh, AHi=122h, BLo=0FFFFh,BHi=0FEh tidak dapat dirubah. Hasil pengurangan nanti ditampung pada HslLo dan HslHi yang masing masing bernilai 1 word(DW). Tanda ‘?’ digunakan untuk menyatakan bahwa dalam variabel ini tidak diberikan data awal.
Lalu pada Proses, program memasukkan nilai ALo ke dalam AX , lalu menguranginya dengan nilai BLo sehingga bisa dilihat pada hasil debug, nilai AX berubah menjadi F000 kemudian nilai AX tadi disimpan di dalam HslLo. Pada akhir tahap ini nilai HslHi:HslLo masih 0000F000 .
 Langkah berikutnya adalah mencari nilai word tingginya. Pada perintah MOV AX,AHi nilai 122h dimasukkan ke AX dengan menggunakan SBB nilai tsb itu dikurangi dengan BHi yang bernilai 0FEh, sehingga hasilnya adalah 0023 yang dapat dilihat pada nilai AX yang berubah. Jadi didapat nilai akhirnya yang tersimpan pada pasangan HslHi:HslLo berupa 0023F000. Pada AX, yang ditampilkan disini hanya 0023 karena nilai word tingginya ditampilkan lebih awal.


Program Pengurangan Dengan DEC
LISTING PROGRAM :
Hasil Eksekusi
Keterangan: Perbedaannya terletak pada huruf awal yang dimasukkan yaitu Z dan jumlah huruf yang ankan dicetak yaitu 26. Selanjutnya pada fungsi ULANG digunakan DEC pada nilai DL yang dimasukkan yaitu ‘Z’. Jadi huruf dicetak dengan urutan mundur, awalnya ‘Z’ kemudian ‘Y’ lalu ‘X’ sampai selesai.

Program untuk Perkalian
LISTING PROGRAM :          
Hasil Eksekusi
Keterangan: Bila Sumber merupakan 8 bit seperti MUL BH maka komputer akan mengambil nilai yang terdapat pada BH dan nilai pada AL untuk dikalikan. Hasil yang didapat akan selalu disimpan pada register AX. Bila sumber merupakan 16 bit
seperti MUL BX maka komputer akan mengambil nilai yang terdapat pada BX dan nilai pada AX untuk dikalikan.
3.11 Program dengan Pembagian

LISTING PROGRAM

Hasil Eksekusi
Keterangan:  Bila sumber merupakan operand 8 bit seperti DIV BH, maka komputer akan mengambil nilai pada register AX dan membaginya dengan nilai BH. Hasil pembagian 8 bit ini akan disimpan pada register AL dan sisa dari pembagian akan disimpan pada register AH.
Bila sumber merupakan operand 16 bit seperti DIV BX, maka komputer akan mengambil nilai yang terdapat pada register DX:AX dan membaginya dengan nilai BX. Hasil pembagian 16 bit ini akan disimpan pada register AX dan sisa dari pembagian akan disimpan pada register DX.




ANALISA HASIL PERCOBAAN
.MODEL SMALL
Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita.
.CODE
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan untuk menyimpan program yang nantinya akan dijalankan.
ORG 100h
Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke 100h(256) byte.
JMP
Perintah JMP(JUMP) ini digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP
INT 20h
Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada Dos.
ADD : ini akan menambahkan nilai pada Tujuan dan Asal.
ADC : tempat menampung hasil pertambahan Tujuan dan Asal ditambah lagi dengan carry flag (Tujuan:=Tujuan+Asal+Carry).
INC : Perintah INC(Increment) digunakan khusus untuk pertambahan dengan 1.
SUB :  akan mengurangkan nilai pada Tujuan dengan Asal.
SBB :  akan mengurangkan nilai Tujuan dengan Asal dengan cara yang sama seperti perintah DEC : digunakan khusus untuk pengurangan dengan 1

5.1 Kesimpulan
         Bahasa assembly merupakan bahasa aras bawah, dimana merupakan bahasa mesin, sangat banyak keuntungan yang kita dapatkan dari belajar bahasa ini, diantaranya kita bisa belajar untuk mengakses hardware secara langsung,disamping ukuran file hasil kompilasi juga kecil
Kelebihan Bahasa Assembly: Ketika di-compile lebih kecil ukuran, Lebih efisien/hemat memori,Lebih cepat dieksekusi
Kesulitan Bahasa Assembly: Dalam melakukan suatu pekerjaan, baris program relatif lebih panjang dibanding bahasa tingkat tinggi, Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah terlalu banyak, Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matematis

DAFTAR PUSTAKA

S’to.2001. Pemrograman Dengan Bahasa Assembly Edisi Online Versi 1.0 : http://www.jasakom.com
Fadlisyah,S.Si. Bahasa Rakitan.Yogyakarta:Andi.