LAPORAN TUGAS AKHIRORGANISASI KOMPUTER & BAHASA
ASSEMBLYKALKULATOR
Kelas: INF 2B Praktikum 1Nama: Michael Julyus C. M.NIM :
J3C113038
PROGRAM KEAHLIAN MANAJEMEN INFORMATIKADIREKTORAT PROGRAM
DIPLOMAINSTITUT PERTANIAN BOGORBOGOR2014KATA 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
DAFTAR ISI
KATA PENGANTAR2DAFTAR ISI3I.PENDAHULUAN4II.TEORI
PENUNJANG5Menecetak Kalimat Dengan Fungsi DOS5Operasi
Aritmatika6Operasi Penambahan6Operasi Pengurangan8Operasi
Perkalian8Operasi Pembagian10Bandingkan dan Lompat11Lompat tanpa
syarat11Membandingkan dengan CMP11Lompat yang mengikuti CMP12Lompat
Bersyarat13III.LISTING PROGRAM17IV.ANALISA
PROGRAM21V.PENUTUP27Kesimpulan27Saran27DAFTAR PUSTAKA28
PENDAHULUAN
Latar BelakangDalam 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.
TujuanTujuan 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.
TEORI PENUNJANG
Menecetak Kalimat Dengan Fungsi DOSInterupsi 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:INPUTAH =9DS:DX = Alamat String ($)
tersebutKet=karakter $ dijadikan tanda akhir tulisan
Karakter KontrolKita 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 13Kode
NamaFungsi
07Belmemberikan suara BEEP
08Backspace (BS)memindahkan kursor 1 kolom ke belakang
09Horizontal Tabmemindahkan kursorr 8 kolom ke kanan
10Line Feed (LF)memindahkan kursor 1 baris ke bawah
13Carriage 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.CODENAMACODENAMA
00NUL 16Data Link Escape
01Start Of Heading 17Device Control
02Start Of Text 18Negative Acknowledge
03End Of Text 19Synchronous Idle
04End Of Transmission 20End Of Transmission Block
05Enquiry 21Cancel
06Acknowledge 22End Of Medium
07Bel 23Substitute
08Backspace 24| Escape
09Horisontal Tabulation 25File Separator
10Line Feed 26Group Separator
11Vertical Tabulation 27Record Separator
12Form Feed 28Unit Separator
13Carriage Return 29Space
14Shift Out 30Delete
15Shift In
Operasi Aritmatika Operasi PenambahanADDUntuk menambah dalam
bahasa assembler digunakan perintah ADD dan ADC serta INC. Perintah
ADD digunakan dengan syntax : ADD Tujuan,AsalPerintah 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:=15hMOV
AL,4h ; AL:=4hADD AH,AL ; AH:=AH+AL, jadi AH=19hPerlu 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=0MOV BX,0F221h ; Nilai
BX:=F221h dan carry=0ADD AX,BX ; Nilai AX menjadi 0455h dan carry=1
ADCPerintah ADC digunakan dengan cara yang sama pada perintah ADD,
yaitu : ADC Tujuan,AsalPerbedaannya 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 memecahkannya, Contoh:MOV
AX,1234h ; AX = 1234h CF = 0MOV BX,9ABCh ; BX = 9ABCh CF = 0MOV
CX,5678h ; BX = 5678h CF = 0MOV DX,0DEF0h ; DX = DEF0h CF = 0ADD
CX,DX ; CX = 3568h CF = 1ADC AX,BX ; AX = AX+BX+CF = ACF1Hasil
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 PenguranganSUBUntuk Operasi pengurangan dapat digunakan
perintah SUB dengan syntax:SUB Tujuan,AsalPerintah 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:=15MOV BX,12 ; BX:=12SUB
AX,BX ; AX:=15-12=3SUB AX,AX ; AX=0Untuk me-nolkan suatu register
bisa anda kurangkan dengan dirinya sendiri seperti SUB AX,AX.
Operasi Perkalian Untuk perkalian bisa digunakan perintah MUL
dengan syntax:MUL SumberSumber 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.
Hasil Program bab8-4 Operasi PembagianOperasi pada pembagian
pada dasarnya sama dengan perkalian. Untuk operasi pembagian
digunakan perintah DIV dengan syntax: DIV SumberBila 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.
Program 8.5. Proses pembagian bilangan 16 bit
Bandingkan dan Lompat Lompat tanpa syaratPerintah JMP (Jump),
sudah pernah kita gunakan, dimana perintah ini digunakan untuk
melompati daerah data program. Perintah JMP digunakan dengan
syntax:JMP TujuanPerintah 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
penyeleksian kondisi terlebih dahulu biasanya diikuti dengan
perintah untuk melihat kondisi, seperti membandingkan dengan
perintah "CMP"(Compare).
Membandingkan dengan CMPPerintah CMP (Compare) digunakan untuk
membandingkan 2 buah operand, dengan syntax:CMP
Operand1,Operand2CMP 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:
- OFakan 1, jika operand1 lebih kecil dari operand2 pada operasi
bilangan bertanda- SFakan 1, bila operand1 lebih kecil dari
operand2, pada operasi bilangan bertanda- ZFakan 1, jika operand1
nilainya sama dengan operand2- CFakan 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 CMPPerintah 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 jauh mengenai
bilangan bertanda dan tidak ini bisa anda lihat pada BAB I.
Tabel 13.1. Perintah Jump yang mengikuti CMPNO.PERINTAH
LOMPATKONDISI
1JA Lompat, jika Operand1 > Operand2 untuk bilangan tidak
bertanda
2JG Lompat, jika Operand1 > Operand2 untuk bilangan
bertanda
3JE Lompat, jika Operand1 = Operand2
4JNE Lompat, jika Operand1 tidak sama dengan Operand2
5JB Lompat, jika Operand1 < Operand2 untuk bilangan tidak
bertanda
6JL Lompat, jika Operand1 < Operand2 untuk bilangan
bertanda
7JBE Lompat, jika operand1 = Operand2 untuk bilangan
bertanda
Menggunakan Perintah Lompat Bersyarat
Bila program 13.1. dijalankan, maka akan tampak pada
layar:Bilangan A lebih besar dari bilangan BAnda bisa mengganti
nilai pada variabel Bil A dan Bil B untuk melihat hasil yang akan
ditampilkan pada layar.
Lompat BersyaratPada 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.
Tabel 13.2. Daftar Perintah JumpNO.PERINTAH LOMPATKONDISI
1JA Lompat, jika Operand1 > Operand2, untuk bilangan tidak
bertanda
2JG Lompat, jika Operand1 > Operand2, untuk bilangan
bertanda
3JE Lompat, jika Operand1 = Operand2
4JNE Lompat, jika Operand1 tidak sama dengan Operand2
5JB Lompat, jika Operand1 < Operand2, untuk bilangan tidak
bertanda
6JL Lompat, jika Operand1 < Operand2, untuk bilangan
bertanda
7JBE Lompat, jika operand1 = Operand2, untuk bilangan
bertanda
11JC Lompat, jika Carry flag=1
12JCXZ Lompat, jika CX=0
13JNA Lompat, jika Operand1 < Operand2 dengan CF=1 atau
ZF=1
14JNAE Lompat, jika Operand1 < Operand2 dengan CX=1
15JNB Lompat, jika Operand1 > Operand2 dengan CF=0
16JNBE Lompat, jika Operand1 > Operand2 dengan CF=0 dan
ZF=0
17JNC Lompat, jika CF=0
18JNG Lompat, jika Operand1 Operand2 dengan ZF=0 dan SF=OF
22JNO Lompat, jika tidak terjadi tidak terjadi Overflow
23JNP Lompat, jika Ganjil
24JNS Lompat, jika SF=0
25JNZ Lompat, jika tidak 0
26JO Lompat, jika OF=1
27JP Lompat, jika Genap
28JPE Lompat, jika PF=1
29JPO Lompat, jika PF=0
30JS Lompat, jika SF=1
31JZ 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,
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 IPBThe 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.
LISTING PROGRAM
Berikut adalah listing program dari program kalkulator yang
telah dibuat:
ANALISA PROGRAM
Model SMALLTanda directive ini digunakan untuk memberitahukan
kepada assembler bentuk memory yang digunakan oleh program
kita.
ORG 100hPada 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 AwalPenggunaan 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 BitRegister
32 bitEAX, EBX, ECX, EDX
16 bitAX, BX, CX, DX
8 bitAH, AL, BH, BL, CH, CL, DH, DL
Penggunaan LibraryDalam listing program di atas digunakan
perintah untuk menggunakan library 'emu8086.inc'. Fungsi library
yang digunakan yaitu:define_print_stringdefine_scan_num
define_print_numdefine_print_num_unsTujuan 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 Programa) Proses Pencetakan KalimatUntuk mencetak
kalimat digunakan instruksi sebagai berikut:program db
0dh,0ah,'Kalkulator',0Instruksi 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 PenjumlahanUntuk proses penjumlahan digunakan
instruksi ADD seperti terlihat pada perintah di bawah:ADD
AX,BXInstruksi add di atas berarti nilai dalam register bx
dijumlahkan ke dalam nilai register AX, jadi nilai akhir tersimpan
pada register AX.
c) Proses PenguranganUntuk proses penguragan digunakan instruksi
SUB, penggunaannya bisa dilihat pada perintah di bawah:SUB
AX,BXInstruksi sub di atas untuk mengurangkan nilai pada register
AX dengan nilai pada register BX, dan hasilnya akan disimpan di
register ax.
d) Proses PerkalianUntuk proses perkalian digunakan instruksi
MUL. Instruksi MUL menggunakan register tertentu sebagai
multiplicand dan hasil operasinya, tergantung pada jumlah bit pada
multiplier-nya.MultiplicandMultiplierHasil kali
AL8 BITAX
AX16 BITDX , AX
EAX32 BITEDX , EAX
Pada program kalkulator ini menggunakan register 16 bit sebagai
operand-nya. Jadi multiplicand yang digunakan adalah register
BX.MUL BXDari 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 PembagianPada 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 bagiPembagiDividend
AX8 bitAL
DD16 bitAX
EDX32 bitEAX
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 BXDari 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 LompatUntuk melakukan perintah lompat
tanpa syarat digunakan perintah JMP. Berikut ini adalah penggunaan
perintah JMP.JMP ulangiPada 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 melakukan lompat tersebut. Berikut adalah penggunaan perintah
CMP yang diikuti dengan perintah JZ.CMP h_ AL, 1JZ 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 EfektifInstruksi 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 SIInstruksi LEA pada
perintah di atas berarti mendapatkan alamat efektif dari register
SI.3. Tahapan Penggunaan Program KalkulatorMula-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. | J3C1130383
PENUTUP
KesimpulanDari program di atas, dapat disimpulkan bahwa dalam
bahasa Assembly, kita dapat mengambil alamat efektif dari satu data
yaitu dengan menggunakan fungsi addressing modes.
SaranSebelum 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.
DAFTAR PUSTAKA
Suheri, Asep, ST, MT. Modul Praktikum Organisasi Komputer &
Bahasa Assembly. 2012. Bogor: Program Diploma Institut Pertanian
Bogor.
Michael Julyus C. M. | J3C113038281 2 3 4 h
F 2 2 1 h
+
1 0 4 5 5 h
Biner
Biner
0001 0010 0011 0100
1111 0010 0010 0001
+
1 0000 0100 0101 0101