KALKULATOR ASSEMBLY Lutfi Budi Ilmawan

dokumen-dokumen yang mirip
Pada pembahasan kali ini, digunakan instruksi MOV untuk menjelaskan mode pengalamatan data. Format penulisannya adalah :

BAB III ALGORITMA DAN PERANCANGAN ALGORITMA DAN PERANCANGAN

Daftar Isi. Daftar Isi Pertemuan 6: Perintah Masukkan dari Keyboard P6.1. Teori Masukkan dari Keyboard... 3

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

MODUL III FLOW CONTROL INSTRUTIONS

MODUL I PENGENALAN ASSEMBLY

Pertemuan ke 7 Mode Pengalamatan. Computer Organization Eko Budi Setiawan

Kuis : Bahasa Rakitan (UAS)

Bab 1. Pemrograman dan Bahasa Rakitan. 1.1 Pendahuluan

BAB IV IMPLEMENTASI DAN PENGUJIAN IMPLEMENTASI DAN PENGUJIAN

Karakteristik Instruksi Mesin

Mata Kuliah : Bahasa Rakitan

Hanif Fakhrurroja, MT

Eksplorasi Prosesor 8086 Dengan Program DEBUG

a b a AND b a OR b a XOR b a NOT a

Arsitektur dan Organisasi

MIKROPROSESOR REGISTER-REGISTER MIKROPROSESOR INTEL

Mengenal bahasa assembly

TUGAS KELOMPOK BAHASA RAKITAN PUSTAKA MAKRO

Simple As Possible (SAP) - 2. Abdul Syukur

Pemrograman Dasar P E N G A N T A R A L G O R I T M A

DIKTAT BAHASA RAKITAN

MODE PENGALAMATAN PROGRAM MEMORI

Diktat Kuliah intel 8088

Arsitektur Set Instruksi. Abdul Syukur

Intermediate Code Form

Pertemuan 01. Pemrograman Dasar [PTI-5001 ] 2012

0F9C:0000 9A00009E0F CALL 0F9E:0000 0F9C: PUSH BP 0F9C: E5 MOV BP,SP 0F9C: C0 XOR AX,AX 0F9C:000A 9ACD029E0F CALL 0F9E:02CD

KONFIGURASI PIN-PIN MIKROPROSESOR Z 80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

SISTEM KERJA MIKROPROSESOR

Diktat Kuliah Organisasi dan Interaksi

Microcontroller: Bahasa Pemrograman Assembly 8051

Daftar Isi. Daftar Isi Pertemuan 4: Operator Aritmatika, Logika dan Instruksi Banding dan Lompatan P4.1. Teori... 3

Mikroprosesor. Bab 3: Arsitektur Mikroprosesor. INTEL 8086 Generasi Awal Prosesor PENTIUM. Arsitektur Mikroprosesor 1

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Aritmatik Komputer. Oky Dwi Nurhayati, ST, MT

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK Praktikum Bahasa Rakitan Hand On Lab 4

PERTEMUAN : 4 EKSPLORASI DEBUG

MAKALAH MODE DAN FORMAT PENGALAMATAN SET INSTRUKSI. Nama : Annisa Christyanti Kelas : XI TJA 3 NIS :

ARSITEKTUR KOMPUTER SET INSTRUKSI

ALGORITMA DAN PEMROGRAMAN #2

DASAR PEMROGRAMAN & ALGORITMA

ORGANISASI DAN ARSITEKTUR KOMPUTER. rsp oak informatika

OPERASI ARITMATIKA. Untuk menambah dalam bahas Assembler digunakan perintah ADD, ADC serta INC Sintaks : ADD Tujuan,Asal

Kumpulan instruksi lengkap yang dimengerti

IMPLEMENTASI PENGISIAN REGISITER DATA DAN OPERASI ARITMATIKA MENGGUNAKAN PROGRAM COMMAND PROMPT, BAHASA ASSEMBLER

Menggunakan Bahasa Pemrograman Assembly

Modul Kuliah Bahasa Rakitan. Harry Witriyono, M.Kom. I. Bahasa Rakitan, Microprocessor dan Bilangan

Pengenalan Algoritma

BAB V MEMULAI DENGAN ASSEMBLY

Sistem Bilangan & Dasar Assembler Dadang Mulyana

Set Instruksi: Set instruksi?

Set Instruksi. Set Instruksi. Set Instruksi adalah kumpulan

Daftar Isi. Daftar Isi Pertemuan 3: Pengenalan TASM P3.1. Teori Pengenalan Turbo Assembler Struktur Program...

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

Set Instruksi & Mode Pengalamatan. Team Dosen Telkom University 2016

Mikroprosesor. Pertemuan 8. By: Augury

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM POINTER OPERASI ARITMATIKA

Teori Komputasi 10/15/2015. Bab 1: Pendahuluan. Teori Komputasi dan Teknik Kompilasi. Teori Komputasi dan Teknik Kompilasi

Operasi Transfer Data

BAB VII KOMPUTER SEDERHANA SAP-3 (SIMPLE AS POSSIBLE-3)

PERTEMUAN MINGGU KE-5 ARSITEKTUR SET INSTRUKSI

PERINTAH-PERINTAH DASAR (UMUM)

Organisasi & Arsitektur Komputer

Bahasa Rakitan PENGERTIAN REGISTER

DCH1B3 Konfigurasi Perangkat Keras Komputer SAP-2

Pemrograman Assembler dengan Debug

IKI20210 Pengantar Organisasi Komputer Kuliah Minggu ke-3: Bahasa Rakitan AVR

R E G I S T E R. = Code Segment Register = Data Segment Register = Stack Segment Register = Extra Segment Register. 3.

MODUL V STACK dan PENGENALAN PROCEDURE

NAMA : FATIH SILMI MHD NIM : BAHASA MESIN DI DALAM DEBUG.COM

LAPORAN PRAKTIKUM 1 TEKNIK KOMPILASI

Bahasa Pemrograman Assembler 8051

Tahun Akademik 2015/2016 Semester I DIG1B3 Konfigurasi Perangkat Keras Komputer

KOM206 - ORGANISASI KOMPUTER PENGENALAN BAHASA ASSEMBLY DAN TIPE REGISTER TUJUAN PRAKTIKUM

Algoritme dan Pemrograman

BAB 2 Pemrograman Zilog Z80

Pertemuan 01. Pemrograman Dasar

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

OF DF IF TF SF ZF AF PF CF

BAB 3 UNIT KONTROL. Universitas Gadjah Mada 1

DASAR KOMPUTER. Assembly Language

Web Site :

MODUL 6 INSTRUKSI PERCABANGAN. Tujuan : praktikan dapat menggunakan instruksi percabangan dalam program.

P3 Pengantar Pemrograman C

PRAKTIKUM 1. Untuk membuat program, prosedur yang harus dilewati adalah: 1. Menentukan logika jalannya program, sering disebut algoritma.

Diktat Kuliah Instruksi dan Segmentasi

Learning Outcomes. akan mampu : (C3) perancangan compiler yang paling optimal (C4)

Instruksi-Instruksi MIPS

Mode Pengalamatan. Sistem Komputer Universitas Gunadarma

Diktat Kuliah - Pipeline

Arsitektur dan Organisasi Komputer. Set instruksi dan Pengalamatan

Materi 4: Assembly Language Programming

Arsitektur dan Organisasi Komputer Set Intruksi

BUKU PETUNJUK PRAKTIKUM DASAR ALGORITMA DAN PEMROGRAMAN

Laboratorium Dasar Teknik Elektro - Sekolah Teknik Elektro dan Informatika ITB

Daftar Isi. Daftar Isi Pertemuan 2: Pengenalan Debug dan Interrupt P2.1. Teori Pengenalan DEBUG... 3

Kumpulan Instruksi dan Assembly MIPS (Pertemuan ke-25)

PEMROGRAMAN BAHASA RAKITAN

Teknik Kompiler 12. oleh: antonius rachmat c, s.kom

Transkripsi:

KALKULATOR ASSEMBLY Lutfi Budi Ilmawan 1. Analisis Kebutuhan Awal 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 linux dengan arsitektur prosesor intel 32 bit. Pada proses aritmetika digunakan register al dan register bl untuk menyimpan nilai inputan angka. Di mana register al dan bl ini adalah register 8 bit. Berikut register-register dam jumlah bitnya: Jumlah Bit Register 32 bit EAX, EBX, ECX, EDX 16 bit AX, BX, CX, DX 8 bit AH, AL, BH, BL, CH, CL, DH, DL 2. Algoritma Program a) Proses penjumlahan Untuk proses penjumlahan digunakan instruksi add seperti terlihat pada gambar di bawah: Instruksi add di atas berarti nilai dalam register bl dijumlahkan ke dalam nilai register al, jadi nilai akhir tersimpan pada register al. b) Proses Pengurangan Untuk proses penguragan digunakan instruksi sub, penggunaannya bisa dilihat pada gambar di bawah: Instruksi sub di atas untuk mengurangkan nilai pada register al dengan nilai pada register bl, dan hasilnya akan disimpan di register al. c) Proses Perkalian Untuk proses perkalian digunakan instruksi sub. Instruksi sub menggunakan register tertentu sebagai multiplicand dan hasil operasinya, tergantung pada jumlah bit pada multiplier-nya. Multiplicand Multiplier Hasil kali AL 8 BIT AX AX 16 BIT DX, AX EAX 32 BIT EDX, EAX

Pada program kalkulator ini menggunakan register 8 bit sebagai operand-nya. Jadi multiplicand yang digunakan adalah register al. Dari gambar di atas diketahui bahwa register bl adalah register 8 bit, maka multiplicandnya adalah register al dan hasil perkaliannya akan disimpan pada register ax. d) Proses Pembagian Pada proses pembagian digunakan instruksi div, format penulisan instruksi div sebagai berikut: div [nama_register] Sama dengan instruksi sub, instruksi div menggunakan register-register tertentu untuk operand-nya. Hasil bagi Pembagi Dividend Ax 8 bit AL Dx 16 bit AX Edx 32 bit EAX Program kalkulator yang dibuat menggunakan operand dengan register 8 bit. Penggunaan instruksi sub pada program kalkulator yang dibuat dapat dilihat pada gambar di bawah: Dari gambar di atas diketahui bahwa yang digunakan register bl (register 8 bit), maka dividend yang digunakan adalah register al dan hasil bagi akan tersimpan pada register ax. 3. Flowchart Program Kalkulator Flowchart dari program kalkulator sebagai mana diperlihatkan pada gambar di bawah. Mula-mula user menginputkan nilai pertama kemudian nilai kedua, nilai yang dimasukkan harus berupa integer. Setelah memasukkan nilai, user kemudian memilih jenis operasi, angka 1 untuk proses penjumlahan, angka 2 untuk proses pengurangan, angka 3 untuk proses perkalian, dan angka 4 untuk proses pembagian. Jika dimasukkan angka selain 1 sampai dengan angka 4, maka program akan melakukan perulangan untuk melakukan input operasi sampai jenis operasi yang dimasukkan benar. Seperti terlihat pada gambar di bawah:

Instruksi yang digunakan untuk meembandingkan nilai antara operand adalah instruksi cmp. Instruksi cmp pada gambar di atas berarti membandingkan nilai dari register ah dengan angka 1. Instruksi je (jump if equal) untuk melakukan jump jika nilai dari operand yang dibandingkan bernilai sama.setelah memilih jenis operasi yang benar maka program akan mengeksekusi statement sesuai dengan pilihan yang dimasukkan, kemudian hasil operasi akan ditampilkan. Flowchart dapat program dapat dilihat pada gambar di bawah: start Read num1, num2, opc opc = 1? Y result = num1 + num2 N opc = 2? Y result = num1 - num2 N opc = 3? Y result = num1 * num2 N opc = 4? Y result = num1 / num2 N write Pilihan Salah write result end

4. Implementasi a) Proses Compile Program dengan bahasa assembly ini dijalankan pada komputer dengan arsitektur intel 32 bit. Dan di-compile pada sistem operasi linux dengan menggunakan nasm, nasm merupakan compiler untuk bahasa assembly pada linux. Nama file source code program adalah kalkulator.asm perintahnya: $ nasm -f elf kalkulator.asm b) Proses Linking Proses linking output file menjadi file executable dengan memasukkan perintah: $ ld -m elf_i386 -s -o kalkulator kalkulator.o c) Proses Running Program Untuk menjalankan hasil file executable dengan menjalankan perintah: $./kalkulator Setelah program dijalankan maka user akan diminta untuk melakukan input terhadap nilai I. Selanjutnya tekan enter untuk melakukan input untuk nilai II. Setelah melakukan input angka, selanjutnya melakukan input terhadap jenis operasi. Jenis operasi dapat dipilih berdasarkan angka: 1 untuk proses penjumlahan 2 untuk proses pengurangan 3 untuk proses perkalian 4 untuk proses pembagian

Tekan enter untuk melihat hasil operasi.

LAMPIRAN KODE PROGRAM section.data ; Messages msg1 db 10,'-Kalkulator Sederhana-',10,0 lmsg1 equ $ - msg1 msg2 db 10,'Angka I: ',0 lmsg2 equ $ - msg2 msg3 db 'Angka II: ',0 lmsg3 equ $ - msg3 msg4 db 10,'1. Penjumlahan',10,0 lmsg4 equ $ - msg4 msg5 db '2. Pengurangan',10,0 lmsg5 equ $ - msg5 msg6 db '3. Perkalian',10,0 lmsg6 equ $ - msg6 msg7 db '4. Pembagian',10,0 lmsg7 equ $ - msg7 msg8 db 'Pilih Operasi: ',0 lmsg8 equ $ - msg8 msg9 db 10,'Hasil Operasi: ',0 lmsg9 equ $ - msg9 msg10 db 10,'Pilihan Salah',10,0 lmsg10 equ $ - msg10 nlinea db 10,10,0 lnlinea equ $ - nlinea section.bss ; Spaces reserved for storing the values provided by the user. opc: resb 2 num1: resb 2 num2: resb 2 result: resb 2 section.text global _start _start: ; Menampilkan isi text dari variabel msg1

mov ecx, msg1 mov edx, lmsg1 ; Menampilkan isi text dari variabel msg2 mov ecx, msg2 mov edx, lmsg2 ; Input variabel num1 mov eax, 3 mov ebx, 0 mov ecx, num1 mov edx, 2 ; Menampilkan isi text dari variabel msg3 mov ecx, msg3 mov edx, lmsg3 ; Input variabel num2 mov eax, 3 mov ebx, 0 mov ecx, num2 mov edx, 2 ; Menampilkan isi text dari variabel msg4 mov ecx, msg4 mov edx, lmsg4 ; Menampilkan isi text dari variabel msg5 mov ecx, msg5 mov edx, lmsg5 ; Menampilkan isi text dari variabel msg6 mov ecx, msg6 mov edx, lmsg6 ; Menampilkan isi text dari variabel msg7

mov ecx, msg7 mov edx, lmsg7 ulangi: ; Menampilkan isi text dari variabel msg8 mov ecx, msg8 mov edx, lmsg8 ; Input jenis operasi mov ebx,0 mov ecx,opc mov edx,2 mov eax,3 mov ah, [opc] sub ah, '0' ; memindahkan value dari jenis operasi ke registry ah ; Convert dari ascii ke decimal ; Membandingkan value dari jenis operasi yang dimasukkan untuk mengetahui jenis operasi yang akan dilakukan cmp ah, 1 je add cmp ah, 2 je subtract cmp ah, 3 je multiply cmp ah, 4 je divide ; Jika jenis operasi yang dimasukkan tidak dalam daftar ; maka akan tampil pesan error dan aplikasi tertutup. mov ecx, msg10 mov edx, lmsg10 jmp ulangi add: ; simpan nilai num1 dan num2 pada register al and bl mov al, [num1] mov bl, [num2] ; Convert dari ascii ke decimal sub al, '0' sub bl, '0' ; Proses penjumlahan add al, bl

; konversi dari decimal ke ascii add al, '0' ; move the result mov [result], al ; Menampilkan isi text dari variabel msg9 mov ecx, msg9 mov edx, lmsg9 ; Menampilkan hasil operasi mov ecx, result mov edx, 2 ; Proses penjumlahan selesai jmp exit subtract: ; simpan nilai num1 dan num2 pada register al and bl mov al, [num1] mov bl, [num2] ; Convert dari ascii ke decimal sub al, '0' sub bl, '0' ; Proses pengurangan sub al, bl ; konversi dari decimal ke ascii add al, '0' ; move the result mov [result], al ; Menampilkan isi text dari variabel msg9 mov ecx, msg9 mov edx, lmsg9 ; Menampilkan hasil operasi mov ecx, result mov edx, 1

; Proses pengurangan selesai jmp exit multiply: ; simpan nilai num1 dan num2 pada register al and bl mov al, [num1] mov bl, [num2] ; Convert dari ascii ke decimal sub al, '0' sub bl, '0' ; Proses perkalian. AX = AL x BL mul bl ; konversi dari decimal ke ascii add ax, '0' ; move the result mov [result], ax ; Menampilkan isi text dari variabel msg9 mov ecx, msg9 mov edx, lmsg9 ; Menampilkan hasil operasi mov ecx, result mov edx, 1 ; Proses perkalian selesai jmp exit divide: ; simpan nilai num1 dan num2 pada register al and bl mov al, [num1] mov bl, [num2] mov dx, 0 mov ah, 0 ; Convert dari ascii ke decimall sub al, '0' sub bl, '0' ; Proses pembagian. AX = AL / BL div bl ; Konversi dari decimal ke ascii

add ax, '0' ; move the result mov [result], ax ; Menampilkan isi text dari variabel msg9 mov ecx, msg9 mov edx, lmsg9 ; Print on screen the result mov ecx, result mov edx, 1 ; Proses pembagian selesai jmp exit exit: mov ecx, nlinea mov edx, lnlinea ; Akhir dari program mov eax, 1 mov ebx, 0