0% found this document useful (0 votes)
69 views24 pages

Laporan Hasil Praktikum Jaringan Komputer Operasi Aritmatika

This document contains the report of a computer networking lab practice on arithmetic operations. It includes the student's name and ID, the experiment title, algorithms for running the emulator software and viewing outputs, program code for addition and multiplication operations, and flowcharts of the experiment process. The program code shows the registers and flags after each operation is performed.

Uploaded by

Warda Nadhira
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
69 views24 pages

Laporan Hasil Praktikum Jaringan Komputer Operasi Aritmatika

This document contains the report of a computer networking lab practice on arithmetic operations. It includes the student's name and ID, the experiment title, algorithms for running the emulator software and viewing outputs, program code for addition and multiplication operations, and flowcharts of the experiment process. The program code shows the registers and flags after each operation is performed.

Uploaded by

Warda Nadhira
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

LAPORAN HASIL PRAKTIKUM JARINGAN KOMPUTER

OPERASI ARITMATIKA

DISUSUN OLEH :

Nama : Warda Nadhira


Nim : 09030581923035
Dosen : Tri Wanda Septian, M.Sc

JURUSAN TEKNIK KOMPUTER


FAKULTAS ILMU KOMPUTER
UNIVERSITAS SRIWIJAYA
2020
Nama : Warda Nadhira
Nim : 09030581923035
Judul percobaan : Operasi Aritmatika

A.Program 2
Algoritma
1. Download aplikasi emu8086
2. Buka aplikasi emu8086
3. Klik new
4. Tuliscodingan program 1 yang telah di sediakan
5. Save dan compile codingantersebut
6. Kemudianakantampil output laluklik single step
7. Selesai
B.Data percobaan (program 2)
AX BX CX DX
mnomenic
AH
alamat Code (operand) AL BH BL CH CL DH DL FLAGS
AL 90H MOV 00 00 00 00 00 25 00 00 CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
AL 11H MOV 00 90 00 00 00 25 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
BL 22H MOV 00 11 00 00 00 25 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
CL 33H MOV 00 11 00 22 00 25 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
BL 44H MOV 00 11 00 22 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
CH - INC 00 11 00 44 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
DH - INC 00 11 00 44 01 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
AL,BL - ADD 00 11 00 44 01 33 01 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
DL 23H ADD 00 55 00 44 01 33 01 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
DH - DEC 00 55 00 44 01 33 01 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
BL 32H ADD 00 55 00 44 01 33 00 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
AX,BX - ADD 00 55 00 76 01 33 00 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
AL,BL - SUB 00 CB 00 76 01 33 00 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
BX 0808H SUB 00 55 00 76 01 33 00 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
CX - DEC 00 55 F8 6E 01 33 00 23
CF 0,ZF 0,SF 0,OF 0,PF 0,AF 0,IF 1,DF 0
DL 23H SBB 00 55 F8 6E 01 32 00 23
FLOWCHART

MULAI

DOWNLOAD
APLIKASI EMU 8086

BUKA APLIKASI
EMU8086

KLIK NEW

TULISKAN CODINGAN
PROGRAM 1 YANG
TELAH DISEDIAKAN

SAVE DAN COMPILE


KODINGAN
TERSEBUT

KEMUDIAN
TAMPILAKAN OUTPUT
LALU KLIK SINGLE

SELESAI
4.2 Program perkalian
A.Program 3
B.Data percobaaan (program 3)
AX BX CX DX
mnomenic
AH
alamat Code (operand) AL BH BL CH CL DH DL FLAGS
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
AL 90H MOV 00 00 00 00 00 2A 00 00 0,IF 1,DF 0
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
AL 12H MOV 00 90 00 00 00 2A 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
BL 09H MOV 00 12 00 00 00 2A 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
CL 33H MOV 00 12 00 09 00 2A 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
BL 44H MOV 00 12 00 09 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
BH - MUL 00 12 00 44 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
AX,BX - CMP 00 00 00 44 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
BX 0034H MOV 00 00 00 44 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
CX 2323H MOV 00 00 00 34 00 33 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
BX - MUL 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
- - CLC 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
CX - MUL 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
- - CMC 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
DX - MUL 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
AX 9F98H MOV 00 00 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
DX - DIV 9F 98 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
AX 0FF67H MOV 9F 98 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
CX 0220H MOV FF 67 00 34 23 23 00 00
CF 0,ZF 0,SF 0,OF 0,PF 0,AF
0,IF 1,DF 0
CX - DIV FF 67 00 34 23 23 00 00

Algoritma
1. Download aplikasi emu8086
2. Buka aplikasi emu8086
3. Klik new
4. Tuliscodingan program 1 yang telah di sediakan
5. Save dan compile codingantersebut
6. Kemudianakantampil output laluklik single step
7. Selesai
FLOWCHART

MULAI

DOWNLOAD
APLIKASI EMU 8086

BUKA APLIKASI
EMU8086

KLIK NEW

TULISKAN CODINGAN
PROGRAM 1 YANG
TELAH DISEDIAKAN

SAVE DAN COMPILE


KODINGAN
TERSEBUT

KEMUDIAN
TAMPILAKAN OUTPUT
LALU KLIK SINGLE

SELESAI
OPERASI ARITMATIKA

Pengertian Operasi aritmatika


pengaplikasian dari kegiatan pengoperasianlogikdalam kegiatan sehari-hari,
contohnya pengaplikasian dari carry flagyangmerupakansisa dari pengurangan atau
penambahan dan pengaplikasianregister DX sebagai hasilsiswa lebih dari operasi
pembagian atau perkalian

OPERASI PENAMBAHAN

1. 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(8bit), 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
2. 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.


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

.4. PROGRAM PENAMBAHAN DAN DEBUG

Setelah apa yang telah kita pelajari, marilah sekarang kita menjadikannya sebuah program
dengan semua contoh yang telah diberikan.

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; PROGRAM : TAMBAH.ASM ;
; FUNGSI : MELIHAT PENAMBAHAN ;
; YANG DILAKUKAN ;
; OLEH BERBAGAI ;
; PERINTAH ;
;===========================S’to=;
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH,15h ; AH:=15h
MOV AL,4 ; AL:=4
ADD AH,AL ; AH:=AH+AL, jadi AH=19h
MOV AX,1234h ; NIlai AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
ADD AX,BX ; AX:=AX+BX, jadi nilai AX=0455h
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
INC AL ; AL:=AL+1, nilai pada AL ditambah 1
INT 20h
END Proses

Setelah anda selesai mengetikkan program 8.1., jadikanlah program COM dengan tasm dan
tlink/t.Setelah itu cobalah untuk melihat kebenaran dari apa yang sudah diberikan dengan
menggunakan debug. Pertama-tama ketikkanlah :

C:\>debug Tambah

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

Penekanan "r" pada saat pertama kali digunakan untuk melihat nilai pada semua register. Pada
baris pertama dapat anda lihat register yang dinamakan sebagai general purpose(AX,BX,CX dan
DX). Register SP yang digunakan pada operasi stack menunjukkan nilai FFFE(akhir dari
Segment), jadi operasi stack nantinya akan ditaruh pada posisi tersebut. Pada baris kedua dapat
anda lihat keempat register segment, yaitu DS,ES,SS dan CS. Keempat register segment
menunjukkan nilai yang sama yaitu 3597(mungkin berbeda pada komputer anda). Hal ini
dikarenakan program kita adalah program com yang hanya menggunakan 1 segment. Pada baris
kedua dapat juga anda lihat register IP bernilai 100h. Register IP menunjukkan bahwa kita
sekarang sedang berada pada offset ke 100h dari segment aktif(CS:IP atau 3597:100).

Pada baris ketiga dapat anda lihat 3597:0100, nilai ini menunjukkan pasangan dari CS:IP.
Setelah itu dapat anda lihat nilai B415 yang menujukkan isi dari alamat 3597:0100 adalah B4
sedangkan isi dari alamat 3597:1001 adalah 15. Nilai B415 ini sebenarnya merupakan suatu
bahasa mesin untuk instruksi MOV AH,15. Jadi bahasa mesin untuk perintah "MOV AH,nilai"
adalah B4 disertai nilai tersebut. Dari nilai B415 ini dapat diketahui bahwa perintah MOV akan
menggunakan 2 byte di memory.

Setelah itu tekanlah 't' untuk mengeksekusi intruksi yang terdapat pada alamat yang ditunjukkan
CS:IP(MOV AH,15). Setelah anda menekan 't' maka akan ditampilkan hasil setelah intruksi
"MOV AH,15" dieksekusi :

AX=1500 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0102 NV UP EI PL NZ NA PO NC

3597:0102 B004 MOV AL,04

-t < enter >

Terlihat bahwa nilai AX berubah dari 0000 menjadi 1500 setelah mendapat perintah MOV
AH,15. Tekanlah 't' disertai enter untuk melihat perubahan nilai pada register-register yang
bersangkutan.

AX=1504 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0104 NV UP EI PL NZ NA PO NC

3597:0104 02E0 ADD AH,AL

-t < enter >


AX=1904 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0106 NV UP EI PL NZ NA PO NC

3597:0106 B83412 MOV AX,1234

-t < enter >

AX=1234 BX=0000 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0109 NV UP EI PL NZ NA PO NC

3597:0109 BB21F2 MOV BX,F221

-t < enter >

AX=1234 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=010C NV UP EI PL NZ NA PO NC

3597:010C 03C3 ADD AX,BX

-t < enter >

AX=0455 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=010E NV UP EI PL NZ NA PE CY

3597:010E B83412 MOV AX,1234

-t < enter >

AX=1234 BX=F221 CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0111 NV UP EI PL NZ NA PE CY

3597:0111 BBBC9A MOV BX,9ABC

-t < enter >

AX=1234 BX=9ABC CX=0030 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0114 NV UP EI PL NZ NA PE CY

3597:0114 B97856 MOV CX,5678


-t < enter >

AX=1234 BX=9ABC CX=5678 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0117 NV UP EI PL NZ NA PE CY

3597:0117 BAF0DE MOV DX,DEF0

-t < enter >

AX=1234 BX=9ABC CX=5678 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011A NV UP EI PL NZ NA PE CY

3597:011A 03CA ADD CX,DX

-t < enter >

AX=1234 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011C NV UP EI PL NZ NA PO CY

3597:011C 13C3 ADC AX,BX

-t < enter >

AX=ACF1 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=011E NV UP EI NG NZ AC PO NC

3597:011E FEC0 INC AL

-t < enter >

AX=ACF2 BX=9ABC CX=3568 DX=DEF0 SP=FFFE BP=0000 SI=0000 DI=0000

DS=3597 ES=3597 SS=3597 CS=3597 IP=0120 NV UP EI NG NZ NA PO NC

3597:0120 CD20 INT 20

-Q < enter >

Pengetikan "Q" menandakan bahwa kita ingin keluar dari lingkungan debug

dan akan kembali ke a:\>.


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 menolkan suatu register bisa anda kurangkan dengan dirinya sendiri seperti SUB AX,AX.

 .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).

;================================;
; PROGRAM : KURANG.ASM ;
; AUTHOR : S’to ;
; FUNGSI : MENGURANGKAN ANGKA ;
; 122EFFF-0FEFFFF ;
;;
;================================;
.MODEL SMALL
.CODE
ORG 100h
TData :
JMP Proses ; Lompat ke Proses
ALo EQU 0EFFFh
AHi EQU 122h
BLo EQU 0FFFFh
Bhi EQU 0FEh
HslLo DW ?
HslHi DW ?
Proses :
MOV AX,ALo ; AX=EFFFh
SUB AX,Blo ; Kurangkan EFFF-FFFF, jadi AX=F000
MOV HslLO,AX ; HslLo bernilai F000
MOV AX,Ahi ; AX=122h
SBB AX,BHi ; Kurangkan 122-FE-Carry, AX=0023
MOV HslHi,AX ; HslHi bernilai 0023
INT 20h ; Kembali ke DOS

END TData

Disini dapat kita lihat begaimana caranya mendefinisikan suatu nilai constanta(nilai yang tidak
dapat dirubah) dan variabel dengan :

ALo EQU 0EFFFh

AHi EQU 122h


BLo EQU 0FFFFh
Bhi EQU 0FEh
HslLo DW ?
HslHi DW ?
Perintah EQU digunakan untuk mendefisisikan suatu yang constan(Tetap), data yang telah
didefinisikan dengan perintah EQU tidak dapat dirubah. Dengan perintah EQU kita
mendefinisikan bahwa ALo = 0EFFF, AHi=122, BLo=FFFF dan BHi=0FE. Untuk menampung
hasil dari pengurangan A-B(122EFFF-FEFFF) nantinya, kita definisikan suatu tempat untuk
menyimpannya dengan nama HslLo dan HslHi.

Tanda '?' digunakan untuk menyatakan bahwa tempat yang kita pesan sebanyak sebanyak 1
word(DW) tidak diberikan data awal yang akan terdapat pada variabel tersebut(HslLo dan
HslHi). Jadi data yang akan terdapat pada HslLo dan HslHi bisa apa saja dan kita tidak
mengetahuinya. Tempat data program kita lompati dengan perintah JMP supaya komputer tidak
mengeksekusi data program sebagai perintah.

MOV AX,ALo

SUB AX,Blo

MOV HslLO,AX
Untuk mengurangkan angka 122EFFF dengan 0FEFFFF kita dapat mengurangkan word rendah
dari angka tersebut dahulu, yaitu EFFF- FFFF. Hal ini dikarenakan daya tampung register yang
hanya 16 bit. Dapat anda lihat bahwa pengurangan EFFF-FFFF akan menyebabkan terjadinya
peminjaman(Borrow), hasil word rendah(F000) yang didapatkan kemudian kita simpan pada
variabel HslLo.

122 EFFF
FE FFFF
---------- -
023 F000
Sampai saat ini kita sudah selesai mendapatkan nilai pada word rendahnya, yang disimpan pada
variabel HslLo.
MOV AX,AHi
SBB AX,BHi
MOV HslHi,AX
Langkah selanjutnya adalah menghitung word tingginya yaitu pengurangan 122-FE-Carry
dengan menggunakan perintah SBB maka masalah tersebut dengan mudah terpecahkan.
Akhirnya kita akan mendapatkan hasil pengurangan dari 122EFFF-0FEFFFF yaitu 23F000 yang
tersimpan pada pasangan HslHi:HslLo(0023F000).

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

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; PROGRAM : CBA0.ASM ;
; FUNGSI : MENCETAK KARAKTER ;
; "Z".."A" DENGAN ;
; INT 21h SERVIS 02 ;
;==========================S’to=;
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH,02h ; Nilai servis
MOV DL,'Z' ; DL=5Ah
MOV CX,26 ; Banyaknya pengulangan yang akan
; dilakukan
Ulang:
INT 21h ; Cetak karakter !!
DEC DL ; Kurang DL dengan 1
LOOP Ulang ; Lompat ke Ulang

INT 20h
END Proses
ZYXWVUTSRQPONMLKJIHGFEDCBA

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.

;================================;
; PROGRAM : KALI.ASM ;
; AUTHOR : S’to ;
; FUNGSI : MENGALIKAN BILANGAN;
; 16 BIT, HASIL ;
; PADA DX:AX ;
;================================;
.MODEL SMALL
.CODE
ORG 100h
TData :
JMP Proses ; Lompat ke Proses
A DW 01EFh
B DW 02FEh
HslLo DW ?
HslHi DW ?
Proses:
MOV AX,A ; AX=1EF
MUL B ; Kalikan 1FH*2FE
MOV HslLo,AX ; AX bernilai C922 sehingga HslLo=C922
MOV HslHi,DX ; DX bernilai 0005 sehingga HslHi=0005
INT 20h ; Kembali ke DOS
END TData
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.
OPERASI PEMBAGIAN

Operasi pada pembagian pada dasarnya sama dengan perkalian. Untuk operasi pembagian
digunakan perintah DIV dengan syntax:

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.

;================================;
; PROGRAM : BAGI.ASM ;
; AUTHOR : S’to ;
; FUNGSI : MEMBAGI BILANGAN ;
; 16 BIT, HASIL ;
; PADA DX:AX ;
;================================;
.MODEL SMALL
.CODE
ORG 100h
TData :
JMP Proses ; Lompat ke Proses
A DW 01EFh
B DW 2
Hsl DW ?
Sisa DW ?
Proses:
SUB DX,DX ; Jadikan DX=0
MOV AX,A ; AX=1EF
DIV B ; Bagi 1EF:2
MOV Hsl,AX ; AX bernilai 00F7 sehingga Hsl=00F7
MOV Sisa,DX ; DX berisi 0001 sehingga Sisa=0001
INT 20h ; Kembali ke DOS
END Tdata

KESIMPULAN

Operasi aritmatika ini adalah pengaplikasian dari kegiatan pengoperasianlogikdalam kegiatan


sehari-hari, contohnya pengaplikasian dari carry flagyangmerupakansisa dari pengurangan atau
penambahan dan pengaplikasianregister DX sebagai hasilsiswa lebih dari operasi pembagian
atau perkalian.
Program operasi arirmatika ini berisi operasi-operasi logik yangseringdigunakan. Operasi
aritmatika pada Assembler merupakan fungsi yang jelas dari implementasi operasi logik yang
digunakan sehari-hari sepertioperasi penambahan yang di implementasikan dengan ADD, ADC,
INC;operasi pengurangan yang di implementasi melalui perintah SUB, SBB, DEC;operasi
perkalian yang di impelentasikan dengan perintah MUL; operasipembagian yang
implementasinya adalah perintah DIV.

You might also like