254039672-project-akhir-orkom-kalkulator-sederhana.docx

  • Uploaded by: Josua Malau
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 254039672-project-akhir-orkom-kalkulator-sederhana.docx as PDF for free.

More details

  • Words: 3,684
  • Pages: 28
KATA PENGANTAR

Puji dan Syukur Penulis Panjatkan ke Hadirat Tuhan Yang Maha Esa karena berkat limpahan Rahmat dan Karunia-Nya sehingga penulis dapat menyusun laporan ini tepat pada waktunya. Laporan ini membahas mengenai program kalkulator yang dibuat dalam bahasa assembly. Dalam penyusunan laporan ini, penulis banyak mendapat tantangan dan hambatan akan tetapi dengan bantuan dari berbagai pihak tantangan itu bisa teratasi. Olehnya itu, penulis mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah membantu dalam penyusunan makalah ini, semoga bantuannya mendapat balasan yang setimpal dari Tuhan Yang Maha Esa. Penulis menyadari bahwa laporan ini masih jauh dari kesempurnaan baik dari bentuk penyusunan maupun materinya. Kritik konstruktif dari pembaca sangat penulis harapkan untuk penyempurnaan makalah selanjutnya. Akhir kata semoga laporan ini dapat memberikan manfaat kepada kita sekalian.

Bogor, 21 Desember 2014

Penulis

Michael Julyus C. M. | J3C113038

1

DAFTAR ISI

KATA PENGANTAR............................................................................................................................2 DAFTAR ISI........................................................................................................................................3 I.

PENDAHULUAN....................................................................................................................4

II.

TEORI PENUNJANG...............................................................................................................5 Menecetak Kalimat Dengan Fungsi DOS............................................................................5 Operasi Aritmatika.............................................................................................................6 

Operasi Penambahan...............................................................................................6



Operasi Pengurangan..............................................................................................8



Operasi Perkalian....................................................................................................8



Operasi Pembagian................................................................................................10

Bandingkan dan Lompat...................................................................................................11 

Lompat tanpa syarat..............................................................................................11



Membandingkan dengan CMP..............................................................................11



Lompat yang mengikuti CMP...............................................................................12



Lompat Bersyarat..................................................................................................13

III.

LISTING PROGRAM.............................................................................................................17

IV.

ANALISA PROGRAM...........................................................................................................21

V.

PENUTUP............................................................................................................................27 Kesimpulan.......................................................................................................................27 Saran.................................................................................................................................27

DAFTAR PUSTAKA...........................................................................................................................28

Michael Julyus C. M. | J3C113038

2

I.

PENDAHULUAN

Latar Belakang Dalam bidang pendidikan, kalkulator adalah suatu alat yang sangat membantu terhadap proses pengtirungan operasi aritmatika yang akurat, tepat, dan cepat. Bukan hanya dalam bidang pendidikan, melainkan dalam bidang perbisnisan, ekonomi maupun bidang lainnya pun akan dapat sangat terbantu dengan kalkulator sebagi alat / media perhitungan yang akurat. Oleh karena itu, pada tugas akhir organisasi komputer dan bahasa Assembly ini, penulis sengaja membuat program kalkulator yang dibuat menggunakan bahasa Assembly ini agar dapat digunakan dalam proses penghitungan yang tepat.

Tujuan Tujuan dibuatnya program kalkulator ini yaitu untuk memudahkan pengguna dalam melakukan penghitungan operasi aritmetika dengan cepat dan benar. Adapun tujuan dibuatnya laporan program kalkulator ini, yaitu agar: 1. Pembaca dapat memahami dan menerapkan operasi aritmatika dalam bahasa Assembly. 2. Pembaca dapat memahami dan menerapkan cara mendapatkan alamat efektif (Addressing Modes) dengan benar. 3. Pembaca dapat memahami dan menerapkan bagaimana mengaplikasikan fungi perbandingan dengan bahasa Assembly. 4. Pembaca dapat memahami dan menerapkan bagaimana cara melompat ke proses yang diinginkan dalam bahasa Assembly.

Michael Julyus C. M. | J3C113038

3

II.

TEORI PENUNJANG

Menecetak Kalimat Dengan Fungsi DOS Interupsi merupakan inti dari sebuah program assembly. Interupsi memungkinkan sebuah program assembly untuk meminta komputer melakukan proses sesuai dengan nilai register yang dipergunakan sebagai dasar interupsinya. Setelah Anda bisa mencetak sebuat karakter ataupun kalimat dengan int 21, ada baiknya untuk mencetak kalimat dengan karakter yang panjang kita menggunakan prinsip String. Untuk itu digunakan fasilitas int 21h yang lainnya, yaitu dengan Service 09h pada AH. Penyimpanan String menggunakan register DX sebagai penampung variabel. String/Pesan yang tersimpan dalam variabel tersebut harus diakhiri dengan tanda ‘$’ (dollar). Ada beberapa hal yang harus diperhatikan dan ditambahkan, salah satunya adalah mendefinisikan variabel. Variabel akan mengambil tempat pada memory untuk menyimpan data String. Besarnya memory yang dipakai oleh variabel ini ditentukan oleh besarnya data pada variabel tersebut. Variabel ini dapat didenisikan dengan DEBUG ataupun menggunakan compiler. Untuk mencetak kalimat,dapat digunakan interupsi 21 register 9 dengan aturan: INPUT AH =9 DS:DX = Alamat String ($) tersebut Ket=karakter $ dijadikan tanda akhir tulisan

Karakter Kontrol Kita telah menggunakan 2 buah karakter control ,yaitu 10 . Karakter kontrol yang tersedia untuk operasi yang sering digunakan terdapat 5, yaitu 07, 08, 09, 10 dan 13

Kode Nama

Fungsi

07

Bel

memberikan suara BEEP

08

Backspace (BS)

memindahkan

Michael Julyus C. M. | J3C113038

kursor

1

kolom

ke 4

belakang

09

Horizontal Tab

memindahkan kursorr 8 kolom ke kanan

10

Line Feed (LF)

memindahkan kursor 1 baris ke bawah

13

Carriage Return (CR) memindahkan kursor menuju awal baris

Selain dari karakter kontrol pada gambar diatas masih terdapat karakter-karakter kontrol lain, yang sebagian besar digunakan untuk keperluan komunikasi komputer dengan periferalnya. Karakter kontrol yang tersedia padaASCII secara lengkap bisa anda lihat pada gambar dbawah ini.

CODE NAMA

CODE NAMA

00

NUL

16

Data Link Escape

01

Start Of Heading

17

Device Control

02

Start Of Text

18

Negative Acknowledge

03

End Of Text

19

Synchronous Idle

04

End Of Transmission

20

End Of Transmission Block

05

Enquiry

21

Cancel

06

Acknowledge

22

End Of Medium

07

Bel

23

Substitute

Michael Julyus C. M. | J3C113038

5

08

Backspace

24

| Escape

09

Horisontal Tabulation

25

File Separator

10

Line Feed

26

Group Separator

11

Vertical Tabulation

27

Record Separator

12

Form Feed

28

Unit Separator

13

Carriage Return

29

Space

14

Shift Out

30

Delete

15

Shift In

Operasi Aritmatika  Operasi Penambahan 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,4h

; AL:=4h

Michael Julyus C. M. | J3C113038

6

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.

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

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 dapat digunakan perintah ADC untuk Michael Julyus C. M. | J3C113038

7

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.

 Operasi Pengurangan 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 me-nolkan suatu register bisa anda kurangkan dengan dirinya sendiri seperti SUB AX,AX.

Michael Julyus C. M. | J3C113038

8

 Operasi Perkalian Untuk perkalian bisa digunakan perintah MUL dengan syntax: MUL Sumber Sumber disini dapat berupa suatu register 8 bit (contohnya: BL,BH,..), register 16 bit (contohnya: 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.

Program 8.4. Proses perkalian dengan MUL

Pada program 8.4. kita mendefinisikan angka untuk variabel 'A'=1EF dan 'B'=2FE dengan DW. Karena tidak digunakan EQU, maka varibel 'A' dan 'B' dapat dirubah bila diinginkan.

Michael Julyus C. M. | J3C113038

9

Hasil Program bab8-4

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

Michael Julyus C. M. | J3C113038

10

Program 8.5. Proses pembagian bilangan 16 bit

Bandingkan dan Lompat  Lompat tanpa syarat Perintah JMP (Jump), sudah pernah kita gunakan, dimana perintah ini digunakan untuk melompati daerah data program. Perintah JMP digunakan dengan syntax: JMP Tujuan Perintah JMP ini dikategorikan sebagai Unconditional Jump, karena perintah ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan. Setiap ditemui perintah ini maka lompatan pasti dilakukan. Selain dari perintah jump tanpa syarat, masih banyak perintah Jump yang menyeleksi suatu keadaan tertentu sebelum dilakukan lompatan. Perintah jump dengan Michael Julyus C. M. | J3C113038

11

penyeleksian kondisi terlebih dahulu biasanya diikuti dengan perintah untuk melihat kondisi, seperti membandingkan dengan perintah "CMP"(Compare).

 Membandingkan dengan CMP Perintah CMP (Compare) digunakan untuk membandingkan 2 buah operand, dengan syntax: CMP Operand1,Operand2 CMP akan membandingkan operand1 dengan operand2 dengan cara mengurangkan operand1 dengan operand2. CMP tidak mempengaruhi nilai Operand1 dan Operand2, perintah CMP

hanya akan mempengaruhi flags register sebagai hasil perbandingan.

Adapun flag-flag yang terpengaruh oleh perintah CMP ini adalah:

- OF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan bertanda - SF akan 1, bila operand1 lebih kecil dari operand2, pada operasi bilangan bertanda - ZF akan 1, jika operand1 nilainya sama dengan operand2 - CF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan tidak bertanda

Perlu anda ingat bahwa CMP tidak dapat membandingkan antar 2 lokasi memori.

 Lompat yang mengikuti CMP Perintah CMP yang hanya mempengaruhi flag register, umumnya diikuti dengan perintah lompat yang melihat keadaan pada flags register ini. Jenis perintah lompat yang biasanya mengikuti perintah CMP, terdapat 12 buah seperti pada Tabel 13.1. Pada Tabel 13.1. terlihat bahwa terdapat dua operasi yang berbeda, yaitu operasi bilangan bertanda dan tidak bertanda. Bilangan bertanda adalah bilangan yang akan membedakan bilangan negatif dan positif(Mis. 37 dan -37). Sedangkan bilangan tidak bertanda adalah bilangan yang tidak akan membedakan positif dan negatif, jadi angka -1 untuk operasi bilangan bertanda akan dianggap FFh pada bilangan tidak bertanda. Lebih Michael Julyus C. M. | J3C113038

12

jauh mengenai bilangan bertanda dan tidak ini bisa anda lihat pada BAB I.

Tabel 13.1. Perintah Jump yang mengikuti CMP NO . 1

PERINTAH LOMPAT JA <Jump If Above>

KONDISI Lompat, jika Operand1 > Operand2 untuk bilangan tidak bertanda

2

JG <Jump If Greater>

Lompat, jika Operand1 > Operand2 untuk bilangan bertanda

3

JE <Jump If Equal>

Lompat, jika Operand1 = Operand2

4

JNE <Jump If Not Equal>

Lompat, jika Operand1 tidak sama dengan Operand2

5

JB <Jump If Below>

Lompat, jika Operand1 < Operand2 untuk bilangan tidak bertanda

6

JL <Jump If Less>

Lompat, jika Operand1 < Operand2 untuk bilangan bertanda

7

8

JBE <Jump If Below or Lompat, jika operand1 <= Operand2 untuk bilangan tidak Equal>

bertanda

JLE <Jump If Less or Equal>

Lompat, jika Operand1 <= Operand2 untuk bilangan bertanda

9

JAE <Jump If Above or Lompat, jika Operand1 >= Operand2 untuk bilangan tidak Equal>

10

bertanda

JGE <Jump If Greater or Lompat, jika Operand1 >= Operand2 untuk bilangan Equal>

Michael Julyus C. M. | J3C113038

bertanda

13

Menggunakan Perintah Lompat Bersyarat

Bila program 13.1. dijalankan, maka akan tampak pada layar: Bilangan A lebih besar dari bilangan B Anda bisa mengganti nilai pada variabel Bil A dan Bil B untuk melihat hasil yang akan ditampilkan pada layar.

 Lompat Bersyarat Pada gambar 13.1. anda telah melihat sebagian dari perintah lompat bersyarat. Kini akan kita lihat lompat bersyarat lainnya yang tersedia, seperti pada gambar 13.2. Tidak seperti lompat tanpa syarat, Lompat bersyarat hanya dapat melompat menuju label yang berjarak -128 sampai +127 byte dari tempat lompatan.

Michael Julyus C. M. | J3C113038

14

Tabel 13.2. Daftar Perintah Jump NO . 1

PERINTAH LOMPAT JA <Jump If Above>

KONDISI Lompat, jika Operand1 > Operand2, untuk bilangan tidak bertanda

2

JG <Jump If Greater>

Lompat, jika Operand1 > Operand2, untuk bilangan bertanda

3

JE <Jump If Equal>

Lompat, jika Operand1 = Operand2

4

JNE <Jump If Not Equal>

Lompat, jika Operand1 tidak sama dengan Operand2

5

JB <Jump If Below>

Lompat, jika Operand1 < Operand2, untuk bilangan tidak bertanda

6

JL <Jump If Less>

Lompat, jika Operand1 < Operand2, untuk bilangan bertanda

7

JBE <Jump If Below or Equal>

Lompat, jika operand1 <= Operand2, untuk bilangan tidak bertanda

8

JLE <Jump If Less or Equal>

Lompat, jika Operand1 <= Operand2, untuk bilangan bertanda

9

JAE <Jump If Above or Equal>

Lompat, jika Operand1 >= Operand2, untuk bilangan tidak bertanda

10

JGE <Jump If Greater or Equal>

Lompat, jika Operand1 >= Operand2, untuk bilangan bertanda

11

JC <Jump Carry>

Lompat, jika Carry flag=1

12

JCXZ <Jump If CX is Zero>

Lompat, jika CX=0

13

JNA <Jump If Not Above>

Lompat, jika Operand1 < Operand2 dengan CF=1 atau ZF=1

14

JNAE <Jump If Not Above nor Lompat, jika Operand1 < Operand2 dengan CX=1 Michael Julyus C. M. | J3C113038

15

Equal> 15

JNB <Jump If Not Below>

Lompat, jika Operand1 > Operand2 dengan CF=0

16

JNBE <Jump If Not Below nor Lompat, jika Operand1 > Operand2 dengan CF=0 dan Equal>

ZF=0

17

JNC <Jump If No Carry>

Lompat, jika CF=0

18

JNG <Jump If Not Greater>

Lompat, jika Operand1 <= Operand2 dengan ZF=1 atau SF tidak sama OF

19

JNGE <Jump If Not Greater Nor Lompat, jika Operand1 <= Operand2 dengan SF tidak Equal>

sama OF

20

JNL <Jump If Not Less>

Lompat, jika Operand1 >= Operand2 dengan SF=OF

21

JNLE <Jump If Not Less Nor Equal> Lompat, jika Operand1 > Operand2 dengan ZF=0 dan SF=OF

22

JNO <Jump If No Overflow>

Lompat, jika tidak terjadi tidak terjadi Overflow

23

JNP <Jump If Not Parity>

Lompat, jika Ganjil

24

JNS <Jump If No Sign>

Lompat, jika SF=0

25

JNZ <Jump If Not Zero>

Lompat, jika tidak 0

26

JO <Jump On Overflow>

Lompat, jika OF=1

27

JP <Jump On Parity>

Lompat, jika Genap

28

JPE <Jump If Parity Even>

Lompat, jika PF=1

29

JPO <Jump If Parity Odd>

Lompat, jika PF=0

30

JS <Jump On Sign>

Lompat, jika SF=1

31

JZ <Jump Is zero>

Lompat, jika 0

Bila dilihat pada Tabel 13.2., perintah untuk lompat sebenarnya sangat mudah untuk digunakan karena setiap huruf melambangkan suatu kata. Dengan demikian kita tidak perlu untuk mengingat-ingat semua perintah diatas, kita hanya harus ingat bahwa huruf J=Jump, E=Equal, N=Not, S=Sign, Z=Zero, P=Parity, O=Overflow, C=Carry, Michael Julyus C. M. | J3C113038

16

G=Greater Than, A=Above, L=Less dan B=Below.

Catatan: Huruf G dan L yang artinya Greater Than dan Less digunakan khusus untuk operasi bilangan bertanda. Sedangkan Huruf A dan B yang artinya Above dan Below digunakan khusus untuk operasi bilangan tidak bertanda.

Program 13.2. Perbandingan karakter

Bila program 13.2. dijalankan, maka pada layar akan ditampilkan: Teknik Komputer IPB The Best Diplome in IPB ....!! Angka 7 pada akhir kalimat digunakan untuk menghasilkan suara beep. Bila anda masih ingat pada addressing mode yang telah kita pelajari, maka program 13.2. tentunya tidak ada masalah.

Michael Julyus C. M. | J3C113038

17

III.

LISTING PROGRAM

Berikut adalah listing program dari program kalkulator yang telah dibuat:

Michael Julyus C. M. | J3C113038

18

Michael Julyus C. M. | J3C113038

19

Michael Julyus C. M. | J3C113038

20

Michael Julyus C. M. | J3C113038

21

IV.

ANALISA PROGRAM

Model SMALL Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita.

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.

1. Analisis Kebutuhan Awal

Michael Julyus C. M. | J3C113038

22

Penggunaan aplikasi kalkulator dengan menggunakan bahasa assembly sesuai dengan kode program yang terlampir membutuhkan operand-operand dalam bentuk integer. Operand-operand tersebut menggunakan register 8 bit. Untuk kebutuhan proses, program akan melakukan penjumlahan, pengurangan, perkalian dan pembagian. Sedangkan output yang dihasilkan dalam bentuk integer. Kode program yang dibuat dapat berjalan pada sistem operasi windows maupun linux dengan arsitektur prosesor intel 32 bit. Pada proses aritmatika digunakan register AX dan register bx untuk menyimpan nilai inputan angka. Di mana register AX dan bx ini adalah register 16 bit. Berikut register-register dam jumlah bitnya:

Jumlah Bit 32 bit 16 bit 8 bit

Register EAX, EBX, ECX, EDX AX, BX, CX, DX AH, AL, BH, BL, CH, CL, DH, DL

Penggunaan Library Dalam listing program di atas digunakan perintah untuk menggunakan library 'emu8086.inc'. Fungsi library yang digunakan yaitu: define_print_string define_scan_num define_print_num define_print_num_uns Tujuan digunakannya library tersebut yaitu agar dapat memudahkan dalam proses pencetakan dan pengambilan nilai yang diinputkan oleh user. Sehingga listing program pun tidak terlalu panjang dikarenakan source code-nya pun memang tidak begitu banyak jika dibandingkan dengan yang tanpa menggunakan library (manual). Sehingga program pun akan menjadi efektif dan efisien.

2. Algoritma Program a) Proses Pencetakan Kalimat Untuk mencetak kalimat digunakan instruksi sebagai berikut: Michael Julyus C. M. | J3C113038

23

program db 0dh,0ah,'Kalkulator',0 Instruksi di atas digunakan untuk memberikan nilai kalimat “Kalkulator” kepada label “program”. Sedangkan instruksi 0dh,0ah digunakan untuk memberikan nilai kontrol dimana nilai kontrol 13 berfungsi untuk memindahkan kursor menuju awal baris dan karakter kontrol 10 berfungsi untuk memindahkan kursor 1 baris ke bawah.

b) Proses Penjumlahan Untuk proses penjumlahan digunakan instruksi ADD seperti terlihat pada perintah di bawah: ADD AX,BX Instruksi add di atas berarti nilai dalam register bx dijumlahkan ke dalam nilai register AX, jadi nilai akhir tersimpan pada register AX.

c) Proses Pengurangan Untuk proses penguragan digunakan instruksi SUB, penggunaannya bisa dilihat pada perintah di bawah: SUB AX,BX Instruksi sub di atas untuk mengurangkan nilai pada register AX dengan nilai pada register BX, dan hasilnya akan disimpan di register ax.

d) Proses Perkalian Untuk proses perkalian digunakan instruksi MUL. Instruksi MUL menggunakan register tertentu sebagai multiplicand dan hasil operasinya, tergantung pada jumlah bit pada multiplier-nya. Multiplicand AL AX EAX

Multiplier 8 BIT 16 BIT 32 BIT

Hasil kali AX DX , AX EDX , EAX

Pada program kalkulator ini menggunakan register 16 bit sebagai operandnya. Jadi multiplicand yang digunakan adalah register BX. MUL BX

Michael Julyus C. M. | J3C113038

24

Dari perintah di atas diketahui bahwa register BX adalah register 16 bit, maka multiplicand-nya adalah register AX dan hasil perkaliannya akan disimpan pada register DX dan AX (DX:AX), jadi register DX menyimpan Word tingginya dan AX menyimpan Word rendahnya.

e) Proses Pembagian Pada proses pembagian digunakan instruksi DIV, format penulisan instruksi DIV sebagai berikut: DIV [nama_register] Sama dengan instruksi MUL, instruksi DIV menggunakan register-register tertentu untuk operand-nya. Hasil bagi AX DD EDX

Pembagi 8 bit 16 bit 32 bit

Dividend AL AX EAX

Program kalkulator yang dibuat menggunakan operand dengan register 16 bit. Penggunaan instruksi SUB pada program kalkulator yang dibuat dapat dilihat pada perintah di bawah: DIV BX Dari gambar di atas diketahui bahwa yang digunakan register BX (register 16 bit), maka dividend yang digunakan adalah register DX:AX dan hasil bagi akan tersimpan pada register AX dan Six dari pembagian akan disimpan pada register DX.

f) Proses Bandingkan dan Lompat Untuk melakukan perintah lompat tanpa syarat digunakan perintah JMP. Berikut ini adalah penggunaan perintah JMP. JMP ulangi Pada perintah di atas proses berjalannya program akan langsung melompat ke label “ulangi”. Untuk membandingkan operand1 dan operand2 digunakan perintah CMP. Dan untuk melakukan lompat yang mengikuti CMP, maka digunakan perintah lompat bersyarat. Pada program kalkulator ini menggunakan perintah JZ untuk Michael Julyus C. M. | J3C113038

25

melakukan lompat tersebut. Berikut adalah penggunaan perintah CMP yang diikuti dengan perintah JZ. CMP h_ AL, ‘1’ JZ jumlah_ Pada perintah di atas proses program akan membandingkan antara nilai 1 dan register AL. Jika hasilnya adalah 0, maka proses selanjutnya adalah melompat ke label “jumlah_”

g) Proses Mendapatkan Alamat Efektif Instruksi yang digunakan untuk mendapatkan alamat efektif dari suatu data bisa digunakan dengan perintah LEA (Load Efective Address). Register yang bisa digunakan pada addressing ini adalah BX, BP, SI, dan DI. Di bawah ini adalah perintah yang digunakan. LEA SI Instruksi LEA pada perintah di atas berarti mendapatkan alamat efektif dari register SI. 3. Tahapan Penggunaan Program Kalkulator Mula-mula program menampilkan beberapa pilihan operasi yang dari program kalkulator. Kemudian, program meminta user untuk menginputkan nomor dari pilihan operasi yang ingin digunakan. Setelah user memasukkan inputan, program akan menampilkan operasi yang dipilih oleh user dan meminta user untuk menginputkan nilai pertama serta nilai kedua. Nilai yang dimasukkan harus berupa integer. Apabila user memasukkan angka pilihan selain 1 sampai dengan 4, maka program akan melakukan perulangan untuk menginputkan nomor pilihan kembali sampai nomor pilihan yang dimasukkan oleh user benar. Setelah memasukkan nilai, program akan menampilkan hasil ouput, kemudain program akan berhenti.

Michael Julyus C. M. | J3C113038

26

V.

PENUTUP

Kesimpulan Dari program di atas, dapat disimpulkan bahwa dalam bahasa Assembly, kita dapat mengambil alamat efektif dari satu data yaitu dengan menggunakan fungsi addressing modes.

Saran Sebelum menggunakan fungsi addessing modes, sebaiknya dianalisa telebih dahulu fungsi addressing modes yang mana yang merupakan perintah fungsi addressing modes yang benar yang kita butuhkan sehingga proses berjalannya program tersebut dapat berjalan dengan baik tanpa terjadi kesalahan.

Michael Julyus C. M. | J3C113038

27

DAFTAR PUSTAKA

Suheri, Asep, ST, MT. Modul Praktikum Organisasi Komputer & Bahasa Assembly. 2012. Bogor: Program Diploma Institut Pertanian Bogor.

Michael Julyus C. M. | J3C113038

28

More Documents from "Josua Malau"

20190328.pdf
December 2019 13
20190306.pdf
December 2019 17
20190306.pdf
December 2019 12
20190328.pdf
December 2019 16
Makalah.docx
December 2019 16