BAB II LANDASAN TEORI LANDASAN TEORI
2.1
Bahasa-Bahasa Komputer
Pemakaian Komputer dewasa ini telah sedemikian pesatnya sejalan dengan kemajuan teknologi Komputer itu sendiri. Berbagai bidang seperti Industri, Perdagangan, Pendidikan, Pemerintahan, Ilmu Pengetahun Eksakta maupun Sosial dan Budaya dan Lain-Lain memanfaatkan alat yang canggih itu. Pengguna sistem komputer modern bisa dibagi dalam dua kategori, yaitu : 1.
Pengguna yang tidak pernah mengembangkan programnya dan hanya menggunakan program yang dikembangkan oleh pengguna lainnya.
2.
Pengguna yang sangat peduli akan pengembangan program dan berusaha mengembangkannya sendiri. Kategori pengguna ini biasanya disebut dengan ahli komputer (programmer). Sejak pertama komputer diciptakan, Komputer membutuhkan sejumlah perintah untuk melakukan tugas tertentu. Perintahperintah ini dikenal sebagai bahasa pemograman. Kategori pengguna yang kedua sangat beruntung karena saat ini telah banyak beredar bahasa pemograman tingkat tinggi (high level) yang merupakan bahasa pemograman dengan penggunaan bahasa yang mendekati bahasa manusia.
5
Dibandingkan dengan programmer pada awal kemunculan komputer dimana syarat seorang programmer haruslah menguasai bahasa mesin baru bisa menghasilkan sebuah program baru. Bahasa mesin merupakan bahasa tingkat rendah (low level) dalam kategori bahasa komputer dimana bahasa ini merupakan bahasa yang langsung dimengerti oleh komputer sendiri tanpa perlu adanya proses penerjemahan. Untuk bisa dimengerti oleh komputer maka suatu bahasa tingkat tinggi harus diterjemahkan dalam bentuk bahasa mesin. Untuk menerjemahkan suatu bentuk bahasa pemrograman diperlukan sebuah alat penerjemah yang umum disebut teknik kompilasi (compiler). Kompilasi berfungsi untuk mengubah suatu kode sumber menjadi kode target dimana kode sumber tersebut bisa berupa bahasa tingkat tinggi dan kode target bisa berupa bahasa mesin. Oleh sebab itu kompilasi merupakan jembatan penghubung antara perangkat keras dengan perangkat lunak.
2.1.1
Bahasa Tingkat Tinggi Ciri – ciri bahasa tingkat tinggi adalah sebagai berikut :
1. Perintahnya mirip dengan bahasa manusia, seperti penggunaan bahasa Inggris. 2. Mudah dimengerti. 3. Mempunyai kemampuan yang terbatas (bila tidak dibantu dengan bahasa tingkat rendah). Beberapa contoh bahasa tingkat tinggi adalah : BASIC (Beginner’s All – purpose Symbolic Interchange Code).
6
COBOL (Common Bussiness Oriented Language). PASCAL (Untuk mengenang jasa Blaise Pascal).
2.1.2
Bahasa Tingkat Menengah
Ciri khas dari bahasa tingkat menengah adalah kecepatan mengakses dan kemampuan yang cukup diandalkan. Keistimewaan lainnya adalah perintah yang digunakan hampir sama dengan bahasa manusia. Contoh bahasa tingkat menengah adalah bahasa C.
2.1.3
Bahasa Tingkat Rendah
Bahasa tingkat rendah cukup sulit dipelajari karena perintahnya tidak sama dengan bahasa manusia. Keistimewaan bahasa tingkat rendah adalah kecepatannya yang sangat diandalkan. Contoh dari bahasa tingkat rendah adalah bahasa mesin dan bahasa Assembler (rakitan). Pada bahasa Assembler akan dijumpai beberapa program yang cukup panjang dan berbelit – belit. Hal ini tidak aneh karena pada bahasa Assembler kita harus memerintahkan satu per satu langkah dasar yang diambil. Sebagai contoh, akan diambil sebuah rutin menghapus layar monitor. Pada bahasa tingkat tinggi seperti bahasa BASIC cukup diberikan perintah CLS maka otomatis semua tulisan dilayar akan terhapus dan bersih kembali. Lain halnya dengan bahasa Assembler dimana
7
untuk melaksanakan rutin menghapus layar saja memerlukan 10 perintah dasar seperti dapat dilihat pada gambar 2.1 berikut ini : Mov ah,06h Xor cx,cx Mov dh,24 Mov dl,79 Mov al,00 Mov bh,07h Int 10h Mov ah,2 Mov bh,00 Int 10h Gambar 2.1 Contoh barisan perintah dalam bahasa Assembler
2.2
Jenis-Jenis Satuan Dalam Komputer
Gambar 2.2 Hubungan Bit, nibble, byte dan word Dalam merepresentasikan nilai satuan dalam komputer, dibuat beberapa jenis satuan sebagai berikut : 1.
Setiap 1 (satu) digit bilangan biner disebut satu bit.
8
2.
Setiap 4 (empat) digit bilangan biner disebut satu nibble.
3.
Setiap 8 (delapan) digit bilangan biner disebut satu byte.
4.
Setiap 16 (enam belas) digit bilangan biner disebut satu word.
5.
Setiap 32 (tiga puluh dua) digit bilangan biner disebut satu double word.
6.
Setiap 128 (seratus dua puluh delapan) digit bilangan biner disebut satu para.
7.
Setiap 256 (dua ratus lima puluh enam) byte atau 2048 (dua ribu empat puluh delapan) bit disebut satu page.
2.3
Perangkat Keras Mikroprosesor 8088/8086
MODE MAKS.
{ MODE } MIN.
MODE MIN.
GND
1
40
VCC
GND
1
40
VCC
AD14
2
39
AD15
AD14
2
39
AD15
AD13
3
38
A16/S3
AD13
3
38
A16/S3
AD12
4
37
A17/S4
AD12
4
37
A17/S4
AD11
5
36
A18/S5
AD11
5
36
A18/S5
AD10
6
35
A19/S6
AD10
6
35
A19/S6
AD9
7
34
BHE/S7
AD9
7
34
SSO
AD8
8
33
MN/MX
AD8
8
33
MN/MX
AD7
9
32
RD
AD7
9
31
RQ/GT0 (HOLD)
AD6
10
CPU 8086
CPU 8088
MODE { MAKS. }
(HIGH)
32
RD
31
HOLD
(HOLD)
AD6
10
AD5
11
30
RQ/GT1 (HLDA)
AD5
11
30
HLDA
(HLDA)
AD4
12
29
LOCK
(WR)
AD4
12
29
WR
(LOCK)
AD3
13
28
S2
(M/IO)
AD3
13
28
IO/M
(S2)
AD2
14
27
S1
(DT/R)
AD2
14
27
DT/R
(S1)
AD1
15
26
S0
(DEN)
AD1
15
26
DEN
(S0)
AD0
16
25
QS0
(ALE)
AD0
16
25
ALE
(QS0)
NMI
17
24
(INTA)
NMI
17
24
INTA
(QS1)
INTR
18
23
TEST
INTR
18
23
TEST
CLK
19
22
READY
CLK
19
22
READY
GND
20
21
RESET
GND
20
21
RESET
QS1
(a)
(b)
Gambar 2.3 (a) Pin-out mikroprosesor 8086; (b) pin-out mikroprosesor 8088
9
Gambar 2.3 di atas mengilustrasikan pin-out mikroprosesor 8086 dan 8088. Sebagaimana terlihat jika dibandingkan dengan teliti, secara virtual sebenarnya tidak ada perbedaan antara kedua mikroprosesor ini, keduanya terkemas dalam dual in-line package (DIP) 40-pin. (Soeparlan, Soepono. Pengantar Mikroprosesor 8086/8088, 80186, 80286, 80386 dan 80486 Jakarta, Gunadarma, 1995 – Bab 6)
8086 merupakan mikroprosesor 16-bit dengan bus data 16-bit dan 8088 merupakan mikroprosesor 16-bit dengan bus data 8-bit. Sebagaimana ditunjukkan oleh pin-out, 8086 memiliki koneksi pin AD0-AD15, dan 8088 memiliki koneksi pin AD0-AD7. Lebar bus data dengan demikian merupakan satu-satunya perbedaan utama antara kedua mikroprosesor ini. Tetapi, ada satu perbedaan kecil pada salah satu sinyal kontrol. 8086 mempunyai pin M/IO, dan 8088 mempunayi pin M/IO. Perbedaan perangkat keras lainnya terdapat pada pin 34 dari kedua chip: pada 8088, terdapat pin SSO, sementara pada 8086, pin tersebut merupakan BHE/S7. Karakteristik input mikroprosesor-mikroprosesor ini kompatibel dengan semua komponen logika standar yang tersedia saat ini. Tabel 2.1 berikut ini memberikan level tegangan input dan persyaratan arus input untuk semua pin input pada kedua mikroprosesor. Level arus input sangat kecil karena input merupakan koneksi gerbang MOSFET dan hanya merepresentasikan arus bocor.
10
Tabel 2.1 Karakteristik input mikroprosesor 8086 dan 8088 Level Logika
Tegangan
Arus
0
0,8 V maksimum
± 10 µA maksimum
1
2,0 V minimum
± 10 µA maksimum
Tabel
2.2
mengilustrasikan
karakteristik
semua
pin
output
pada
mikroprosesor-mikroprosesor ini. Level tegangan logika 1 pada 8088/8086 kompatibel dengan sebagian besar keluarga logika standar, tetapi logika 0 tidak. Rangkaian standar logika memiliki tegangan maksimum logika sebesar 0,4 V, dan 8088/8086 memiliki maksimum 0,45 V. Dengan demikian, ada perbedaan 0,05 V.
Tabel 2.2 Karakteristik output mikroprosesor 8086 dan 8088
2.4
Level Logika
Tegangan
Arus
0
0,45 V maksimum
2,0 µA maksimum
1
2,4 V minimum
-400 µA maksimum
Bahasa Assembler 8088/8086
Bahasa Assembler 8088 merupakan salah satu bagian dari bahasa komputer tingkat rendah, dimana nilai 8088 ditujukan kepada mikroprosesor dengan arsitektur dasar 8088 buat Intel Corp. Penulis memilih bahasa assembler 8086 sebagai bahasa tujuan dibanding bahasa assembler seperti 6800, Zilog, dikarenakan perangkat komputer 8086 merupakan perangkat keras yang paling banyak dipakai dewasa ini.
11
2.4.1
Pengertian Register
Dalam mempelajari bahasa Assembler, kita harus menghafalkan semua register dan mengerti kegunaannya masing – masing. Yang dimaksud dengan register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data dengan ketentuan bahwa data yang terdapat dalam register dapat diproses dalam berbagai operasi dengan melihat berapa besar kemampuan menampung register tersebut. Register dapat dibagi dalam lima golongan, yaitu : 1.
General purpose register, yang terdiri dari AX (AH + AL) = Accumulator Register BX (BH + BL) = Base Register CX (CH + CL) = Counter Register DX (DH + DL) = Data Register
2.
Segment Register, yang terdiri dari CS = Code Segment Register DS = Data Segment Register SS = Stack Segment Register ES = Extra Segment Register
3.
Pointer Register IP = Instruction Pointer Register SP = Stack Pointer Register BP = Base Pointer Register
12
4. Index Register SI = Source Index Register DI = Destination Index Register 5. Flag Register
Gambar 2.4 Struktur internal Mikroprossesor 8086/8088 yang menggambarkan Unit Pelaksana (EU) dan Unit Interface Bus (BIU)
13
2.4.1.1 General Purpose Register
Register yang termasuk dalam kelompok ini adalah register AX, BX, CX, DX, yang masing – masing terdiri atas 16 bit. Register – register ini mempunyai satu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing – masing bagian terdiri atas 8 bit, seperti register AX dapat dipecah menjadi register AH, dan AL. Akhir H menunjukkan High dan akhiran L menunjukkan Low. Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masingmasing register ini, yaitu : 1.
Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan.
2.
Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen.
3.
Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi.
4.
Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit.
2.4.1.2 Segment Register
Register yang termasuk dalam kelompok ini terdiri atas register CS, DS, ES, dan SS yang masing – masing merupakan register 16 bit. Register – register dalam
14
kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen memori. Register CS (Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS (Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Register DS (Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data – data pada program disimpan. Umumnya isi register ini tidak perlu diubah kecuali pada program residen (program) yang menetap di memori walaupun eksekusi program telah berakhir. Register ES (Extra Segment) sesuai dengan namanya adalah suatu register tambahan yang tidak mempunyai tugas khusus. Register ES biasanya digunakan untuk menunjukkan suatu alamat di memori, misalkan alamat memori video.
2.4.1.3 Pointer dan Index Register
Register
IP
(Instruction Pointer) berpasangan
dengan CS
(CS:IP)
menunjukkan alamat memori tempat dari perintah selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Register SP (Stack Pointer) yang berpasangan dengan register SS (SS:SP) digunakan untuk menunjukkan alamat dari stack, sedangkan register BP (Base Pointer) yang berpasangan dengan register SS (SS:BP) mencatat suatu alamat di memori tempat data berada.
15
Register SI (Source Index) dan register DI (Destination Index) biasanya digunakan pada operasi untai dengan mengakses secara langsung pada alamat memori yang ditunjuk kedua register ini.
2.4.1.4 Flag Register
Flags register merupakan suatu komposisi register 16 bit dimana komposisi bitnya dapat mengecek apakah sesuatu proses itu berfungsi atau tidak. Sebagai contoh, Sign Flag menunjukkan apakah suatu bilangan bertanda atau tidak. Adapun flag yang terdapat pada mikroprosesor 8088 ke atas adalah sebagai berikut : 1.
OF (Overflow Flag), jika terjadi overflow pada operasi aritmatika bit ini akan bernilai 1.
2.
DF (Direction Flag), digunakan pada operasi untai untuk menunjukkan arah proses.
3.
IF (Interrupt enable Flag), mikroprosesor akan mengabaikan interupsi yang terjadi jika bit ini 0.
4.
TF (Trap Flag), digunakan untuk proses pelacakan langkah demi langkah.
5.
SF (Sign Flag), jika digunakan bilangan bertanda bit ini akan bernilai 1.
6.
ZF (Zero Flag), jika hasil operasi menghasilkan nol, maka bit ini akan bernilai 1.
7.
AF (Auxiliary Flag), digunakan oleh operasi BCD, seperti pada perintah AAA.
16
8.
PF (Parity Flag), digunakan untuk menunjukkan paritas bilangan, bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
9.
CF (Carry Flag), jika terjadi peminjaman (borrow) pada operasi pengurangan atau bawaan (carry) pada penjumlahan, maka bit ini akan bernilai 1.
Tabel 2.3 Susunan Flag Register 8088 Bit 15 Flag
2.4.2
14
13
12
11 10 9 OF DF IF
8 7 6 5 TF SF ZF
4 3 AF
2 1 PF
0 CF
Mode Pengalamatan Data
Perintah pengalamatan data yang sering dipakai adalah perintah MOV. Perintah MOV merupakan perintah merupakan perintah yang umum dan fleksibel. Perintah ini akan meng-copy data dari sumber ke tujuan sehingga sumber tidak pernah berubah tetapi tujuan hampir selalu berubah. Perintah ini tidak mempengaruhi register flag. Sumber dan tujuan sering disebut sebagai operand. Mode pengalamatan data yang digunakan dengan perintah ini mencakup : 1. Pengalamatan register (register addressing). Pengalamatan ini digunakan untuk memindahkan salinan dari byte atau word dari register atau lokasi memori sumber ke dalam register atau lokasi memori tujuan. Contoh : MOV CX, DX akan menyalin isi dari register DX ke dalam register CX. 2. Pengalamatan segera (immediate addressing).
17
Pengalamatan ini digunakan untuk memindahkan data yang berukuran byte atau word langsung ke dalam register tujuan. Contoh : perintah MOV AL, 22H menyalin bilangan 22H ke dalam register AL. 3. Pengalamatan langsung (direct addressing). Pengalamatan ini memindahkan byte atau word antara lokasi memori dan register. Kumpulan perintah tidak menyediakan pemindahan data antara memori ke memori kecuali pada perintah MOVS. Contoh : perintah MOV CX, LIST menyalin isi dari lokasi memori LIST ke dalam register CX. 4. Pengalamatan register tidak langsung (indirect addressing). Pengalamatan ini memindahkan byte atau word antara register dan lokasi memori yang alamatnya ditunjuk oleh suatu register indeks atau register basis. Register indeks dan basis adalah BP, BX, DI, dan SI. Contoh : MOV AX, [BX] menyalin data 16-bit dari alamat offset segmen data yang alamatnya ditunjuk oleh register BX ke dalam register AX. 5. Pengalamatan base-plus-index. Pengalamatan ini memindahkan data yang berukuran byte atau word antara register dan lokasi memori yang ditunjuk leh register basis (BP atau BX) ditambah dengan isi register indeks (DI atau SI). Contoh : perintah MOV [BX+DI], CL menyalin isi register CL yang berukuran byte ke dalam lokasi memori segmen data yang ditunjuk oleh BX ditambah DI. 6. Pengalamatan register relatif (relative register addressing). Pengalamatan ini memindahkan data yang berukuran byte atau word antara register dan lokasi memori yang ditunjuk oleh suatu register indeks atau basis
18
ditambah displacement. Contoh : MOV AX, [BX+4]. Perintah ini mengisi AX dengan data yang alamat segmen datanya dibentuk oleh BX ditambah 4. 7. Pengalamatan base relatif-plus-index Pengalamatan ini memindahkan data yang berukuran byte atau word antara register dan lokasi memori yang ditunjuk oleh suatu register basis dan register indeks ditambah displacement. Contoh : MOV AX, ARRAY[BX+DI]. Perintah ini menggunakan sebuah alamat yang dibentuk oleh penambahan ARRAY, BX dan DI. Karena mode pengalamatan yang diambil hanya berupa pengalamatan register dan segera maka pembahasan kali ini hanya dibatasi pada pengalamatan register dan segera.
2.4.2.1 Pengalamatan Register (Register Addressing)
Pengalamatan register merupakan bentuk pengalamatan data yang paling dikenal dan lebih mudah untuk dipakai. Register 8 bit yang dipakai yaitu : AH, AL, BH, BL, CH, CL, DH, dan DL. Sedangkan register 16 bit yang dipakai yaitu : AX, BX, CX, DX, SP, BP, SI, dan DI. Pengalamatan antara register 8 bit dan 16 bit tidak diijinkan dan akan mengeluarkan pesan kesalahan pada saat dilakukan perakitan.
19
Tabel 2.4 Contoh perintah pengalamatan register Bahasa Assembly
Ukuran
Operasi
MOV AL, BL
8 bit
Menyalin isi register BL ke register AL
MOV CH, CL
8 bit
Menyalin isi register CL ke register CH
MOV AX, CX
16 bit
Menyalin isi register CX ke register AX
MOV SP, BP
16 bit
Menyalin isi register BP ke register SP
MOV DS, AX
16 bit
Menyalin isi register AX ke register DS
MOV SI, DI
16 bit
Menyalin isi register DI ke register SI
MOV BX, ES
16 bit
Menyalin isi register ES ke register BX
MOV ES, DS
–
Tidak diijinkan (segmen ke segmen)
MOV BL, DX
–
Tidak diijinkan (ukuran berbeda)
MOV CS, AX
–
Tidak diijinkan (register segmen tidak boleh merupakan register tujuan)
2.4.2.2 Pengalamatan Segera (Immediate Addressing)
Mode pengalamatan data lainnya adalah pengalamatan segera. Istilah segera menyatakan bahwa data segera mengikuti kode operasi heksadesimal dalam memori. Data segera merupakan data konstan, sedangkan data yang dipindahkan dari register adalah data berubah. Pengalamatan segera bekerja berdasarkan data yang berukuran byte atau word. Assembler simbolis memperlihatkan data segera dalam banyak cara. Huruf H ditambahkan kepada data heksadesimal. Jika data heksadesimal mulai dengan suatu huruf, assembler memerlukan data yang dimulai dengan 0. Sebagai contoh, untuk merepresentasikan heksadesimal F2, digunakan 0F2H dalam bahasa rakitan.
20
Tabel 2.5 Contoh perintah pengalamatan segera Bahasa Assembly
Ukuran
Operasi
MOV BL, 44
8 bit
Menyalin 44 desimal (2CH) ke dalam BL
MOV AX, 44H
16 bit
Menyalin 0044H ke dalam AX
MOV SI, 0
16 bit
Menyalin 0000H ke dalam SI
MOV CH, 100
8 bit
Menyalin 100 desimal (64H) ke dalam CH
MOV AL, „A‟
8 bit
Menyalin ASCII A ke dalam AL
MOV AX, „AB‟
16 bit
Menyalin ASCII BA ke dalam AX. Ini bukan kesalahan. Karakter ASCII disimpan sebagai BA, sehingga perlu dilatih ketelitian saat memilih pasangan karakter ASCII ukuran word
MOV CL, 11001110B
2.4.3
8 bit
Menyalin 11001110 biner ke dalam CL
Perintah Aritmatika
Perintah aritmatika dalam bahasa Assembly terdapat banyak variasinya, namun karena perintah aritmatika yang diambil hanya berupa perintah penjumlahan, pengurangan, perkalian dan pembagian, maka pembahasan kali ini hanya dibatasi pada beberapa perintah tersebut saja.
21
2.4.3.1 Penjumlahan
Perintah penjumlahan tampil dalam berbagai format penulisan dalam beberapa jenis mikroprosesor. Perintah penjumlahan dapat berupa ADD, ADC dan INC. ADD merupakan perintah penjumlahan dimana carry tidak dimasukkan dalam perhitungan. Sedangkan ADC merupakan perintah penjumlahan yang memasukkan carry dalam perhitungan. Inkremen (INC) adalah format khusus dari penjumlahan yaitu menambahkan suatu bilangan dengan satu. Perintah penjumlahan terdiri dari 3 macam yaitu : 1. ADD, yaitu perintah penjumlahan yang tidak menyertakan nilai carry dalam perhitungan. Format : SUB Source, Destination. Contoh : ADD AL, BL akan menghasilkan AL = AL + BL. 2. ADC, yaitu perintah penjumlahan yang menyertakan nilai carry dalam perhitungan. Format : SBB Source, Destination. Contoh : ADC AL, BL akan menghasilkan AL = AL + BL + Carry. 3. INC, yaitu perintah penjumlahan yang menambahkan dengan 1. Format : INC Destination. Contoh : INC AL akan menghasilkan AL = AL + 1. Berdasarkan mode pengalamatan yang dipakai, maka perintah penjumlahan dapat dibagi menjadi : 1. Penjumlahan register (register addition). Penjumlahan ini digunakan untuk menjumlahkan isi dari beberapa register. Contoh : ADD AL, BL akan menghasilkan AL = AL + BL.
22
ADC AL, BL akan menghasilkan AL = AL + BL + Carry. 2. Penjumlahan segera (immediate addition). Penjumlahan ini digunakan untuk menjumlahkan isi register dengan nilai konstan. Contoh : ADD AL, 05H akan menghasilkan AL = AL + 05H ADC AL, 05H akan menghasilkan AL = AL + 05H + Carry
2.4.3.2 Pengurangan
Ada banyak bentuk pengurangan yang ditampilkan dalam kumpulan perintah. Format-format ini menggunakan mode pengalamatan data 8 bit dan 16 bit. Format khusus dari pengurangan DEC yaitu dekremen, digunakan untuk mengurangkan dengan 1. Seperti halnya perintah penjumlahan, pengurangan juga memiliki nilai borrow, sehingga perintah pengurangan terdiri dari 3 macam yaitu : 1. SUB, yaitu perintah pengurangan yang tidak menyertakan nilai borrow dalam perhitungan. Format : SUB Source, Destination. Contoh : SUB AL, BL akan menghasilkan AL = AL – BL. 2. SBB, yaitu perintah pengurangan yang menyertakan nilai borrow dalam perhitungan. Format : SBB Source, Destination. Contoh : SBB AL, BL akan menghasilkan AL = AL – BL – Borrow. 3. DEC, yaitu perintah pengurangan yang mengurangkan dengan 1. Format : DEC Destination. Contoh : DEC AL akan menghasilkan AL = AL – 1.
23
Berdasarkan mode pengalamatan yang dipakai, maka perintah penjumlahan dapat dibagi menjadi : 1. Pengurangan register (register substraction). Pengurangan ini digunakan untuk mengurangkan isi dari beberapa register. Contoh : SUB AL, BL akan menghasilkan AL = AL – BL. SBB AL, BL akan menghasilkan AL = AL – BL – Borrow. 2. Pengurangan segera (immediate substraction). Pengurangan ini digunakan untuk mengurangkan isi register dengan nilai konstan. Contoh : SUB AL, 05H akan menghasilkan AL = AL – 05H SBB AL, 05H akan menghasilkan AL = AL – 05H – Borrow
2.4.3.3 Perkalian
Perkalian dilakukan dalam format byte dan word dan dapat juga bilangan bulat bertanda (IMUL) atau bilangan bulat tak bertanda (MUL). Beberapa bit flag seperti O dan C berubah saat proses perkalian dijalankan dan memberikan hasil yang dapat diramalkan sebelumnya. Flag yang lain juga berubah, tetapi hasilnya tidak bisa diramalkan.
24
Namun pembahasan kali ini hanya dibatasi pada bilangan bulat tak bertanda yaitu operasi MUL yang memiliki format sebagai berikut : MUL Source. Contoh : MUL 05H akan menghasilkan AX = AX * 05H.
2.4.3.4 Pembagian
Seperti halnya perkalian, pembagian terjadi pada bilangan 8 bit atau 16 bit. Bilangan ini adalah bilangan bulat bertanda (IDIV) atau tak bertanda (DIV). Hasil pembagian selalu dua kali lebarnya dari bilangan yang dibagi. Artinya pembagian 8 bit membagi bilangan 16 bit dengan bilangan 8 bit. Namun pembahasan kali ini hanya dibatasi pada bilangan bulat tak bertanda yaitu operasi DIV yang memiliki format sebagai berikut : DIV Source. Contoh : DIV 05H akan menghasilkan AX = AX / 05H.
2.4.4
Bilangan Bertanda dan Bilangan Tidak Bertanda
Yang dimaksud dengan bilangan bertanda adalah bilangan yang mengandung arti plus (+), ataupun min (–), sedangkan bilangan tidak bertanda mengandung arti semua positif.
25
2.4.4.1 Kapasitas Bilangan
Kapasitas bilangan bertanda dan tidak bertanda ditentukan oleh register Sign Flag dengan komposisi sebagai berikut : 1.
Bila Sign Flag menunjukkan 0, maka komposisi bit untuk angka paling besar adalah : 1111 1111 1111 1111 atau desimalnya 65535. Jadi dapat disimpulkan bahwa bila bilangan itu bilangan tak bertanda, maka bilangan itu akan berkomposisi bit antara 0000 0000 0000 0000 hingga 1111 1111 1111 1111 atau 0000 hexa hingga FFFF hexa.
2.
Bila Sign Flag menunjukkan 1 maka bilangan tersebut merupakan bilangan bertanda. Bilangan bertanda mempunyai cara perhitungan yang lain dengan bilangan bertanda. Untuk bilangan bertanda, bit terakhir atau bit ke – 16 (bit paling kiri) tidak dimasukkan dalam hitungan melainkan merupakan petunjuk apakah bilangan itu positif atau negatif. Oleh karena kemampuan tersebut, maka kapasitas bilangan bertanda menjadi berkurang sebagian, yaitu untuk bilangan positif dari 0 sampai 32767 dan untuk bilangan negatif – 1 sampai dengan – 32767.
2.4.4.2 Penulisan Bit Bilangan Negatif
Pada bilangan bertanda, cara menulis bit negatif tidak sama dengan bit positif. Cara menulis bit bilangan negatif untuk -1 adalah 1111 1111 1111 1111 dan -2 adalah
26
1111 1111 1111 1110. Jadi dapat disimpulkan bahwa cara penulisan bilangan negatif dimulai dengan bilangan terbesar dalam komposisi 16 bit yaitu FFFF hexa dan diakhiri bilangan 1000 0000 0000 0000 (8000 hexa) sebagai bilangan negatif terbesar – 32768.
2.4.4.3 Mencari Bilangan Negatif
Untuk mempermudah pencarian bilangan negatif dari heksadesimal dapat dilakukan langkah – langkah sebagai berikut : 1.
Ubah bilangan desimal negatif ke bilangan biner positif.
2.
Ubah setiap angka 0 menjadi 1 dan angka 1 menjadi 0.
3.
Tambahan bilangan 1 pada bilangan yang telah diubah dan konversi ke heksadesimal akan didapat hasil yang diinginkan.
Sebagai contoh : Nilai heksadesimal dari – 20 adalah sebagai berikut : Nilai 20 diubah menjadi biner 0000 0000 0001 0100 Balikkan angka biner diatas menjadi 1111 1111 1110 1011 Tambahkan dengan 1 dan didapat 1111 1111 1110 1100 atau FFEC heksa.
2.4.5
Program EXE dan Program COM
Secara umum program yang berekstensi .COM dan .EXE terletak pada ukuran luas daerah yang menyebabkan kelainan pemrograman dalam Assembler.
27
2.4.5.1 Ukuran Luas Berkas
Ukuran berkas yang diakhiri dengan ekstensi .COM mempunyai arti bahwa berkas itu paling banyak hanya akan memakan luas 1 segmen, sedang untuk berkas berekstensi .EXE tidak dibatasi berapa segmen yang dipakai, bisa 1 segmen atau lebih.
2.4.5.2 Perbedaan Lain
Karena .COM hanya mempunyai 1 segmen, maka berkas .COM mempunyai kelebihan dan kekurangan seperti : 1.
Stack yang telah dibuat sendiri oleh program pada akhir segmen.
2.
Hanya terdapat satu segmen, sehingga kita tidak perlu mengatur register DS, CS, dan SS.
3.
Harus disediakan ruangan di awal program sebanyak 100 hexa byte untuk keperluan PSP (Program Segment Prefix).
4.
Karena tempat PSP diketahui dengan pasti, maka operasi ke PSP lebih mudah karena masih dalam 1 segmen. Sedangkan kelebihan dan kekurangan berkas .EXE adalah kebalikan dari
.COM, seperti : 1.
Kita diperbolehkan untuk membuat program yang panjang karena tidak ada pembatasan besar program.
28
2.
Kita tidak perlu menyediakan tempat untuk PSP sebesar 100 hexa karena program telah meletakan PSP di tempat yang telah disediakan.
3.
Pengaturan pembagian segmen harus dilakukan sendiri.
4.
Harus membuat memori stack sendiri.
2.5
Perangkat Lunak Simulasi
Percobaan komputer menggunakan perangkat lunak simulasi untuk proses belajar dimulai di Amerika Serikat pada akhir tahun 1950-an dan awal tahun 1960-an. Kemudian penelitian selanjutnya dilakukan oleh Harvard University bekerja sama dengan IBM pada tahun 1965. Setelah munculnya komputer mikro, sistem pengajaran dengan komputer menjadi semakin meluas pada pengembangan perangkat lunak simulasi yang dikenal dengan istilah perangkat lunak simulasi untuk sistem pengajaran. Perangkat lunak simulsi sistem pengajaran dengan komputer muncul dari sejumlah disiplin ilmu, terutama ilmu komputer dan psikologi. Dari ilmu komputer dan matematika muncul program-program yang membuat semua perhitungan dan fungsi lebih mudah dan bermanfaat. Sedangkan dari ilmu psikologi muncul pengetahuan mengenai teori belajar, teknik belajar, serta motivasi yang baik. Beberapa istilah yang digunakan untuk menyatakan perangkat lunak simulasi untuk pengajaran dengan komputer adalah Computer Assisted Instruction (CAI), Computer Based Instruction (CBI), Computer Based Education (CBE), Computer
29
Assisted
Learning
(CAL),
atau
Computer
Based
Training
(CBT).
(http://wikieducator.org/Computer_Assisted_Instruction_(CAI), 27 May 2012)
2.5.1
Tujuan Perangkat Lunak Simulasi
Tujuan utama dari perangkat lunak simulasi dalam proses pembelajaran adalah : 1. Peningkatan pengawasan. 2. Penggunaan sumber daya. 3. Individualisasi. 4. Ketepatan waktu dan tingkat ketersediaan. 5. Pengurangan waktu latihan. 6. Perbaikan hasil kerja. 7. Alat yang nyaman dipakai. 8. Pengganti cara belajar. 9. Peningkatan kepuasan belajar. 10. Pengurangan waktu pengembangan. (http://wikieducator.org/Computer_Assisted_Instruction_(CAI), 27 May 2012)
30
2.5.2
Jenis-jenis Perangkat Lunak Simulasi
Jenis pemakaian komputer untuk perangkat lunak simulasi dalam proses pembelajaran digolongkan menjadi tiga bagian, yaitu : 1. Pengujian. Dalam jenis ini, komputer digunakan untuk memberikan penilaian dan analisis tes, membuat soal tes, membuat nilai acak, tes interaksi, dan tes adaptasi. Jenis ini sering disebut dengan Computer Assisted Testing (CAT). 2. Manajemen. Jenis pemakaian ini disebut dengan Computer Managed Instruction (CMI), dimana komputer digunakan untuk mengatur kemajuan peserta pelatihan dan alatalat yang dipakai. CMI biasanya digunakan untuk meningkatkan pengawasan dan efisiensi dalam sistem pelatihan. 3. Perintah. Sering disebut dengan Computer Assisted Instruction (CAI). Jenis ini menganggap komputer sebagai media penyimpanan perintah sama seperti slide, tape, video atau buku-buku. Menurut sudut pandang CAI, masalah utamanya adalah bagaimana menyusun bahan-bahan perintah yang akan ditampilkan oleh komputer dengan cara yang paling efektif. Ada tiga jenis CAI yaitu : a. Drill and Practice Merupakan cara yang paling mudah, terdiri dari tahap-tahap penampilan permasalahan, penerimaan respon pengguna, pemberian hasil analisis, umpan
31
balik, dan pemberian pertanyaan lain. Secara umum jenis ini tidak menampilkan informasi baru tapi memberikan latihan dari konsep yang sudah ada. b. Tutorial Jenis ini berisi konsep atau prosedur yang disertai dengan pertanyaan atau latihan pada akhir dari pelatihan. Selama pelatihan, komputer mengajarkan informasi-informasi yang baru kepada siswa seperti layaknya seorang guru pembimbing. Setelah itu, pemahaman siswa diukur melalui serangkaian tes dan komputer melanjutkan pengajaran berdasarkan hasil pengukuran tadi. c. Socratic Berisi komunikasi antara pengguna dan komputer dalam natural language. Jenis ini sebenarnya berasal dari penelitian dalam bidang intelijensia semu (artificial intelligence). Socratic mampu melakukan interaksi dalam natural language dan bisa memahami apa yang ditanyakan pengguna.
2.5.3
Langkah-langkah Pengembangan Perangkat Lunak Simulasi
Ada 5 tahap siklus pengembangan perangkat lunak Simulasi yaitu : 1. Pengembangan spesifikasi perancangan detail. Tujuan dari pengembangan spesifikasi perancangan detail ini meliputi perluasan konsep perancangan untuk menciptakan suatu rencana yang efektif. 2. Pengembangan teknik.
32
Pengembangan ini biasanya dilakukan dengan persetujuan dari tim perancang. Tahap ini biasanya akan diulang-ulang dan sering terjadi perbaikan. 3. Evaluasi. Untuk menghasilkan suatu perangkat lunak simulasi yang dapat memenuhi standar maka perlu dilakukan suatu pengujian. Pengujian biasanya dilakukan pada bagian pelajaran dan pelatihan. Hasil dari pengujian inilah yang dievaluasi oleh tim perancang. 4. Produksi dan pengembangan. Produksi ini harus dilakukan secara teknis dan logis, baik dalam penyalinan produk CAI maupun dalam pembuatan dokumentasi. Sedangkan pengembangan yang dilakukan mengacu pada proses pengembangannya. 5. Evaluasi akhir. Langkah pengujian yang dapat dilakukan misalnya dengan melakukan suatu kuisioner maupun konsultasi dengan mereka yang ingin belajar. Hasilnya dapat menjadi pedoman apakah perangkat lunak simulasi tersebut perlu dilakukan perbaikan lagi atau tidak. (http://wikieducator.org/Computer_Assisted_Instruction_(CAI), 27 May 2012)
33
2.5.5
Keuntungan Perangkat Lunak Simulasi
Gambar 2.5 Use Case Diagram Belajar Mengajar
Ada beberapa keuntungan yang bisa diraih dari suatu perangkat lunak simulasi sistem pembelajaran dengan komputer yang interakif yaitu : 1. Meningkatkan efektivitas pelatihan, seperti : a. Meningkatkan daya minat pengguna. b. Meningkatkan waktu pelatihan. c. Meningkatkan pengetahuan. 2. Mengurangi waktu dan sumber daya pelatihan, seperti : a. Mengurangi waktu belajar selama pelatihan. b. Mengurangi instruktur pelatihan. c. Biaya pelatihan yang lebih rendah.
34
Dosen
Mahasiswa
Memperhatikan Penjelasan
Menerangkan Teori
Mencatat Penjelasan
Memberikan Soal / Tugas Latihan
Mengerjakan Soal / Tugas Latihan
Memahami Penjelasan & Teori
Membahas Penyelesaian Soal / Tugas Latihan
Gambar 2.6. Activity Diagram Belajar Mengajar
35