Anda di halaman 1dari 5

Analisa Program

Program yang kami buat adalah program kalkulator dengan operasi aritmatika sederhana
yaitu penjumlahan,pengurangan,perkalian dan pembagian. Pada program ini, terdapat
variabel-variabel seperti ndigit,sisa,pinjam,negatif,positif,mode,operator,input1,input2,output
dan msg1-9. ndigit untuk menentukan banyaknya digit yang ingin dioperasikan. sisa untuk
menentukan carry pada saat melakukan operasi penjumlahan. pinjam untuk menentukan
borrow pada saat melakukan operasi pengurangan. negatif dan positif untuk menentukan
apakah bilangan pertama lebih besar atau lebih kecil dari bilangin kedua pada saat operasi
pengurangan. mode untuk menentukan mode mana yang dipilih oleh user, hanya ada 2 mode
pada program ini yaitu mode 0 untuk melakukan operasi penjumlahan dan pengurangan serta
mode 1 untuk melakukan operasi perkalian dan pembagian yang terbatas hanya 2 digit saja.
Mode ini dibagi 2 karena keterbatasan dalam membuat program. Pada operasi penjumlahan
dan pengurangan digit yang dapat dioperasikan dapat lebih dari 1 karena proses yang
dijalankan sama dengan proses 2 digit bilangan. Pada operasi penjumlahan dan pengurangan,
input bilangan 1 dan bilangan 2 dimasukkan ke dalam register extra segment dengan offset
address yang berbeda. Untuk proses perkalian dan pembagian, kelompok kami hanya terbatas
pada 2 digit saja karena proses pada bilangan lebih dari 2 digit lebih rumit. Operator
digunakan untuk menentukan operasi mana yang akan dilakukan dan tentu saja operasinya
harus sesuai dengan mode yang telah dipilih. Input1,Input2,Output digunakan untuk
menyimpan bilangan input dan output untuk operasi perkalian dan pembagian saja. Msg1-9
digunakan untuk menampilkan pesan instruksi cara menggunakan program.
Pada program ini terdapat beberapa macro seperti macro minta input,display, display2, enter,
tambah, kurang, compare, kali, bagi. Macro minta input digunakan untuk meminta input pada
user. Pada macro ini digunakan interrupt 21h dengan mode 1 yaitu untuk meminta sekaligus
menampilkan input. Macro display digunakan untuk menampilkan hasil operasi baik untuk
hasil positif maupun untuk hasil negative. Pada macro ini terdapat mode pembanding yaitu
cmp DL,10 yang digunakan untuk menentukan apakah terdapat tanda negatif atau tidak pada
hasil operasi. Macro Enter digunakan untuk membuat enter pada hasil output di layar. Macro
tambah untuk melakukan operasi penjumlahan. Pada macro tambah terdapat parameter
digit1,digit2 yang merupakan bilangan yang ingin dioperasikan, carry yang digunakan untuk
menentukan apakah ada carry atau tidak dari operasi pada digit sebelumnya, hasil digunakan
untuk menyimpan hasil perhitungan. Macro kurang untuk melakukan operasi pengurangan.
Pada macro ini terdapat parameter digit1,digit2 yang merupakan bilangan yang ingin
dioperasikan, utang menentukan apakah terdapat borrow pada operasi digit sebelumnya, hasil
untuk menyimpan hasil dan sign yang digunakan untuk menentukan apakah bilangan yang
dikurangi lebih besar atau kecil daripada bilangan pengurangnya. Macro compare merupakan
macro bantuan untuk melakukan operasi pengurangan. Macro ini digunakan untuk
menentukan apakah bilangan 1 lebih kecil atau besar daripada bilangan 2. Macro bagi untuk
operasi pembagian. Macro kali untuk operasi perkalian. Paramater yang ada pada macro bagi
dan perkalian mirip dengan macro tambah dan kurang.
Proses kerja masing-masing macro :

Minta_input menggunakan interrupt 21h dengan mode meminta sekaligus


menampilkan input. Jika input yang dimasukkan bernilai antara 0 sampai 9 maka
input yang dimasukkan akan dikurangi dengan 30H karena input yang dimasukkan
merupakan kode ascii yang nilainya berbeda saat dimasukkan ke dalam mikroprosesor
sehingga harus dikurangi dengan 30h sesuai dengan tabel kode ascii. Jika input yang
dimasukkan adalah tombol BACKSPACE maka inputan sebelumnya akan dihapus
pada layar dan nilai counter (CX) akan ditambah dan index (SI/menunjukkan lokasi
memori yang akan diisi nilai input) akan dikurangi. Nilai input pada register AL tidak
akan dimasukkan ke variabel INPUT/memori yang bersangkutan. Jika input yang
dimasukkan bukan tombol BACKSPACE dan diluar nilai 0 sampai 9 maka inputan
sekarang akan dihapus dan nilai counter (CX) dan index (SI) akan dibuat tetap. Nilai
input pada register AL juga tidak akan dimasukkan ke variabel INPUT/memori yang
bersangkutan.
Display menggunakan interrupt 21h dengan mode menampilkan output yang berupa
karakter, macro ini diulangi beberapa kali sebanyak digit hasil yang menjadi output
hasil operasi. Di macro ini terdapat instruksi perbandingan yang digunakan untuk
menentukan hasil operasi bilang positif atau negatif.
Enter menggunakan interrupt 21h dengan mode menampilkan output berupa karakter.
Pada macro ini, output berupa enter/new line.
Tambah menggunakan instruksi add dan aaa. Add digunakan untuk operasi
penjumlahan. AAA digunakan untuk konversi dari hexa ke BCD yang dapat
memisahkan hasil penjumlahan dengan carry. Jika hasil penjumlahan lebih dari 9
berarti terdapat carry pada operasi tersebut. Pada instruksi AAA, bilangan yang lebih
dari 1 digit akan dipisah di dalam register AX, digit pertama pada AH dan digit kedua
pada AL. Hal ini memudahkan dalam pemisahan carry dan hasil operasi tambah.
Macro tambah hanya memproses per 1 digit, sehingga macro tambah dimasukkan ke
dalam loop sebanyak digit yang dioperasikan.
Kurang menggunakan instruksi sub dan aas. Instruksi dasar yang digunakan adalah
sub. Aas digunakan untuk menentukan apakah pada hasil operasi sub terdapat borrow
atau tidak. Jika terdapat borrow, maka setelah aas dijalankan, register ah akan bernilai
FFFF yang berarti complement dari hasil operasi. Pada macro ini terdapat parameter
sign yang digunakan untuk memberitahukan apakah bilangan 1 lebih besar atau kecil
daripada bilangan 2. Sign merupakan hasil dari macro compare yang digunakan untuk
membandingkan dua buah bilangan. Jika bilangan 1 lebih besar dari bilangan 2, maka
nilai sign bernilai 0 dan sebaliknya bernilai 1.
Bagi menggunakan instruksi DIV dan AAD.
Kali menggunakan instruksi MUL dan AAM.

Proses kerja program :


Pertama-tama akan ditampilkan terlebih dahulu pesan instruksi cara menggunakan
program. Untuk menampilkan pesan digunakan interrupt 21h dengan mode
menampilkan output berupa string yang terdapat di dalam variabel yang telah dibuat
sebelumnya. Pada pesan yang ditampilkan terdapat instruksi untuk memilih mode

operasi. Mode 0 untuk penjumlahan dan pengurangan, sedangkan mode 1 untuk


perkalian dan pembagian 2 digit saja. Program akan meminta input dari user dengan
menggunakan interrupt 21H mode meminta dan menampilkan input sekaligus. Jika
input tidak sesuai mode, maka terdapat pesan error dan program langsung selesai.
Setelah user memasukkan input, terdapat pesan untuk memasukkan input yaitu
bilangan yang ingin dioperasikan. Untuk mode 0, user dapat menentukan banyaknya
digit yang ingin dipakai. Setelah memasukkan bilangan yang ingin dioperasikan,
program meminta input yang berupa operasi yang ingin dilakukan. Operasi yang
dilakukan harus sesuai dengan mode yang telah dipilih, selain itu akan terdapat pesan
error dan program langsung selesai. Setelah menentukan operasi, program meminta
input kembali yang berupa bilangan kedua yang ingin dioperasikan. Kemudian
program akan memproses operasi yang dipilih, lalu terdapat macro display untuk
menampilkan hasil operasi. Jika operasi yang dipilih adalah penjumlahan atau
perkalian atau pembagian, program hanya akan meminta input bilangan 1, operator,
bilangan 2 dan menampilkan output. Jika operasi yang dipilih adalah pengurangan,
maka setelah user memasukkan bilangan kedua, program akan melakukan
pembandingan dengan macro compare untuk menentukan bilangan mana yang lebih
besar karena akan mempengaruhi tanda dari hasil pengurangan.

Hasil Simulasi :
Start

Mode 0

Mode 1

Error saat mode tidak sesuai

Error saat operator tidak sesuai mode yang dipilih.

Anda mungkin juga menyukai