modul praktikum organisasi komputer

62
Bab I : Bahasa Pemrograman Komputer BAB I BAHASA PEMROGRAMAN KOMPUTER 1.1. Tingkatan Bahasa Pemrograman Pemrograman komputer dapat dibedakan menjadi beberapa tingkat berdasarkan kedekatan dengan hardware komputer yang ada. Ada dua level bahasa yang dikenal , yaitu : 1. Bahasa Level rendah (low level language) Pada awal komputer dirancang orang, hanya perancangnya yang dapat memprogram komputer tersebut dengan bahasa yang paling rendah levelnya (low level language) yang sering disebut sebagai bahasa mesin. Level ini sering disebut sebagai level rendah karena instruksi dalam bahasa mesin sesungguhnya adalah intruksi dalam deretan bit 0 dan 1 sebagai fungsi sebenarnya dari cara kerja komputer. Tentu saja akan menjadi sangat sulit bagi orang karena antara instruksi dan data semua berbentuk deretan bit 0 dan 1. 2. Bahasa Level Tinggi (high level language) Pada perkembangan selanjutnya mulai diciptakan perangkat lunak yang memungkinkan orang lain melakukan pemrograman atas komputer. Bahasa tersebut sering disebut sebagia bahasa aras tinggi (high level language). Pada aras tinggi ini orientasi program adalah pada persoalan yang dihadapi ( problem oriented), sedangkan pada bahasa level rendah orientasinya adalah pada mesin komputer (machne oriented). Program aras tinggi ini menerjemahkan instruksi bahasa menjadi bahasa mesin yang selanjutnya akan dikerjakan oleh komputer. Ada cukup banyak pogram komputer jenis ini, misalnya :BASIC, PASCAL, COBOL,FORTRAN, PLI, C dan lain-lain. Program penerjemahan ke dalam bahasa mesin dapat ditempuh dengan dua cara yang dikenal dengan interpreter dan compiler. Interpreter Pada cara ini penerjemahan dilakukan setiap baris intruksi diterjemahkan dan langsung dieksekusi . Dengan demikian seandainya jumlah baris program adalah 100 baris dan kesalahan program terjadi pada baris ke 100, maka 99 baris Praktikum Pengantar Organisasi Komputer – pww 1

Upload: fembi-rekrisna-grandea-putra

Post on 07-Apr-2017

1.744 views

Category:

Education


31 download

TRANSCRIPT

Page 1: Modul Praktikum Organisasi Komputer

Bab I : Bahasa Pemrograman Komputer

BAB I

BAHASA PEMROGRAMAN KOMPUTER

1.1. Tingkatan Bahasa Pemrograman

Pemrograman komputer dapat dibedakan menjadi beberapa tingkat

berdasarkan kedekatan dengan hardware komputer yang ada. Ada dua level bahasa

yang dikenal , yaitu :

1. Bahasa Level rendah (low level language)

Pada awal komputer dirancang orang, hanya perancangnya yang dapat

memprogram komputer tersebut dengan bahasa yang paling rendah levelnya

(low level language) yang sering disebut sebagai bahasa mesin. Level ini sering

disebut sebagai level rendah karena instruksi dalam bahasa mesin sesungguhnya

adalah intruksi dalam deretan bit 0 dan 1 sebagai fungsi sebenarnya dari cara

kerja komputer. Tentu saja akan menjadi sangat sulit bagi orang karena antara

instruksi dan data semua berbentuk deretan bit 0 dan 1.

2. Bahasa Level Tinggi (high level language)

Pada perkembangan selanjutnya mulai diciptakan perangkat lunak yang

memungkinkan orang lain melakukan pemrograman atas komputer. Bahasa

tersebut sering disebut sebagia bahasa aras tinggi (high level language). Pada

aras tinggi ini orientasi program adalah pada persoalan yang dihadapi (problem

oriented), sedangkan pada bahasa level rendah orientasinya adalah pada mesin

komputer (machne oriented). Program aras tinggi ini menerjemahkan instruksi

bahasa menjadi bahasa mesin yang selanjutnya akan dikerjakan oleh komputer.

Ada cukup banyak pogram komputer jenis ini, misalnya :BASIC, PASCAL,

COBOL,FORTRAN, PLI, C dan lain-lain. Program penerjemahan ke dalam

bahasa mesin dapat ditempuh dengan dua cara yang dikenal dengan interpreter

dan compiler.

Interpreter

Pada cara ini penerjemahan dilakukan setiap baris intruksi diterjemahkan

dan langsung dieksekusi . Dengan demikian seandainya jumlah baris program

adalah 100 baris dan kesalahan program terjadi pada baris ke 100, maka 99 baris

Praktikum Pengantar Organisasi Komputer – pww

1

Page 2: Modul Praktikum Organisasi Komputer

Bab I : Bahasa Pemrograman Komputer

sebelumnya akan dieksekusi oleh komputer. Model penerjemahan interpreter

misalnya pada bahasa BASIC versi lama. Kelemahan interpreter adalah pada

setiap kali program akan dijalankan maka interpreter selalu dilakukan sehingga

kode program menjadi sangat tergantung pada interpreter tersebut. Apabila

program ini program aplikasi maka jika program akan didistribusikan maka

harus didistribusikan bersama interpreternya.

Compiler :

Pada compiler program mula-mula di compile menghasikan object code.

Pada tahap berikutnya dilakukan lingking dengan linker menghasilkan program

mesin dalam bentuk COM atau EXE. Skema proses kompilasi dapat digambarkan

seperti gambar 1.1.

Compiler linker

compiler

Gambar 1.1. Kompilasi dari bahasa level tinggi

Assembler :

Sebuah bahasa yang terletak diantara bahasa level rendah dan bahasa level

tinggi adalah bahasa assembly. Bahasa assembly sebenarnya adalah bahasa mesin

yang dikodekan dalam bentuk-bentuk simbolik yang sudah memiliki makna mirip

bahasa level tinggi. Bentuk simbolik dari bahasa mesin disebut sebagai

MNEMONIC. Sebagai contoh perintah untuk mengisi register AH dengan nilai 2.

Kode mesinnya adalah :

1011 1000 0000 0010 yang dalam bilangan heksa ditulis sebagai : B4 02

Kode ini adalah kode mesin yang dalam mnemonic assembly adalah : MOV AH,02,

atau mengisi register AH dengan 2.

Praktikum Pengantar Organisasi Komputer – pww

2

Source (BASIC) :Nama.BAS

Object codeNama.OBJ

Kode mesinNama.COM

Source (PASCAL) :Nama.PAS

Page 3: Modul Praktikum Organisasi Komputer

Bab I : Bahasa Pemrograman Komputer

Perintah assembly merupakan singkatan dari bahasa inggris dengan kode

lebih ringkas dari bahasa tingkat tinggi, misalnya MOV untuk move, MUL untuk

multiply DIV untuk division INC untuk INCREMENT dan seterusnya.

Kelebihan dan Kelemahan Assembly

Apabila dibandingkan dengan bahasa tingkat tinggi bahasa assembly

memiliki kelebihan antara lain :

- Lebih singkat, ukuran program umumnya lebih kecil.

- Eksekusi program lebih cepat.

Kelebihan ini dikarenakan dari code program assembly menjadi bahasa mesin proses

kompilasi adalah langsung. Bahkan pada program semacam DEBUG dimungkinkan

langsung dihasilkan program dalam kode mesin. Skema kompilasi jika membuat

program kode dengan perangkat lunak assembler dapat digambarkan sebagai

gambar 1.2.

Assembler

Gambar 1.2. Kompilasi assembley

Bahasa assembly juga memiliki kelemahan (lebih tepat dianggap sebagai

kesulitan bagi pemrogram), yaitu bahwa pemrogram harus mengendalikan sendiri

perintah-perintah dasar sehingga ia harus menulis kode lebih banyak dari kode

dalam bahasa level tinggi. Sebuah instruksi satu baris dalam bahasa level tinggi

umumnya harus diwakili oleh bebebrapa baris instruksi dalam bahasa assembly.

Sebagai contoh misalkan perintah basic berikut :

BASIC ASSEMBLY MESIN

Gambar 1.3. Perbandingan BASIC,ASSMBLY, MESIN

Praktikum Pengantar Organisasi Komputer – pww

3

Code:Assembley

Kode mesinNama.COM

MOV AX,TCWDIDIV LADD AX,SMOV S,AX

0000:A100020003:990004:F73E00040008:03030000000C:A30000

LET S=T/L + S

Page 4: Modul Praktikum Organisasi Komputer

Bab I : Bahasa Pemrograman Komputer

1.2. Sistem Bilangan Hexa Desimal

Karena bahasa assembly sebenarnya adalah kode tertentu dari bahasa mesin.

Sedangkan bahasa mesin sebenarnya adalah kode bahasa dalam bentuk bilangan

biner. Kesulitan menggunakan bilangan biner untuk kode disebabkan symbol

terbatas 0 dan 1 diatasi dengan mengkodekan ulang bilangan biner tersebut menjadi

bilangan Heksa Desimal, yaitu system bilangan dengan bilangan pokok 16. Sistem

bilangan ini teramat penting dalam pemrograman assembly karena konversi ke

system bilangan biner dapat dilakukan langsung tanpa perantaraan system desimal.

Hal ini dimungkinkan karena satu digit heksa tepat diwakili oleh 4 digit biner.

Berikut ini adalah konversi dari system bilangan desimal, biner dan heksa

desimal.

DES Biner HEX DES BINER HEX0 0000 0 8 1000 81 0001 1 9 1001 92 0010 2 10 1010 A3 0011 3 11 1011 B4 0100 4 12 1100 C5 0101 5 13 1101 D6 0110 6 14 1110 E7 0111 7 15 1111 F

Andaikan dimiliki suatu kode assembly INT 20, yang memiliki kode mesin CD 20,

maka instruksi fisik sebenarnya adalah kode biner dari nilai heksa CD 20 , yaitu :

1100 1101 0010 0000

C D 2 0

Konversi BILANGAN :

Sistem Heksa Ke Desimal

- Bilanga Heksa 12A8 H berapa dalam desimal ?

1 2 4 8 H

Praktikum Pengantar Organisasi Komputer – pww

4

Page 5: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

BAB II

REGISTER DAN POLA PENGALAMATAN

2.1. Struktur Sistem Komputer baku

Sistem komputer adalah sebuah system yang terdiri dari perangkat prosesor

untuk memproses data, perangkat memory untuk menyimpan data yang akan

diproses atau data hasil proses dan perangkat masukan untuk memasukkan data ke

system komputer dan perangkat keluaran untuk mengirim data dari system komputer

ke luar system. Secara garis besar system komputer dapat digambarkan dalam

gambar 2.1.

Gambar 2.1. Sistem komputer

2.2. Modul utama dalam Micro prosesor

Dalam system komputer micro prosesor merupakan komponen inti system.

Mikroprosesor memiliki sub komponen yang lebih rinci yang terdiri dari tiga

komponen, yaitu : control unit , Aritmetic and Logic Unit (ALU) dan register.

Gambar 2.2. merupakan skema dari micro prosesor dengan 3 sub system.

Gambar 2.2. Tiga subsitem microprosesor

Praktikum Pengantar Organisasi Komputer – pww

5

ControlUnit

ALU

Kelompok Register

Page 6: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

Control unit : bagian microprosesor yang mengendalikan jalannya setiap operasi

microprosesor

ALU : Aritmetik Logic Unit , adalah bagian microprosesor yang bertanggung jawab

menyelenggarakan operasi aritmetik (penambahan, pengurangan

perkalian dan pembagian) dan operasi logik (perbandingan data : =,

<>, <, >)

Register : kumpulan memory kecil dalam microprosesor yang berfungsi sebagai

penampung data, instruksi yang akan diolah, diambil dari memory

atau akan disimpan dimemory.

Gambar 2.3. Micro Prosesor Intel 8088

Praktikum Pengantar Organisasi Komputer – pww

6

ES (Extra segment)

CS (Code segment)

DS (Data segment)

SS (Stack segment)

Memoryinterface

4

3

2

1

IP (Instruction Pointer) Execution Unit Control System

Antrian arus byteinstruksi

AH AL

AH AL

AH AL

AH AL

DI(Destion index)

SI( Source Index)

BP(Base Pointer)

SP(Stack Pointer)

8 bit 8 bit

16 bit

Page 7: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

Program komputer pada hakekatnya adalah proses yang terus menerus dari

menjalankan sederetan instruksi yang selalu melibatkan register, memori. Eksekusi

dari sederatan instruksi tersebut dikendalikan dari control unit. Register dapat

berfungsi untuk transit data sementara yang akan diolah, transit data hasil olahan

atau untuk memberi status operasi daris system komputer. Kemampuan system

komputer mengolah data sangat ditentukan oleh kemampuan register untuk

menyimpan data. Perkembangan system komputer telah melewat beberapa tahap,

dari system komputer 4 bit, 8 bit, 16 bit , 32 bit dan 64 bit. Sebagai gambaran untuk

komputer 16 bit. Suatu informasi data satu karakter diwakili oleh 1 byte=8bit

sehingga register sekaligus dapat menyimpan 2 karakter dalam sekali olahan.

2.3. Sistem Micro Prosesor Intel 8088

Dalam perkuliahan ini system micro prosesor yang dijadikan standar adalah

Intel 8088, yaitu micro prosesor 16 bit buatan intel. Micro prosesor ini memiliki

ukuran register 16 bit dan jalur alamat 20 bit. Skema micro prosesor dan daftar

register yang ada dalam INTEL 8088 dapat dilihat pada gambar 2.3.

Dalam mikro prosesor tersebut yang dominan adalah register. Ada 13

register yang ada untuk mendukung system mikro prosesor. Register tersebut

dikelompokkan berdasarkan fungsinya. Dalam MP 8088 dikenal 5 kelompok

register

1. General purpose register (register serba guna)

AX ( AH + AL) : Accumulator register

BX (BH + BL) : Base register

CX (CH + CL) : Counter register

DX (DH + DL) : Data register

Register serbaguna dapat diases dengan 16 bit, atau dengan 8 bit

2. Segment register (untuk pengalamatan)

CS : Code Segment (alamat code program )

DS : Data Segment (alamat data)

SS : Stack Segment (alamat stcak)

ES : Extra Segment

Praktikum Pengantar Organisasi Komputer – pww

7

Page 8: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

Register segment hanya dapat diases dengan model 16 bit. Register ini tidak

dapat diisi langsung oleh programmer, tetapi dapat diisi dengan cara mengcopy

dari register general purpose. Register ini berisi data alamat segment dari suatu

sel memory dengan alamat offset berasal dari register Pointer atau register Index,

misalnya pasangan alamat adalah :

SS:SP

ES:DI

DS:SI

Mengenai pengalamatan dengan dua register akan dibahas pada bab selanjutnya.

3. Pointer register (untuk pengalamatan)

IP : Instruction Pointer (menyimpan alamat instruksi yang akan dieksekusi)

SP:Stack Pointer (dengan SS mengalamati Stack memory)

BP :Base Pointer

Dalam kelompok register ini, Instruction Pointer (IP) tidak dapat diases oleh

programer karena register ini berisi alamat kode program yang akan dieksekusi.

4. Index register (untuk pengalamatan)

SI : Source Index (dengan DS mengalamati sumber data)

DI :Destination Index (dengan ES mengalamati tujuan data)

5. Flag register : Untuk mengetahui status operasi MP

FLAG register yang berupa data 16 bit masing-masing bitnya menandai suatu

status operasi. Berikut ini adalah bit-bit penanda tersebut:

BIT ke 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

FLAG

Bit –bit yang bertanda xx aalah posisi bit yang tidak dipakai sebagai penanda.

Tanda berkaitan dengan kerja micro prosesor :

OF : Over flow Flag, akan bernilai 1 jika terjadi overflow dalam operasi data

DF : Direction Flag, akan bernilai 1 jika arah alamat naik dan 0 jika turun

Praktikum Pengantar Organisasi Komputer – pww

8

xx xx xx xx OF DF IF TF SF ZF xx AF xx PF xx CF

Page 9: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

IF : Interrupt Flag

TF : Trap Flag

Tanda berkaitan dengan operasi aritmatika oleh micro prosesor :

SF : Sign flow Flag, bit berisi 1 berarti :hasil operasi bernilai negatif

ZF : Zero Flag, bit berinilai 1 berarti hasil operasi nol

AF : Auxilary Carry Flag

PF : Parity Flag

CF : Carry Flag, bit berisi 1 berarti terjadi carry dalam operasi

2.4. Beberapa istilah untuk satuan data

Dalam konteks bahasa assembly kita lebih sering berurusan dengan data

dalam bentuknya yang paling dasar, yaitu kumpulan bit. Beberapa istilah yang

berkaitan dengan satuan data dikenal :

1 bit : singkatan dari binary digit , satuan informasi yang paling kecil, dapat

bernilai 0 atau 1 yang secara fisik diwakili oleh ada tegangan listrik dan

tidak ada tegangan listrik.

1 byte : kumpulan 8 bit

1 word : 2 byte = 16 bit

1 double word : 4 byte = 32 bit

1 KB :Kilo Byte = 210 byte =1024 byte

1 MB :Mega Byte= 210KB = 210x210 =220 byte = 1.048.576 byte

1 GB :Giga Byte = 210MB = 210x210 KB=210x210x210 =230 byte

1 TB :Tera Byte = 210GB = 240 byte

Baik data ataupun code program sebenarnya dalam memory atau micro

prosesor tersimpan dalam bentuk fisik bit, yang diwakili bilangan biner 0,1. Untuk

memudahkan komunikasi, disebabkan karena deretan bit yang panjang cenderung

sulit terbaca maka pada pembahasan tentang data deretan bit lebih mudah diwakili

oleh bilangan heksa desimal atau desimal.

Praktikum Pengantar Organisasi Komputer – pww

9

Page 10: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

2.5. Sistem Pengalamatan Memory

Memory dalam 8088 mampu menampung data 1 MB = 1024 KB = 1048576 byte

Dengan alamat memory (Hexa Desimal ) : 00000 s/d FFFFF

Addres ruang memory addres biner

00000 1 byte 0000 0000 0000 0000 000000001 1 byte 0000 0000 0000 0000 000100002 1 byte 0000 0000 0000 0000 0010…. …. … FFFFF 1 byte 1111 1111 1111 1111 1111

Untuk mengalamati memory 1 MB diperlukan register 20 bit, padahal yang ada

adalah register 16 bit. Maka digunakan metode SEGMENT:OFFSET

Dengan kalkulasi, misal alamat fisik : 12A45 dapat dialamati dengan komposisi :

Segment : 1192

Offset : 1125

Sehingga biasa ditulis sebagai alamat 1192 :1125

Contoh lain untuk alamat fisik : AB81D dapat dialamati dengan komposisi :

Segment : A870

Offset : 311D

Sehingga biasa ditulis sebagai alamat A870:311D

Berikut ni adalah peta memori untuk IBM PC 8088

00000-0007F Bios interut vector

00080-003FF Dos Interupt vector

00400-004FF BIOS data area

00500-005FF DOS dan BASIC data area

00600-9CFFF RAM Working space

A0000-A3FFF Cadangan

Praktikum Pengantar Organisasi Komputer – pww

10

SEGMENT OFFSET:

640 KB

Page 11: Modul Praktikum Organisasi Komputer

Bab II : Register dan Pola Pengalamatan

---------------------------------------------------

A4000-AFFF Monochrome adapter

B0000-B1000

B1001-B7FFF Color/graphics adaptor

B800-BFFF

---------------------------------------------------

C0000-C7FFF Ekspansi memori

C8000-F3FFF Hard disk

CC000-F3FFF Cadangan

F4000-F5FFF User ROM (8K)

F6000-FDFFF ROM BASIC (32K)

FE000-FFFFF ROM BIOS (8K)

Praktikum Pengantar Organisasi Komputer – pww

11

Video Buffer

Page 12: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

BAB III

INSTRUKSI ASSEMBLY

3.1. Jenis-jenis instruksi assembly

Instruksi assembly dikelompokkan menjadi 6 kelompok :

1. Instruksi transfer data

MOV : instruksi pemindahan data (lebih tepat pengkopian data, dari register

ke register, register ke memori, memori ke momeri dan data ke

register atau memori).

Sintaks : MOV dest,source

dengan dest = tujuan dapat berupa register atau alamat

source = asal data

Contoh : MOV AH,02 ; mengisi register AH dengan data 02

MOV DX,AX ; mengcopy register AX ke DX

PUSH : instruksi mengamankan isi register ke STACK

Sintaks : PUSH namareg

Contoh : PUSH AX ; isi AX diamankan ke stack

PUSH CX ; isi AX diamankan ke stack

POP :instruksi untuk mengambil data dari stack

Sintaks : POP namareg

Contoh : POP AX ; isi stack teratas diambil ke dalam AX

POP CX ; isi stack teratas diambil ke dalam CX

XCHG :instruksi menukarkan data antar register reg1 dengan register

reg2

Sintaks : XCHG reg1, reg2

Contoh : XCHG AH, DL ; isi AH ditukarkan dengan isi DL

XCHG DH,BL ; isi DH ditukarkan dengan isi BL

LEA :instruksi mengambil data offset alamat untuk ditampung diregister

Sintaks : LEA reg , label

Contoh : LEA DX, data1 ; alamat data disimpan di DX

data1 adalah nama label untuk data

XCHG DH,BL ; isi DH ditukarkan dengan isi BL

Praktikum Pengantar Organisasi Komputer – pww

12

Page 13: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

2. Instruksi aritmetika

Instruksi ini menangani operasi aritmetika penjumlahan (ADD),

pengurangan (SUB), perkalian (MUL) dan pembagian (DIV). Instruksi ini

akan dibahas tersendiri dibagian belakang.

3. Instruksi manipulasi bit

Instruksi manipulasi bit terdiri dari instruksi logika, geser bit dan gulung bit.

Instruksi logika : AND, OR, XOR dan NOT

AND : instruksi untuk meng-AND-kan dua buah data dan hasil operasi

AND akan ditaruh dalam operand yang pertama

Sintaks : AND dest, source

Contoh :MOV AX, 1234H

AND AX,0012H ; isi AX di-AND-kan dengan 1122H

Proses operasi AND akan dilakukan per-bit. Dengan demikian setiap

isi register atau data dikonversi dulu ke nilai biner dan di AND kan

per bit.

AX 1234 H 0001 0010 0011 0100

0012 H 0000 0000 0001 0010

----------------------------------- AND

0000 0000 0001 0000

0 0 1 0 (HEKSA)

Hasil operasi AND AX,0012H akan menyebabkan AX yang semula

berisi data 1234H berubah menjadi : 0010H

OR : instruksi untuk meng-OR-kan dua buah data dan hasil operasi OR

akan ditaruh dalam operand yang pertama

Sintaks : OR dest, source

Contoh :MOV AX, 1234H

OR AX,0012H ; isi AX di-OR-kan dengan 1122H

Proses operasi OR akan dilakukan per-bit. Dengan demikian setiap isi

register atau data dikonversi dulu ke nilai biner dan di OR kan per bit.

Praktikum Pengantar Organisasi Komputer – pww

13

Page 14: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

AX 1234 H 0001 0010 0011 0100

0012 H 0000 0000 0001 0010

----------------------------------- OR

0001 0010 0011 0110

1 2 3 6 (HEKSA)

Hasil operasi OR AX,0012H akan menyebabkan AX yang semula

berisi data 1234H berubah menjadi : 1236H

XOR : instruksi eXclusive-OR- dari dua buah data dan hasil operasi

XOR akan ditaruh dalam operand yang pertama

Sintaks : XOR dest, source

Contoh :MOV AX, 1234H

OR AX, 1100H ; isi AX di-OR-kan dengan 1100H

Proses operasi XOR akan dilakukan per-bit.

AX 1234 H 0001 0010 0011 0100

1100 H 0001 0001 0000 0000

----------------------------------- XOR

0000 0011 0011 0100

0 3 3 4 (HEKSA)

Hasil operasi XOR AX,1100H akan menyebabkan AX yang semula

berisi data 1234H berubah menjadi : 0334 H

Operator XOR sering digunakan untuk mengosongkan isi register,

karena operasi ini akan menghasilkan 0 bial operand nya sama,

sehingga jika register di XORkan dengan register itu sendiri maka isi

register akan berubah menjadi 0, contoh :

XOR AH, AH ; AH akan menjadi 00H

XOR CX,CX ; CX akan menjadi 0000H

NOT : instruksi untuk menukar tiap bit : 0 menjadi 1 dan sebaliknya

Sintaks : NOT reg

Contoh :MOV AH, 12H

NOT AH

Hasil operasi : AH menjadi EDH, ini dapat dilacak dari :

Praktikum Pengantar Organisasi Komputer – pww

14

Page 15: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

AH=12H 0001 0010

NOT AH 1110 1101

E D (HEKSA)

SHL : artinya Shift Left ; untuk menggeser isi register sejumlah bit ke KIRI

Sintaks : SHL reg, n

Contoh :MOV AX, 1234H

SHL AX,1 ; isi AX di-geser kiri-kan satu bit

“Bit yang paling kanan diganti dengan NOL”

Setelah SHL AX,1 maka AX akan menjadi : 2468H

AX 1234 H 0001 0010 0011 0100

Jika digeser ke kiri satu bit manjadi : 0010 0100 0110 1000

Ini sama dengan nilai heksa : 2468H.

SHR : artinya Shift Right ; untuk menggeser isi register sejumlah bit ke

KANAN

Sintaks : SHR reg, n

Contoh :MOV AX, 1234H

SHR AX,1 ; isi AX di-geser kiri-kan satu bit

“Bit yang paling kiri diganti dengan NOL”

Setelah SHR AX,1 maka AX akan menjadi : 091AH

AX 1234 H 0001 0010 0011 0100

Geser kanan 1 bit 0000 1001 0001 1010

0 9 1 A (HEKSA)

ROL : artinya Rotate Left ; untuk menggulung bit ke KIRI

Sintaks : ROL reg, n

Contoh :MOV AX, A234H

ROL AX,1 ; isi AX di-gulung ke kiri

“Bit yang paling kiri menjadi bit paling kanan ”

Setelah ROL AX,1 maka AX akan menjadi : 4469H

AX 1234 H 1010 0010 0011 0100

Gulung kiri 1 bit 0100 0100 0110 1001

Praktikum Pengantar Organisasi Komputer – pww

15

Page 16: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

4 4 6 9 (HEKSA)

ROR : artinya Rotate Right ; untuk menggulung bit ke KANAN

Sintaks : ROR reg, n

Contoh :MOV AX, A235H

ROL AX,1 ; isi AX di-gulung ke kiri

“Bit yang paling kanan menjadi bit paling kiri ”

Setelah ROL AX,1 maka AX akan menjadi : D11AH

AX 1234 H 1010 0010 0011 0101

Gulung kanan 1 bit 1101 0001 0001 1010

D 1 1 A (HEKSA)

4. Instruksi pemindahan kendali

Instruksi pemindahan kendali rogram dapat berupa instruksi lompatan

(JUMP) atau instruksi putaran (LOOP)

JMP : instruksi kendali program melompat ke nomor tertentu

Sintaks : JMP n dengan n nomor offset

JMP label dengan label adalah nama label dalam assembly

Contoh :JMP 0107 ; kendali program melompat ke offset 0107

Instruksi lompatan dapat didahului oleh suatu perbandingan. Dari

hasil perbandingan lomptan akan ditentukan. Perbandingan akan

dilakukan antara register dengan data atau register/alamat/ data lain.

Contoh :

CMP BX,0000H

JE lagi

Program akan melompat ke lagi jika BX berisi 0000H

Lompatan bersyarat antara lain :

JE = JUMP IF EQUAL

JNE = JUMP IF NOT EQUAL

JZ =JUMP IF ZERO

JNZ =JUMP IF NOT ZERO

JG =JUMP IF GREATER THAN

Praktikum Pengantar Organisasi Komputer – pww

16

Page 17: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

JLE =JUMP IF LESS THAN OR EQUAL TO

LOOP : instruksi kendali program berputar ke nomor/label tertentu

Sintaks : LOOP n dengan n nomor offset

LOOP label dengan label adalah nama label dalam

assembly

Contoh :LOOP 0107 ;

program akan berputar ke offset 0107 jika nilai CX tidak 0,

setiap kali berputar nilai X akan dikurangi 1 otomatis. Bila nilai CX

sudah mencapai 0 maka putaran dihentikan.

LOOP juga dapat digabungkan dengan CMP sehingga putaran dapat

disyarat oleh suatu kondisi. Setelah operasi CMP maka loop dapat

berupa :

LOOPE =berputar jika sama

LOOPNE =berputar jika tidak sama

5. Instruksi string

Operasi string merupakan bagian yang disediakan sendiri instruksinya.

Operasi string menyangkut pemindahan string, perbandingan string.

Pemindahan (lebih tepat disebut pengcopyan) dapat antar memori atau antar

register. Instruksi ini antara lain :

MOVSB, MOVSW

CMPSB,CMPSW

LODSB,LODSW

STOSB,STOSW

Uraian dari instruksi ini akan dibahasa tersendiri pada bab selanjutnya.

6. Instruksi INTERUPT

Interupt merupakan sebuah prosedur terprogram mesin yang siap

dipanggil untuk dieksekusi. Interupt ini berkaitan dengan fungsi dasar

operasi komputer, misalnya menulis karakter, menset kursor, mambaca

karakter dan lain-lain.

Praktikum Pengantar Organisasi Komputer – pww

17

Page 18: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

Interupt dipanggil dngan menuliskan nomor interuptnya, misalnya :

INT 10H ; berarti memanggil interrupt nomor 10H

INTERUPT BIOS

Interupt BIOS adalah interrupt dengan nomor interrupt 00H sampai

19H

Beberapa diantaranya adalah :

INT 00H : divide by zero, dipanggil jika terjadi kesalahan pembagian

dengan 0

INT 01H : single step

INT 05H : print screen, jika dipanggil maka isi layar akan dicetak

keprinter

INT 09H : operasi keyboard

INT 10H : operasi layar

INT 13H : operasi print screen, jika dipanggil maka isi layar akan

dicetak keprinter

INTERUPT DOS

Jika interrupt BIOS dirancang oleh perancang mikro prosesor maka

interrupt DOS merupakan interrupt yang dikembangkan oleh system operasi

DOS. Interupt DOS memiliki nomor interrupt 20H ke atas

Contoh : INT 21H untuk layanan layar , keyboard dan disk

3.2. Layanan Interupt

Telah disinggung didepan bahwa interrupt dipanggil dengan nomor interrupt.

Untuk suatu operasi seperti operasi layar misalnya, kebutuhan operasi layar

dapat bermacam-macam, misalnya : menulis karakter, mengatur kursor,

menggulung layar dan lain-lain. Interupt yang memiliki pelayanan

bermacam-macam pelayannya ditentukan oleh NOMOR SERVIS. Dengan

demikian interrupt dapat memiliki nomor servis atau tidak.

Interupt tanpa nomor servis :

Interupt tanpa nomor servis misalnya :

INT 00H ; untuk divide by zero

Praktikum Pengantar Organisasi Komputer – pww

18

Page 19: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

INT 05H ; untuk print screen

INT 20H ; untuk mengakhiri program

Interupt dengan nomor servis:

Interrupt dengan nomor servis misalnya:

INT 10H ; layanan layar BIOS

INT 13H ; layanan Disk BIOS

INT 21H. ; layanan layar, disk, keyboard dengan DOS

Interupt dengan nomor servis apabila akan dipanggil, maka nomor servis

harus ditentukan terlebih dahulu dengan cara :MENGISI REGISTER AH

DENGAN NOMOR SERVIS TERSEBUT.

Contoh : INT 21H servis 02

Interupt ini berguna untuk mencetak karakter ke layar

Syarat sebelum dipanggil :

-Register AH diisi 02 (nomor servis)

-Register DL diisi kode ASCII karakter yang akan dicetak.

Program untuk mencetak huruf ‘A’, dengan kode ASCII 41H adalah :

MOV AH,02MOV DL,41HINT 21HINT 20H

3.3. Program dengan Assembly

Membuat program dengan assembly adalah merangkai instruksi-instruksi

assembly yang dapat berupa mengisi register, mengisi alamat memori, dan

memanggil interrupt. Pemanggilan interrupt dan menset register merupakan

sebagian besar isi program assembly. Hal ini mengingat jika akan dilakukan

pemanggilan interrupt kebanyakan pasti didahului dengan mengisi register yang

disaratkan oleh interrupt tersebut.

Contoh : Perhatikan program BASIC berikutLOCATE 5,10PRINT “A”

Praktikum Pengantar Organisasi Komputer – pww

19

Page 20: Modul Praktikum Organisasi Komputer

Bab IIIi: Instruksi Assembly

END

Program tersebut bertujuan memposisikan kursor pada baris 5 kolom 10,

menulis huruf A pada posisi tersebut dan mengakhiri program. Jika program BASIC

tersebut dicoba konversi ke program assembly, maka yang diakukan :

- mengatur posisi kursor : INT 10H servis 02

- cetak karakter : INT 21H servis 02

- mengakhiri program : INT 20

Terlihat bahwa semuah baris perintah basic diterjemahkan sebagai pemanggilan

interrupt oleh assembly. Hal ini menjadi alas an tersendiri bahwa program assembly

akan selalu memiliki jumlah baris yang jauh lebih banyak dari program high

level,karena setiap instruksi high level harus diterjemahkan menjadi berbaris-baris

instruksi assembly. Namun demikian jika program assembly yang sudah jadi

dibandingkan dengan program yang sejenis dari program high level ukuran program

assembly akan jauh lebih kecil.

Program assembly dari program BASIC diatas :

MOV AH,02MOV BH,00MOV DH,05MOV DL,0AHINT 10H ; atur posisi kursorMOV AH,02MOV DL,41HINT 21H ;cetak karakter AINT 20H ;program terminate

Praktikum Pengantar Organisasi Komputer – pww

20

Page 21: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

BAB IV

MEMBUAT PROGRAM DENGAN DEBUG

Cara paling praktis membuat program assembly adalah menggunakan

program DEBUG.COM atau DEBUG.EXE dari DOS. Dengan program ini instruksi

assembly langsung dituliskan dimemori dan dapat langsung dieksekusi atau

disimpan dalam bentuk program COM. Berikut ini adalah cara masuk ke program

DEBUG dari keadaan kendali program windows :

1) Pilih menu Start ¬ Run2) Ketik tulisan cmd pada list isian Open3) Tekan tombol button OK

Gambar 4.1. Memasuki program DOS

Setelah masuk dalam kendali DOS, masuk directori command dan ketik DEBUG

<enter>

Gambar 4.2. Memanggil program DEBUG

Praktikum Pengantar Organisasi Komputer – pww

20

Page 22: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

Layar debug ditandai dengan prompt – (tanda negatif ). Pada prompt ini dapat

diketikkan perintah-perintah assembly.

Perintah-perintah Debug :

Perintah An : artinya Assemble n, dengan n adalah alamat offset. Perintah ini

digunakan untuk memulai menulis program assembly pada alamat memory

(offset) n.

Contoh : A100 <mulai menulis program pada alamat 100H)

Gambar 4.3. Menulis di alamat 100H

Alamat segment 1277 hanya merupakan salah satu contoh, jika dipraktekkan

alamat segment sangat tergantung pada konfigurasi memory. Namun karena

program debug hanya memungkinkan mengetik program COM yang berarti tidak

perlu dipersoalkan mengenai alamat segmentnya.

Catatan :Perlu selalu diingat bahwa system bilangan <default> dalam DEBUG

adalah system bilangan HEKSA DESIMAL. Sehingga jika digunakan

suatu bilangan tanpa akhiran H berarti sudah merupakan bilanganHeksa

Desimal.

Setelah diketikan A100, maka dapat dituliskan program yang diinginkan.

Berikut ini contoh program untuk mencetak karakter ‘A’ dengan interrupt 21H

servis 02. Kode ASCII karakter ‘A’ adalah 41H.

Gambar 4.4. Program Cetak Huruf A

Praktikum Pengantar Organisasi Komputer – pww

21

Page 23: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

Perintah G : Artinya <Go> , perintah ini digunakan untuk mengeksekusi program

assembly. Contoh seperti gambar 2.5. Setelah program dijalankan

maka jika tidak ada kesalahan akan tertulis :”Program terminate

normally”.

Gambar 4.4. Eksekusi program cetak A

Perintah R :Artinya <register>, untuk menampilkan isi register. Register yang

ditampilkan adalah : AX,BX,CX,DX, SP,BP,SI,DI, DS,ES,SS,CS, IP

dan posisi FLAG register. Contoh pada gambar 2.5.

Gambar 4.5. Hasil Perintah R

Perintah T : artinya <Trace>, yaitu menjalankan program per instruksi satu demi

satu.

Perintah D : artinya <Dump>, yaitu menampilkan isi memori. Contoh seperti

Gambar 2.6.

Gambar 4.6. Hasil Dump

Jika diamati hasil Dump terlihat pada alamat 100 sebanyak 8 byte adalah program

cetak huruf A dalam kode mesin heksa desimal. Rincinya adalah :

Pada alamat : 0100 dan 0101 , tertulis B4 dan 02, artinya : MOV AH,02

Praktikum Pengantar Organisasi Komputer – pww

22

Page 24: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

Pada alamat : 0102 dan 0103 , tertulis B2 dan 41, artinya : MOV DL,41HPada alamat : 0104 dan 0105 , tertulis CD dan 21, artinya : INT 21H Pada alamat : 0106 dan 0107 , tertulis CD dan 20, artinya : INT 20H

Perintah U : Artinya <Unassmble>, yaitu menampilkan kembali program assembly

yang pernah ditulis.

Sintaknya adalah Un, dengan n adalah alamat offset yang akan ditampilkan.

Contoh : Akan ditampilkan alamat 100

Gambar 4.7. Hasil perintah U100

Pada perintah U, tampilan hasilnya berupa :

Nomor segment: nomor offset kode mesin dan menemonic.

Untu jelasnya misalnya pada baris pertama tertulis :

0514:0100 B402 MOV AH,02

Berarti pada alamat 0100 beris data B4 dan alamat 0101 berisi data 02, B402 adalah

kode mesin dari instruksi assembly (mnemonic) MOV AH,02

Perintah N : artinya <Name>, digunakan untuk memberi nama file untuk

menyimpan program.

Contoh : N COBA.COM

Perintah W :artinya <write> atau tulsi ke dalam file sebanyak “isi register CX”

byte. Digunakan untuk menyimpan program dalam bentuk file kode

mesin. Sebelumnya didahului dengan memberi nama file dengan

perintah N dan men-set isi register CX dengan ukuran program dalam

byte.

Berikut ini contoh memberi nama file dengan COBA.COM , menset register CX

dengan 8 dan melakukan perintah W( write).

Praktikum Pengantar Organisasi Komputer – pww

23

Page 25: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

Gambar 4.8. Simpan program cetak ‘A’ dengan COBA.COM

Program Cetak A 10 kali.

Untuk memperjelas penggunaan DEBUG, berikut ini dikembangkan

program cetak A menjadi program cetak A 10 kali. Untuk mencetak A 10

kali digunakan perintah LOOP. Dalam assembly perintah LOOP memiliki

syntax : LOOP n, dengan n adalah nama label atau nomor offset dimana

statemen yang akan diulang . Program akan berputar sebanyak “isi register

CX”. Dengan demikian apabila diinginkan LOOP akan berputar 10 kali,

maka isi register CX harus 10. Berikut ini programnya dan hasil eksekusinya

dlam debug.

Gambar 4.9. Program cetak A 10 kali

Jika diperhatikan program pada gambar 2.8. mula-mula register CX diisi

dengan 10 (tertulis 000AH). Perintah LOOP 0107 berarti perintah pada alamat 0107

akan diulang 10 kali. Pada setiap kali ulangan nilai CX akan diturunkan 1 secara

otomatis, sampai suatu saat nilai CX akan menjadi 0. Jika nilai CX 0 maka perintah

LOOP akan terhenti dengan sendirinya.

Program Cetak : ABC…. sampai Z

Program cetak A 10 kali dikembangkan lagi menjadi program cetak

ABCD..Z. Jika digunakan LOOP berarti program harus berputar 26 kali, yaitu

Praktikum Pengantar Organisasi Komputer – pww

24

Page 26: Modul Praktikum Organisasi Komputer

Bab IV : Membuat Program dengan DEBUG

sebanyak huruf dari A sampai. Pada awal program CX diisi 26 (dalam Heksa

desimal adalah 1AH). Selanjutnya DL diisi 41 (kode ASCII karakter A), setiap

putaran nilai DL dinaikkan 1 (dengan perintah INC DL), sehingga setelah tadinya

DL berisi 41 yang tercetak A, jika DL dinaikkan 1 menjadi 42 maka yang tercetak

adalah B dan seterusnya sampai Z. Berikut ini adalah program dalam DEBUG.

Gambar 4.10. Program Cetak A…Z

Program Cetak : A*B*C*…..sampai Z*

Program mencetak huruf A sampai Z diselingi dengan cetak karakter *

diperlukan sedikit ‘trik’. Karena mencetak karakter menggunakan interrupt 21H

servis 02 berarti mencetak karakter yang kode ASCIInya tersimpan dalam DL, maka

setelah cetak ‘A’ isi DL harus di’amankan’ dulu ketempat lain (misalnya diamankan

ke DH). Setelah DL diamankan DL dapat diisi dengan kode ASCIInya karakter ‘*’,

yaitu 2AH. Setelah huruf A dicetak dan karakter * dicetak, isi DL dikembalikan lagi

dari tempat pengamannya. Isi DL dinaikkan (INC) satu dan lakukan LOOP cetak

karakter berikutnya.

Gambar 4.11. Hasil program Asampai Z

Praktikum Pengantar Organisasi Komputer – pww

25

Page 27: Modul Praktikum Organisasi Komputer

Bab V : Stack

BAB V

STACK

Dalam pemrograman assembly sering dijumpai situasi dimana isi register

saat ini harus diamankan ketempat lain sementara register akan dipakai. Karena

jumlah register terbatas pengamanan tidak dapat selalu dilakukan terhadap register

lain. Konsep yang ditawarkan untuk mengatasi hal ini adalah pengamanan isi

register ke dalam memori. Untuk selanjutnya memori yang disediakan untuk

pengamanan register dinamakan dengan STACK.

Beberapa kriteria STACK adalah :

- Sifat operasinya LIFO (Last In First Out), artinya data yang disimpan

terakhir ke dalam stack, akan diambil yang pertama kali.

- Ada operasi PUSH, yaitu mendorong isi register ke dalam STACK

- Ada operasi POP, yaitu operasi mengambil data dari STACK ke dalam

register

- Adres memori yang menangani stack adalah SS:SP (Stack Segment dan

Stack Pointer)

Gambaran dari cara kerja stack dapat dimisalkan dengan potongan program berikut :MOV SP,1B00HMOV DX,BBCCHMOV SI,1122PUSH DXPUSH SIPOP BXPOP DI

Jika digambarkan mula-mula pointer stack adalah menunjuk alamat 1B00H

Setelah instruksi MOV SP,1B00H stack berada pada keadaan :

…. …1AFCH1AFDH1AFEH1AFFH1B00H STACK

Praktikum Pengantar Organisasi Komputer – pww

26

SP

Page 28: Modul Praktikum Organisasi Komputer

Bab V : Stack

DX berisi BBCCH, maka setelah instruksi PUSH DX stack berada pada keadaan :

…. …1AFCH1AFDH1AFEH CC1AFFH BB1B00H STACK

SI berisi 1122H, maka setelah instruksi PUSH SI stack berada pada keadaan :

…. …1AFCH 221AFDH 111AFEH CC1AFFH BB1B00H STACK

Setelah operasi POP BX, maka register BX akan berisi data 1122H dan stack

menjadi seperti berikut :

…. …1AFCH 1AFDH 1AFEH CC1AFFH BB1B00H STACK

Setelah operasi POP DI, maka register DI akan berisi data BBCCH dan stack

menjadi kembali seperti semula :

…. …1AFCH 1AFDH 1AFEH 1AFFH1B00H STACK

Contoh Program :

Program mencetak karakter A*B*C* ….Z* yang pernah dituliskan pada bab

sebelumnya dapat ditulis ulang dengan menggunakan konsep STACK. Pada

Praktikum Pengantar Organisasi Komputer – pww

27

SP

SP

SP

SP

Page 29: Modul Praktikum Organisasi Komputer

Bab V : Stack

program terdahulu pengamanan data dari register DL dilakukan dengan memindah

terlebih dahulu ke register DH. Hal ini dapat dilakukan mengingat dalam program

tidak menggunakan register DH. Pada persoalan lain, apabila ternyata dalam

program melibatkan register sedemikian sehingga tidak memungkinkan pengamanan

data ke dalam register, maka satu-satunya cara adalah data diamankan ke dalam

STACK. Berikut adalah modifikasi program cetak A*B*…Z* dengan pengamanan

data ke dalam stack.

Gambar 5.1. Cetak A*B*..Z* dengan bantuan STACK

Loop Dua Lapis dengan STACK

Kadang dalam suatu pemrograman diinginkan loop dua lapis. Karena dalam

assembly kendali loop menggunakan register CX, maka dalam

mengimplementasikan loop dua lapis mula-mula CX diisi counter kendali luar,

kemudian CX di PUSH dan digantikan nilainya dengan kendali dalam. Jika proses

dalam kendali dalam telah selesai nilai CX di POP dari stack dan digunakan sebagai

kendali. Sebagai contoh andaikan dimiliki program BASIC berikut :

KodeASCII=65FOR I=1 TO 10

FOR J=1 TO 5 PRINT CHR$(KodeASCII); NEXT J KodeASCII=KodeASCII+1NEXT IEND

Praktikum Pengantar Organisasi Komputer – pww

28

Page 30: Modul Praktikum Organisasi Komputer

Bab V : Stack

Program tersebut outputnya :

AAAAABBBBBCCCCCDDDDDEEEEEFFFFFGGGGGHHHHHIIIIIJJJJJ

Yaitu menulis A sampai J , 10 kali (sebagai loop luar), setiap huruf ditulis 5 kali

(loop dalam 5 kali)

Jika logika program tersebut diimplementasikan dengan assembly, mula-

mula CX diset 000A (loop luar). Berikutnya set AH=02 dan DL=41H sebagai awal

loop. Selanjutnya CX diPUSH dan diisi CX dengan 0005 sebagai kendali loop

dalam. Dan proses cetak dilakukkan dan diulang 5 kali. Nilai CX kemudaian di POP

dan nilai DL dinaikkan 1. Proses kembali ke awal dengan LOOP luar.

Adapun program dan hasil eksekusinya dlam DEBUG adalah :

Gambar 5.2. Loop dua lapis

Praktikum Pengantar Organisasi Komputer – pww

29

Page 31: Modul Praktikum Organisasi Komputer

Bab VI : Memprogram dengan Turbo Assembler

BAB VI

PEMROGRAMAN DENGAN TURBO ASSEMBLER

Pada conoth-contoh program terdahulu penulisan program terbatas pada

program DEBUG. Ada beberapa keterbatasan pada DEBUG yang hanya mampu

menuliskan program terbatas pada perintah-perintah tertentu, sedangan perintah

yang lain tidak dapat dilakukan dalam DEBUG. Perintah yang tidak dapat dilakuan

misalnya interrupt untuk mencetak string atau pembuatan label dengan non

bilangan.

6.1. Program COM dan program EXE

Pada pembuatan program dengan DEBUG hanya dapat dilakukan untuk

membuat program COM tetapi tidak dapat digunakan untuk membuat program

EXE. Jika diinginkan membuat program EXE fasilitas yang dapat digunakan adalah

membuat program dengan TURBO ASSEMBLER.

Berikut ini perbedaan antara program yang ber-ekstensi COM dan program

ber-ekstensi EXE.

Tabel 6.1. Perbedaan program COMN dan EXE

Program COM Program EXE1 Ukuran file maksimal dari 64

KB (1 segment)

Ukuran file dapat lebih dari 64 KB

2 Dapat dibuat dengan DEBUG,

TURBO ASSEMBLER

Tidak dapat dibuat dengan

program DEBUG3 CS, DS, SS dan ES menempati

segmen yang sama

CS, DS, SS dan ES dapat

menempati segmen yang berbeda4 Eksekusi lebih cepat Eksekusi lebih lambat

6.2. Memprogram dengan Turbo Assembler

Program Turbo assembler dilengkapi dengan dua perangkat, yaitu :

COMPILER dan LINKER. Pengetikan kode sumber dapat digunakan editor teks

sembarang kemudian disimpan dengan ekstensi ASM. Proses pertama lakukan

kompilasi dengan TASM.EXE yang akan menghasikan OBJECT code. Selanjutnya

dilakukan linking dengan TLINK.EXE menghasilkan program COM atau EXE.

Praktikum Pengantar Organisasi Komputer – pww

30

Page 32: Modul Praktikum Organisasi Komputer

Bab VI : Memprogram dengan Turbo Assembler

Berikut sekema pembuatan program dengan turbo assembler :

TASM file.ASM TLINK/t file.OBJ

Gambar 6.1. Proses edit, kompilasi dan linking dengan turbo assembler

Berikut ini struktur program COM dengan perangkat lunak Turbo Assembler.

TITLE namaProgram[namaSegment] SEGMENT

ASSUME CS:[namaSegment] ORG 100H

[label_1] : JMP label_2 ;disini daerah definisi data

;……….[Label_2] :

;disini dituliskan main program ;…………………… ;……………………

MOV AX 4C00H INT 21H ; program terminate

[namaSegment] ENDS END [label_1]

Catatan Penting :

1. Dalam turbo assembler tanda TITIK KOMA menunjukkan bahwa

pernyataan setelah tanda TTIK KOMA dianggap sebagai KOMENTAR,

yang tidak akan diproses dalam kompilasi.

2. NamaSegment, label_1 dan label_2 adalah nama-nama yang dapat

ditentukan sendiri oleh programmer dengan ketentuan tidak boleh ada spasi

atau karakter khusus yang tidak dapat digunakan untuk nama label. Dapat

digunakan garis bawah untuk nama label.

Praktikum Pengantar Organisasi Komputer – pww

31

Editor teks menghasilkan :File.ASM

File.OBJ

File.COM

Page 33: Modul Praktikum Organisasi Komputer

Bab VI : Memprogram dengan Turbo Assembler

3. Untuk mengakhiri program dapat digunakan INT 20H, atau INT 21H servis

4CH. Umumnya pada pengetikan turbo assembler digunakan yang terakhir

meskipun tidak diharuskan.

Contoh 1.

Program untuk mencetak huruf ‘A’ yang telah dibuat dengan turbo assembler

sebagai berikut. Setelah program diketik disimpan dengan ,misalnya cetak.ASM.

Selanjutnya untuk mengkompile dilakukan dengan :

C> TASM cetak.asm <enter>

Untuk melakukan link menghasilkan program COM dilakukan dengan cara :

C>TLINK/t cetak.obj <enter>

Berikut kode programnya :TITLE ProgramCetak_ACode_seg SEGMENT

ASSUME CS:Code_seg ORG 100H

Start: JMP mulai Data equ 41HMulai: MOV AH,02

MOV DL,Data INT 21H ; cetak karakter

MOV AX 4C00H INT 21H Code_seg ENDS

END start

Hal lain yang harus diperhatikan adalah mengenai system bilangan default

yang digunakan adalah system bilangan DESIMAL. Jika diinginkan bilangan

HEKSA DESIMAL maka harus eksplisit ditambahkan H diakhir bilangan. Hal ini

berbeda dengan DEBUG dimana default system bilangannya adalah HEKSA

DESIMAL.

6.3. Masalah Definisi Data

Ada beberapa definisi data yang dapat digunakan dalam turbo assembler,

antara lain :

Praktikum Pengantar Organisasi Komputer – pww

32

Page 34: Modul Praktikum Organisasi Komputer

Bab VI : Memprogram dengan Turbo Assembler

Untuk variable :

db : artinya Define Byte , yaitu mendefinisikan data dengan satuan byte

Contoh : data db ‘JOGJA’

N db 15

AKIR db ‘$’

Hasil db ? ; data 1 byte nilainya ditentukan kemudian

dw : artinya Define Worde , yaitu mendefinisikan data dengan satuan word (2

byte)

Contoh : N dw ?

Mendefinisikan variable N ukuran 1 word nilainya ditentukan

kemudian

Untuk konstanta:

equ: artinya mendefinisikan label berisi data constants

Contoh : akir equ ‘$’

Layar equ 25*80

6.4 Masalah Penggunaan label

Label berguna untuk nama yang dapat berupa nama segmen, nama awal

program, nama tempat tujuan LOOP atau JMP, nama data, nama macro atau nama

prosedur. Berikut ini contoh program assembly menggunakan LOOP untuk

mencetak huruf A sampai Z.

Contoh 2

Program untuk mencetak huruf ‘A’..s/d ‘Z’ dibuat dengan turbo assembler. Program

berikut TIDAK MENGGUNAKAN DEFINISI DATA sehingga tidak perlu ada

lompatan pada awal program.

Praktikum Pengantar Organisasi Komputer – pww

33

Page 35: Modul Praktikum Organisasi Komputer

Bab VI : Memprogram dengan Turbo Assembler

TITLE ProgramCetak_A_sampai_ZCode_seg SEGMENT

ASSUME CS:Code_seg ORG 100H

Start: MOV CX,001AH ; cacah ulangan

MOV AH,02MOV DL,41H

Ulang: INT 21H ; cetak karakterINC DLLOOP Ulang

MOV AX 4C00H INT 21H Code_seg ENDS

END start

Praktikum Pengantar Organisasi Komputer – pww

34

Page 36: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

BAB VII

OUTPUT LAYAR

7.1. Interupt DOS untuk Output Layar

Interupt DOS untuk layanan layar terhimpun dalam INT 21H yang merupakan

interupt untuk layar, keyboard dan file.

Cetak Karakter :

INT 21H servis 02H

Syarat register untuk cetak karakter adalah :

AH 02H

DL kode ASCII karakter yang akan dicetak

Contoh program telah banyak dilakukan pada bab terdahulu dalam DEBUG

maupun Turbo Asembler.

Cetak String :

INT 21H servis 09H

Syarat register untuk cetak karakter adalah :

AH 09H

DX offset data string yang akan dicetak

Contoh : Program mencetak

UNIVERSITAS SEBELAS MARET

Jl. Ir. SUTAMI No. 36A

SURAKARTA

Programnya :TITLE cetakUNScode_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai data1 db 'UNIVERSITAS SEBELAS MARET’,10,13,’$' data2 db 'Jl. Ir. SUTAMI No. 36A’,10,13,’$' data3 db 'SURAKARTA$'mulai: MOV AH,09 MOV DX,OFFSET data1

Praktikum Pengantar Organisasi Komputer – pww

34

Page 37: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

INT 21H ; tulis teks pertama MOV DX,OFFSET data2 INT 21H ; tulis teks kedua MOV DX,OFFSET data3 INT 21H ; tulis teks ketiga MOV AX,4C00H INT 21Hcode_seg ENDs END start

7.2. Layanan INT BIOS Untuk Ases Layar (INT 10H)

Untuk mengases layar seperti mengatur kursor, mencetak huruf atau string,

menghapus layar dan lain-lain tersedia interupt BIOS yaitu INT 10H dengan 16 servis

yang secara rinci seperti berikut :

INT 10H

Servis 00H :menentukan modus video

Servis 01H :set ukuran kursor

Servis 02H :menentukan posisi kursor

Servis 03H :membaca posisi kursor

Servis 04H :membaca posisi lightpen

Servis 05H :menentukan halaman layar CRT yang digunakan

Servis 06H :menggulung layar ke atas (scroll up)

Servis 07H :menggulung layar ke bawah (scroll down)

Servis 08H :Membaca data karakter dan atributnya diposisi kursor

Servis 09H :Mencatak karakter dengan atributnya

Servis 0AH :Mencetak karakter tanpa atribut

Servis 0BH :Menentukan pallete warna

Servis 0CH :Menulis titik pixel

Servis 0DH :Memabaca data diposisi titik pixel

Servis 0EH : Menulis karakter secara mesin tulis

Servis 0FH : membaca status modes video yang digunakan

Menentukan posisi kursor (INT 10H servis 02)

Syarat register :

AH 02

Praktikum Pengantar Organisasi Komputer – pww

35

Page 38: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

BH nomor halaman layar

DH posisi baris

DL posisi kolom

Untuk layar CGA mode teks layar dipandang sebagai matriks karakter 25 baris 80

kolom dengan posisi kiri atas 0,0 dan kanan bawah 24,79

(0,0) 80 kolom

25 baris

Gambar 7.1. Koordinat layar

Pada koordinat seperti dalam gambar tersebut kita dapat meletakkan posisi

kursor.

Contoh program berikut menaruh kursor pada tengah layar (kira-kira baris 11 kolom

38) menuliskan tulisan ‘U N S’

;BIOS1.ASM;Program atur posisi kursorcode_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai data db 'U N S$'mulai: ;atur kursor MOV AH,02 MOV BH,00 MOV DH,11 MOV DL,38 INT 10H ;atur kursor

MOV AH,09 MOV DX,OFFSET data INT 21H ; tulis teks udah : MOV AX,4C00H INT 21Hcode_seg ENDs END start

Praktikum Pengantar Organisasi Komputer – pww

36

(24,79)

Page 39: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

Apabila program tersebut dijalankan maka akan tertulis “U N S” pada tengah layar

(baris 11, kolom 38). Akan tetapi bisa jadi pada posisi tersebut saat itu sedang ada

tulisannya. Untuk menjamin tampilan yang baik ada baiknya layar dibersihkan

terlebih dahulu.

Menggulung Layar

Untuk membersihkan layar dapat digunakan salah satu interupt gulung layar, yaitu :

INT 10H servis 06H : gulung layar ke atas

INT 10H servis 07H : gulung layar ke bawah

Syarat register adalah :

AH nomor servis 06 atau 07

AL jumlah baris yang digulung (0=semua baris=bersihkan)

BH warna layar yang muncul

CH baris kiri atas

CL kolom kiri atas

DH baris kanan bawah

DL kolom kanan bawah

Jika interupt dipanggil maka wilayah jendela yang dibatasi dari kiri atas sampai kanan

bawah akan digulung sebanyak AL, atau kalau AL =0 akan dibersihkan semua.

Kiri atas

Kanan bawah

Gambar 7.2. Wilayah layar yang digulung

Program berikut modifikasi dari program BIOS1.ASM dengan ditambahi hapus layar

terlebih dahulu dengan atribut warna hitam tulisan putih sebelum menaruh kursor dan

menulis di tengah layar.

Praktikum Pengantar Organisasi Komputer – pww

37

window

Page 40: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

;BIOS2.ASM

;Program gulung layarcode_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai data db 'U N S$'mulai:

;persiapan hapus layar MOV AH,06 MOV AL,00 MOV BH,07 MOV DH,00 MOV DL,00 MOV CH,24 MOV CL,79 INT 10H ; hapus layar

;atur kursor MOV AH,02 MOV BH,00 MOV DH,11 MOV DL,38 INT 10H ;atur kursor

MOV AH,09 MOV DX,OFFSET data INT 21H ; tulis teks MOV AX,4C00H INT 21Hcode_seg ENDs END start

Mencetak karakter dan string

Dalam assembly autput layar dapat ditempuh dengan dua cara, yaitu dengan

menggunakan interupt dan dengan menulis ke buffer layar.

A. Menggunakan interupt

a. Cetak karakter

INT 10H servis 09 : cetak karakter dengan atribut

Praktikum Pengantar Organisasi Komputer – pww

38

Page 41: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

Syarat register :

AH 09

AL kode ASCII karakter yang akan dicetak

BH nomor halaman layar

BL atribut layar (akan dijelaskan kemudian)

CX cacah karakter yang akan dicetak

INT 10H servis 0A : cetak karakter tanpa atribut

Syarat register :

AH 0AH

AL kode ASCII karakter yang akan dicetak

BH nomor halaman layar

CX cacah karakter yang akan dicetak

b. Cetak string

INT 21H servis 09

AH 09

DX OFFSET label data string dicetak

Contoh : Cetak karakter dengan atribut

Misalkan akan dicetak huruf A dengan warna tulisan merah dan warna

latar belakang biru, berikut adalah potongan programnya.MOV AH,09MOV BH,00MOV BL,14H ;atribut(tulisan merah background biru)MOV AL,41H ; kode ASCII karakter AMOV CX,0001 ; huruf dicetak 1INT 10H

Atribut karakter :

Atribut karakter disimpan oleh data satu byte, yang dibagi 2 yaitu 4 bit bawah

untuk foreground (latar depan) dan 4 bit atas untuk background (latar belakang).

Susunan dapat disajikan sebagai berikut :

Praktikum Pengantar Organisasi Komputer – pww

39

Page 42: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

4 bit background 4 bit foreground

7 6 5 4 3 2 1 0

Blue Blue Green Green

Red Red Blink intensitas (1=terang)

Gambar 7.3. Atribut karakter

Tulisan merah, latar belakang biru diwakili oleh bit-bit :

0 0 0 1 0 1 0 0

yang dalam bentuk hexa desimal adalah : 14H

jika diingnkan tulisan merah terang latar belakang biru blink (berkedip) maka susunan

bit adalah :

1 0 0 1 1 1 0 0

dalam Hexa adalah : 9BH

Contoh-contoh program Cetak String :

;PROGRAM CETAK STRING DIAKHIRI $;DENGAN INT 21H servis 09;Cetak1.ASMCOde_seg segment Assume CS:code_seg

org 100hstart : jmp mulai data db 'UNS OYE$'mulai : MOV AH,09 MOV DX,OFFSET data INT 21H MOV AX,4C00H INT 21Hcode_seg Ends End start

Praktikum Pengantar Organisasi Komputer – pww

40

Page 43: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

Hasil:

Gambar 7.4. Hasil Program Cetak1.ASM

;PROGRAM CETAK STRING PERHURUF ;DENGAN INT 21H servis 02;Cetak2.ASMCOde_seg segment Assume CS:code_seg org 100hstart : jmp mulai data db 'HADIAH SEBESAR $ 1000.000,00 ',0mulai : MOV AH,02 MOV BX,0000 cet: MOV DL,data[BX] CMP DL,0 JE selesai INT 21H INC BX JMP cetselesai: MOV AX,4C00H INT 21Hcode_seg Ends End start

Hasil :

Gambar 7.5. Hasil Program Cetak2.ASM

Praktikum Pengantar Organisasi Komputer – pww

41

Page 44: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

7.3. Menulis langsung ke buffer layar

Ditempuh dengan memindah byte-byte penyusun string ke alamat buffer layar,

yaitu alamat 0B800H. Struktur memory buffer layar dapat diilustrasikan dalam

gambar berikut :

Peta memory layar

B800:0000B800:0001B800:0002B800:0004B800:0005B800:0006B800:0007B800:0008B800:0009...............

Gambar 7.6. Buffer Layar CGA

Aturan buffer layar dapat dijelaskan bahwa setiap byte pada addres :

B800:0000 : untuk kodeASCII pada posisi baris 0,kolom 0 di layar

B800:0001 : untuk atribut karakter pada posisi baris 0,kolom 0 di layar

B800:0002 : untuk kodeASCII pada posisi baris 0,kolom 1 di layar

B800:0003 : untuk atribut karakter pada posisi baris 0,kolom 1 di layar

............

dan seterusnya, sehingga untuk satu halaman layar diperlukan buffer sebesar

2*80*25=4000 byte. Dan apabila layar dibagai menjadi 4 halaman layar maka besar

memory untuk buffer layar adalah 4 x 4000 = 16.000 byte

Contoh :

Program tulis ke buffer layar

;PROGRAM CETAK STRING DGN TULIS KE BUFFER LAYAR;Cetak3.ASM

Praktikum Pengantar Organisasi Komputer – pww

42

41H

42H

....

AB

Page 45: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

COde_seg segment Assume CS:code_seg org 100hstart : jmp mulai data db 'HADIAH SEBESAR $ 1000.000,00 ',0mulai : MOV BX,0000 MOV AX,b800H MOV DS,AX MOV DI,0000 cet: MOV DL,data[BX] CMP DL,0 JE selesai MOV BYTE PTR [DI],DL INC DI INC DI INC BX JMP cetselesai: MOV AX,4C00H INT 21Hcode_seg Ends End start

Gambar 7.7. Hasil Program Cetak3.ASM

;CETAK STRING DENGAN MEMINDAH KARAKTER;KE BUFFER LAYAR DENGAN MOVSB;Cetak4.ASMCode_seg segment Assume CS:code_seg org 100hstart : jmp mulai data db 'HALO INI CETAK KEEMPAT ',0mulai : MOV AX,0B800H ; awal layar MOV ES,AX MOV DI,0000H MOV SI,OFFSET data ; awal data CLD

Praktikum Pengantar Organisasi Komputer – pww

43

Page 46: Modul Praktikum Organisasi Komputer

Bab VII : Output Layar

cet: CMP BYTE PTR [SI+00H],0 JE selesai MOVSB INC DI JMP cetselesai: MOV AX,4C00H INT 21Hcode_seg Ends End start

Praktikum Pengantar Organisasi Komputer – pww

44

Page 47: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

BAB VIII

INPUT KEYBOARD

Dalam assembly pemasukan data dari keyboard tidak seperti dalam high

level language (BASIC, PASCAL, C) yang dapat menerima berbagai macam tipe

data dari keyboard seperti integer, real, char dan string. Dalam assembly hanya

memiliki dua macam data input keyboard, yaitu :

- Input 1 karakter

- Input satu string (rangkaian karakter)

Beberapa interupt yang dapat digunakan untuk masukan keybord tersebut adalah :

8.1. Input karakter :

INT 21H servis 01 : input 1 karakter dari keyboard dengan ECHO (apa yang

diinputkan ditampilkan di layar)

Syarat: AH 01

Hasil : kode ASCII karakter yang diinput disimpan di register AL

INT 21H servis 07 : input 1 karakter dari keyboard tanpa ECHO (apa yang

diinputkan tidak ditampilkan di layar) tanpa mengecek ctrl-

break

Syarat : AH 07

Hasil : kode ASCII karakter yang diinput disimpan di register AL

INT 21H servis 08 : input 1 karakter dari keyboard tanpa ECHO (apa yang

diinputkan tidak ditampilkan di layar) dengan mengecek

ctrl-break (dapat dibreak dengan Ctrl-C)

Syarat : AH 08

Hasil : kode ASCII karakter yang diinput disimpan di register AL

INT 21H servis 06 : input 1 karakter dari keyboard tanpa menunggu

Syarat : AH 06 DL 0FFH

Praktikum Pengantar Organisasi Komputer – pww

45

Page 48: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

Hasil : kode ASCII karakter yang diinput disimpan di register AL

Input string (rangkaian karakter) :

INT 21H servis 0AH : membaca satu string dari keyboard sampai diketik ENTER

Syarat : AH 0AH

DX OFFSET label penampung (misal tampung)

Hasil : string tersimpan dalam label tampung

Contoh-Contoh Program Input Karakter :

;BACA1.ASM;Membaca 1 karakter dari keyboard;dengan INT 21H servis : 01code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai data db 'MASUKKAN HURUF BESAR (ESC=selesai) : $'mulai: MOV AH,09 MOV DX,OFFSET data INT 21H

;ambil karakterulang: MOV AH,01 INT 21H CMP AL,27 JE udah

MOV DL,AL ADD DL,20H ; ubah jadi huruf kecil MOV AH,02 INT 21H JMP ulangudah : MOV AX,4C00H INT 21Hcode_seg ENDs END start

Praktikum Pengantar Organisasi Komputer – pww

46

Page 49: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

Gambar 8.1. Hasil Pogram Baca1.ASM

;BACA2.ASM;Membaca 1 karakter dari keyboard;dengan INT 21H servis : 01code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai teks1 db 'MASUKKAN BILANGAN 1 ANGKA : $' teks2 db 10,13,'HELLO UNS $' teks3 db 10,13,'BUKAN BILANGAN, ULANG ! ',10,13,'$'mulai: MOV AH,09 MOV DX,OFFSET teks1 INT 21H

MOV AH,01 INT 21H CMP AL,30H JLE salah CMP AL,3AH JGE salah XOR CX,CX MOV CL,AL SUB CL,30H

MOV AH,09 MOV DX,OFFSET teks2 lagi : INT 21H LOOP lagi JMP selesai salah: MOV AH,09 MOV DX,OFFSET teks3 INT 21H JMP mulaiselesai: MOV AX,4C00H

Praktikum Pengantar Organisasi Komputer – pww

47

Page 50: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

INT 21Hcode_seg ENDs END start

Hasil program :

Gambar 8.2. Hasil Program Baca2.ASM

;BACA3.ASM;Membaca 1 karakter dari keyboard :TANPA Echo;dengan INT 21H servis : 08;untuk membuat pass word yang dapat dibreakcode_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai teks1 db 'MASUKKAN PASSWORD : $' teks2 db 10,13,'PASSWORD SALAH , ULANG !!',10,13,'$' teks3 db 10,13,'SELAMAT ANDA BOLEH MASUK ! ',10,13,'$' tampung db 'XXXXXXXXXXXX' kunci db 'PAKWW'mulai: MOV AH,09 MOV DX,OFFSET teks1 INT 21H XOR BX,BX

baca: MOV AH,08 ; baca kar dg cek ctrl brk INT 21H CMP AL,0DH JE cek MOV tampung[BX],AL MOV AH,02 MOV DL,2AH INT 21H

Praktikum Pengantar Organisasi Komputer – pww

48

Page 51: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

INC BX JMP baca cek : MOV CX,0007 XOR BX,BX cc: MOV AL,kunci[BX] CMP AL,tampung[BX] JNE salah INC BX LOOP cc

MOV AH,09 ; password ok MOV DX,OFFSET teks3 INT 21H JMP selesai

salah: MOV AH,09 MOV DX,OFFSET teks2 INT 21H JMP mulai

selesai: MOV AX,4C00H INT 21Hcode_seg ENDs END start

;BACA4.ASM;Membaca 1 karakter dari keyboard;dengan INT 21H servis : 01;tak mengecek ctrl break

code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai teks1 db 'MASUKKAN PASSWORD : $' teks2 db 10,13,'PASSWORD SALAH , ULANG !!',10,13,'$' teks3 db 10,13,'SELAMAT ANDA BOLEH MASUK ! ',10,13,'$' tampung db 'XXXXXXXXXXXX' kunci db 'PAKWW'mulai: MOV AH,09 MOV DX,OFFSET teks1 INT 21H XOR BX,BX

Praktikum Pengantar Organisasi Komputer – pww

49

Page 52: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

baca: MOV AH,07 ; baca kar TANPA cek ctrl brk INT 21H CMP AL,0DH JE cek MOV tampung[BX],AL MOV AH,02 MOV DL,2AH INT 21H INC BX JMP baca cek : MOV CX,0007 XOR BX,BX cc: MOV AL,kunci[BX] CMP AL,tampung[BX] JNE salah INC BX LOOP cc

MOV AH,09 ; password ok MOV DX,OFFSET teks3 INT 21H JMP selesai

salah: MOV AH,09 MOV DX,OFFSET teks2 INT 21H JMP mulai

selesai: MOV AX,4C00H INT 21Hcode_seg ENDs END start

Gambar 8.3. Hasil Program Baca4.ASM

Praktikum Pengantar Organisasi Komputer – pww

50

Page 53: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

;BACA5.ASM;input keyBOAR TANPA MENUNGGU code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulaidata db 'KETIK SEMBARANG TOMBOL DIANTARA *',10,13 db 'APA YANG DIKETIK AKAN DITAMPILKAN SECARA CEPAT',10,13 db 'UNTUK MENGAKHIRI : TEKAN TOMBOL ESC$'

mulai: MOV AH,09 MOV DX,OFFSET data INT 21H MOV AH,01 INT 21H ; tekan sembarang

baca: MOV AH,02 MOV DL,2AH INT 21H ; cetak '*'

MOV AH,06 MOV DL,0FFH INT 21H ; baca tombol tanpa menunggu

CMP AL,27 ; apakah ESC dipencet JE selesai MOV AH,02 MOV DL,AL ; jika ada input INT 21H ; cetak kar yang diinput

JMP baca selesai: MOV AX,4C00H INT 21Hcode_seg ENDs END start

Praktikum Pengantar Organisasi Komputer – pww

51

Page 54: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

Gambar 8.4. Hasil program Baca5.asm

8.2. Membaca String dari Keyboard

Untuk membaca string dari keyboard digunakan INT 21H servis 0AH

Sebelum pembacaan dilakukan harus disiapkan dulu ruang memory untuk

menampung hasil pembacaan, misalnya nama variabelnya adalah tampung. Definisi

adalah sebagai berikut :

tampung db nn,?,nn dup(?) berisi jumlah karakter ter-input kan

cacah byte maksimal ter-input

Misalkan akan dibaca string dengan maksimal karakter 20 maka definisinya adalah :tampung 20,?,20 dup(?)

Yang dapat digambarkandalam memory sebagai berikut :

tampung akan berisi informasi tentang cacah karakter terinputkan

;baca6.asm;membaca stringcode_seg SEGMENT ASSUME CS:code_seg ORG 100H

Praktikum Pengantar Organisasi Komputer – pww

52

20 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Page 55: Modul Praktikum Organisasi Komputer

Bab VIII :Input Keyboard

start: JMP mulai data db 'MASUKKAN STRING (MAX 20 karakter, AKHIRI DENGAN ENTER) : $' tampung db 20,?,20 dup(?) hasil db 10,13,'YANG ANDA KETIK ADALAH : $'

mulai: MOV AH,09 MOV DX,OFFSET data INT 21H

;ambil string MOV AH,0AH MOV DX, OFFSET tampung INT 21H

;cetak hasil PUSH DX ; alamat tampung disimpan MOV AH,09 MOV DX,OFFSET hasil INT 21H

POP DX ; ambil alamat tampung INC DX MOV BX,DX MOV BYTE PTR CL,[BX] ; ambil cacah karakter ter-input XOR CH,CH ; sebagai counter loop

; cetak masukan string per karakter INC BX MOV AH,02ulang: MOV DL,[BX] INT 21H INC BX LOOP ulang MOV AX,4C00H INT 21Hcode_seg ENDs END start

Gambar 8.5. Hasil Program Baca6.ASM

Praktikum Pengantar Organisasi Komputer – pww

53

Page 56: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

BAB IX

OPERASI ARITMATIKA

Operasi aritmatika dalam assembly ada 4 macam :

1. Operasi penambahan (ADD dan INC):

Syntax : ADD [operand1],[operand2]

Operand1 : register, nama variabel, lokasi memory

Operand2: register,nama variabel, lokasi memory, data atau ekspresi

Contoh: ADD BX,AX ; isi BX ditambahi dengan isi AX

ADD AH,AL ;isi AH ditambahi dengan AL

ADD Nilai,4*5 ;isi variabel Nilai ditambahi hasil 4*5

Untuk penambahan dengan 1, instruksi juga dapat dipakai INC, dengan sintax:

INC [register/variabel/memory]

Contoh: INC DX ; isi DX dinaikkan 1

Contoh program berikut memperagakan perintah ADD (pada baris cetak tebal)

code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai N dw 0mulai: MOV AX,0001 ADD N,AX ;isi var N ditambahi 1 ADD N,40H+1 ;isi var N menjadi 42H XOR DX,DX ;kosongkan DX ADD DX,N ;tambahi DX dengan isinya N=42 XOR DH,DH ;isi DL adalah 42H MOV AH,02 INT 21H ;cetak huruf B

MOV AX,4C00H INT 21Hcode_seg ENDs END start

Hasil program adalah mencetak karakter : B

Praktikum Pengantar Organisasi Komputer – pww

54

Page 57: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

2. Operasi pengurangan (SUB dan DEC)

Syntax : SUB [operand1],[operand2]

Contoh: SUB BX,102AH ; isi BX dikurangi dengan 102AH

SUB AH,AL ;isi AH dikurangi dengan AL

SUB DH,30H ;isi DH dikurangi 30H

Untuk pengurangan dengan 1, instruksi juga dapat dipakai DEC, dengan sintax:

DEC [register/variabel/memory]

Contoh: DEC DX ; isi DX dikurangi 1

3. Operasi perkalian (MUL)

Tidak seperti operasi ADD dan operasi SUB yang merupakan instruksi dua operand,

untuk operasi perkalian dengan instruksi MUL adalah instruksi satu operand, yaitu :

Syntax : MUL [reg]

Dimana reg dapat berupa register 8 bit atau 16 bit , sedangkan perkalian akan

dilakukan antara register yang dimaksud dalam reg dengan AL (jika reg adalah 8bit)

atau dengan AX(jika reg 16 bit)

Perkalian 8 bit:

Contoh : MUL DL

Hasil :isi register DL akan dikalikan dengan isi register AL dan hasil perkalian

akan disimpan dalam register AX

Jadi misalkan isi DL=4 dan isi AL=8

Perintah MUL DL

Akan menyebabkan isi register AX =4*8=32

Perkalian 16 bit:

Contoh : MUL BX

Hasil :isi register BX akan dikalikan dengan isi register AL dan hasil perkalian

akan disimpan dalam register AX jika nilainya <FFFFH. Apabila

Praktikum Pengantar Organisasi Komputer – pww

55

Page 58: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

nilainya lebih dari FFFFH hasil akan tersimpan dalam dua register,

yaitu : DX:AX

Misalkan isi BX = FFFFh , isi AX=0002h

Perintah MUL BX

Akan menghasilkan : 1FFFEh, ini bernilai lebih dari FFFFh, maka

hasilnya tersimpan dalam DX:AX =0001FFFEh, sehingga :

DX=0001h dan AX=FFFEh.

4. Operasi pembagian (DIV)

Seperti dalam operasi MUL, operasi DIV juga operasi dengan satu operand :

Syntax : DIV [reg]

Dengan nilai reg dapat berupa register 8bit atau register 16 bit.

Pembagian 8 bit:

Contoh : DIV DL

Prosesor akan melakukan pembagian AX dibagi dengan DL, sebagai berikut :

AH=sisa AL=hasil

DL AX

Pada awalnya AX berisi data yang akan dibagi, apabila operasi DIV telah

dilakukan maka AX tidak lagi berisi data semula tetapi berisi informasi tentang hasil

bagi dan sisa hasil bagi.

Pembagian 16 bit:

Contoh : DIV BX

Prosesor akan melakukan pembagian DX:AX dibagi dengan BX, sebagai berikut :

DX=sisa AX=hasil

BX DX:AX

Pada awalnya DX:AX berisi data yang akan dibagi, apabila operasi DIV telah

dilakukan maka DX:AX tidak lagi berisi data semula tetapi berisi informasi tentang

hasil bagi dan sisa hasil bagi.

Praktikum Pengantar Organisasi Komputer – pww

56

Page 59: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

Contoh pembagian 8 bit :

Contoh program DEBUG berikut menampilkan urutan pengisian AX

dengan data 20h (=32 desimal), mengisi register DL dengan 06, melaksanakan

pembagian. Setelah instruksi DIV DL dilakukan isi AX adalah : 0205 , yang berarti

AH=02 =sisa hasil bagi, dan AL=05=hasil bagi (32/6).

Program dijalankan dengan t (trace), instruksi satu-persatu dan isi register

ditampilkan :

Gambar 8.1. Pembagian 8 bit

Contoh lain untuk proses pembagian adalah seperti program berikut. ;ARIT1.ASM;CONTOH PEMBAGIAN 8 BIT;code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai HASIL db 0

SISA db 0

Praktikum Pengantar Organisasi Komputer – pww

57

Page 60: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

TEKS0 DB 'PEMBAGIAN 8 BIT : 28 DIBAGI 5 $' TEKS1 DB 10,13,'HASIL BAGI : $' TEKS2 DB 10,13,'SISA : $'mulai: MOV AH,09 MOV DX,OFFSET TEKS0 INT 21H ;CETAK KETERANGAN

MOV AX,28 ;YANG DIBAGI TARUH DI AX MOV DL,5 ;PEMBAGI TARUH DI DL DIV DL ; BAGI 29 DENGAN 5 MOV HASIL,AL ; AMANKAN HASIL MOV SISA ,AH ; AMANKAN SISA

;CETAK HASIL DAN SISA MOV AH,09 MOV DX,OFFSET TEKS1 INT 21H ; CETAK KETERANGAN HASIL

MOV AH,02 MOV DL,HASIL ADD DL,30H INT 21H ; CETAK HASIL

MOV AH,09 MOV DX,OFFSET TEKS2 INT 21H ; CETAK KETERANGAN SISA

MOV AH,02 MOV DL,SISA ADD DL,30H INT 21H ; CETAK HASIL

MOV AX,4C00H INT 21Hcode_seg ENDs END startHasil program adalah seperti tampilan berikut :

Gambar 9.2. Operasi DIV

Praktikum Pengantar Organisasi Komputer – pww

58

Page 61: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

Aplikasi Operasi Aritmetika Untuk Mencetak Bilangan :

Salah satu aplikasi dari instruksi DIV misalnya adalah untuk mencetak

bilangan. Adalah satu masalah tersendiri dalam assembly untuk mencetak bilangan

ke layar. Padahal kadangkala diperlukan untuk mencetak bilangan, misalnya akan

diketahui free memory dari RAM kita, berarti setelah interupt untuk itu dijalankan,

hasilnya berupa bilangan harus dicetak ke layar. Kenapa mencetak bilangan tidak

semudah mencetak karakter ? jawabnya, karena fasilitas yang dimiliki adalah

interupt untuk mencetak karakter atau mencetak string. Dengan demikian apabila

dimiliki isi register AX, misalnya sama dengan 453 (desimal) maka untuk mencetak

bilangan 453 (desimal) tersebut ke layar berarti harus di’siasati’ bagaimana dapat

dicetak berturut-turut karakter :’4’,’5’ dan ‘3’.

Berikut ini adalah programnya:

;cetakbil.asm;mencetak bilangan per karakter penyusun bilangan tsb;code_seg SEGMENT ASSUME CS:code_seg ORG 100Hstart: JMP mulai Nilai dw 453 data db 'ISI variabel Nilai adalah :$' mulai: MOV AH,09 MOV DX,OFFSET data INT 21H

MOV AX,Nilai ;pindahkan isi var Nilai ke AX XOR CX,CX ;CX=0000ulang: MOV BH,10 DIV BH ;bagi AX dengan BH PUSH AX ;simpan AX di STACK INC CX XOR AH,AH ;AH=00 CMP AL,00 JNE ulang ;AL tidak nol ke ulang lagi: POP DX MOV DL,DH ADD DL,30H MOV AH,02 INT 21H ;cetak karakter angka LOOP lagi

Praktikum Pengantar Organisasi Komputer – pww

59

Page 62: Modul Praktikum Organisasi Komputer

Bab VIII : Operasi Aritmetika

MOV AX,4C00H INT 21Hcode_seg ENDs END start

Hasil eksekusi program adalah sebagai berikut :

Gambar 9.3. Hasil program cetak bilangan

Praktikum Pengantar Organisasi Komputer – pww

60