Tampilkan postingan dengan label Teknik Mikroprosesor. Tampilkan semua postingan
Tampilkan postingan dengan label Teknik Mikroprosesor. Tampilkan semua postingan

Jumat, 04 Maret 2016

Seputar Assembler

1. Apakah Sebenarnya Bahasa Assembly itu?
——————————————-
Bahasa Assembly (Assembler) adalah merupakan salah satu dari sekian banyak bahasa pemrograman yang tergolong dalam Bahasa Pemrogaman Tingkat Rendah (Low Level Language) dan hanya setingkat diatas bahasa mesin (Machine Language).
2. Mengapa Assembly?
———————-
Assembly memiliki kelebihan yang tidak dapat digantikan oleh bahasa pemrogaman manapun. Diantaranya adalah :
– Hasil program memiliki tingkat kecepatan yang tinggi.
– Ukuran dari program kecil.
– Sangat mudah untuk mengakses Sistem Komputer.
3. Apakah Segment dan Offset itu?
———————————–
Segment dan Offset merupakan suatu angka 16 bit (direpresntasikan dalam bilangan hexa) yang menunjukkan suatu alamat tertentu di memory komputer. Pasangan segment : offset ini disebut juga alamat relatif. Selain alamat relatif, terdapat juga alamat mutlak berupa angka 20 bit (juga direpresentasikan dalam bilangan hexa). Alamat mutlak ini dapat dihitung dengan mengalikan segment dengan 10 hexa dan ditambahkan dengan offset.
Contoh : segment : offset
0100 : 1234
Alamat relatifnya adalah : 02234
4. Apakah Interrupt itu?
————————–
Interrupt adalah permintaan kepada microprocessor untuk melakukan suatu perintah. Ketika terjadi permintaan interupsi, microprocessor akan mengeksekusi interrupt handler , yaitu suatu program yang melayani interupsi. Setitap interrupt handler itu memiliki alamat masing – masing yang disimpan dalam bentuk array yang masing – masing terdiri dari 4 byte (2 offset dan 2 segment). Array ini disebut vektor interupsi . Vektor interupsi ini disusun berdasarkan nomor interupsi yaitu dari hexa. Selain itu, dikenal juga istilah service dan subservice, maksudnya adalah bahwa setiap interrupt itu dibagi menjadi beberapa bagian yang mempunyai tugas masing – masing. Tetapi ada juga interrupt yang tidak memiliki service, contohnya int 29.
5. Apakah Register itu?
————————-
Register adalah merupakan sebagian memory dari microprocessor yang neniliki kecepatan sangat tinggi. Dapat juga dianalogikan bahwa register merupakan kaki tangan dari microprocessor.
Register dibagi menjadi lima bagian besar yaitu :
1. Segment Register (16 bit)
Register untuk menunjukkan alamat dari suatu segment. Yang termasuk register segment :
. CS (Code Segment)
Menunjukkan alamat segment dari program yang sedang aktif.
. DS (Data Segment)
Menunjukkan alamat segment dari data program (variabel).
. SS (Stack Segment)
Menunjukkan alamat segment dari stack yang digunakan program.
. ES (Extra Segment)
Merupakan register segment cadangan.
2. Pointer dan Index Register (16 bit) Register untuk menunjukkan alamat dari suatu offset.
Yang termasuk register pointer dan index :
. SP (Stack Pointer)
Berpasangan dengan SS (SS : SP).
. BP (Base Pointer)
Berpasangan dengan SS (SS : BP).
. DI (Destination Index)
Berpasangan dengan ES (ES : DI). Dipakai untuk operasi string.
. SI (Source Index)
Berpasangna dengan DS (DS : SI). Dipakai untuk operasi string.
3. General Purpose Register (16 bit)
Register ini dapat digunakan untuk berbagai keperluan, tetapi masing – masing juga memiliki fungsi khusus. Jenis register ini memiliki ciri khas, yaitu dapat dibagi lagi menjadi register 8 bit, register tinggi/high, dan register rendah/low.
Yang termasuk register general purpose :
. AX –> AH|AL (Accumulator)
Untuk menangani operasi arithmatika.
. BX –> BH|BL (Base)
Untuk menunjukkan alamat offset.
. CX –> CH|CL (Counter)
Untuk looping, menunjukkan berapa kali looping terjadi.
. DX –> DH|DL (Data)
Untuk menampung sisa pembagian bilangan 16 bit.
4. Index Pointer Register (16 bit)
Hanya terdiri dari 1 register yaitu IP yang berpasangan dengan reguster CS (CS : IP) untuk menunjukkan alamat instruksi selanjutnya yang akan dieksekusi.
0125. Flags Register (1 bit)
Register ini berfungsi untuk menunjukkan suatu kondisi (ya atau tidak).
Register ini hanya bernilai 0 dan 1.
Yang termasuk register flags :
. OF (Overflow Flag) 1 jika terjadi overflow
. SF (Sign Flag) 1 jika digunakan bilangan bertanda
. ZF (Zero Flag) 1 jika hasil operasi bernilai 0
. CF (Carry Flag) 1 jika operasi menghasilkan carry
. PF (Parity Flag) 1 jika hasil operasi bilangan genap
. DF (Direction Flag) 1 jika alur proses alur proses menurun pada string
. IF (Interrupt Flag) 1 jika proses dapat diinterupsi
. TF (Trap Flag) 1 jika dapat ditrace / debug
. AF (Auxiliary Flag) digunakan pada operasi bilangan BCD
. NT (Nested Task) digunakan untuk menangani interupsi beruntun
. IOPL (I/O Protection Level) digunakan untuk mode proteksi (2 bit)
6. Bagaimana memulai Assembly?
———————————
Bahasa assembly tidak seperti bahasa tingkat tinggi (High Level Language) yang biasanya memiliki IDE – Integrated Development Environment, bahasa assembly dapat diketikkan dalam berbagai macam editor teks, misalnya BC, TC, TURBO, NOTEPAD, EDIT, dan editor teks lainnya. Yang perlu diingat bahwa ekstensi dari program assembly haruslah .ASM. Setelah program assembly diketikkan dan disimpan dengan ekstensi .ASM, maka program tersebut harus dikompilasi menjadi Object File berekstensi .OBJ, dan kemudian harus dilink menjadi executable file (.EXE/.COM), executable file inilah yang baru dapat dijalankan.
Untuk mengcompile : C:\TASM
Untuk melink : C:\LINK
C:\Option /t untuk melink file ke .COM
C:\Untuk melink menjadi .EXE, hilangkan option /t ini.
atau pake cara langsung :
7. Apakah Perbedaan .COM dan .EXE?
————————————
Perbedaan program .COM dan .EXE adalah :
Program .COM Program .EXE
– Hanya menggunakan 1 segment untuk º – Menggunakan banyak segment.
– code, data, dan stack. º
– Ukuran program relatif kecil º – Ukuran program relatif besar
– Hasil program lebih cepat º – Hasil program lebih lambat
– Hanya dapat menangani program kecil º – Dapat menangani program yang besar(<=64 KByte). 8. Bagaimana Struktur Program .COM? ————————————- Untuk .COM dan .EXE memiliki struktur program yang berbeda, untuk kesempatan ini hanya akan dibahas struktur program .COM. Berikut ini struktur program .COM (tanda ; adalah untuk komentar) : nama_segment segment ; nama_segment diisi terserah anda ; Baris ini untuk memberikan nama sebuah segment assume cs : nama_segment ; Menunjukkan CS ke segment yang sudah kita beri nama org 100h ; Untuk PSP – Program Segment Prefix ; PSP ini digunakan untuk berhubungan dengan DOS label_pertama : ; Di Assembly, minimal harus ada satu label, ; penamaan label terserah anda mov ah,04ch ; service int 21h ; int 21h service 04ch merupakan instruksi untuk ; keluar dari program nama_segment ends ; Akhir dari sebuah segment end label_pertama ; Label yang paling pertama harus ditutup dengan perintah ini 9. Bagaimana Variabel dalam Assembly? ————————————– Dalam assembly dikenal beberapa jenis data, yaitu : – db (define byte) –> Besarnya 1 byte (0h – FFh)
– dw (define word) –> Besarnya 2 byte (0h – FFFFh)
– dd (define double word) –> Besarnya 4 byte (0h – FFFFFFFFh)
– df (define far word) –> Besarnya 6 byte (0h – FFFFFFFFFFFFh)
– dq (define quad word) –> Besarnya 8 byte (0h – FFFFFFFFFFFFFFFFh)
– dt (define temp word) –> Besarnya 10 byte (0h – FFFFFFFFFFFFFFFFFFFFh)
10. INT, MOV, JMP, dan LEA
—————————-
INT

INT adalah perintah untuk melaksanakan suatu interupsi.
Syntaxnya adalah : INT no_interupsi
Contoh : INT 20h ; untuk program terminate
MOV

mOV adalah perintah untuk mengisi nilai ke register, variabel, atau alamat memory tertentu.
Syntaxnya adalah :MOV destination,source
Contoh : MOV AX,5 ; nilai AX akan berisi 5
JMP

JMP adalah perintah untuk melakukan lomptan ke label tertentu.
Syntaxnya adalah : JMP nama_label
Contoh : JMP label1 ; Program akan melompat ke label1
LEA

LEA adalah perintah untuk mendapatkan alamat dari sebuah variabel.
Syntaxnya adalah : LEA variabel
Contoh : lea si,bil1 ; si akan berisi offset bil1
11. Tambahan
————–
Beberapa hal penting yang perlu diingat :
. Bagian deklarasi variabel tidak boleh dijalankan, harus dilewati dengan melakukan lompatan ke label setelahnya.
. Semua perintah assembly yang membutuhkan 2 operand seperti MOV memiliki syarat sebagai berikut :
– Kedua operand besarnya harus sama.
Contoh : MOV ax,bl ; ini salah karena AX 16 bit dan bl 8 bit
MOV al,bl ; ini benar, AL dan BL besarnya 8 bit
– Kedua operand tidak boleh keduanya variabel
Contoh :
MOV a,b ; ini salah, kedua operand a dan b adalah variabel
MOV al,b ; kedua perintah ini untuk menggantikan perintah
MOV a,al ; yang salah diatas
– Register segment tidak boleh diisi langsung, harus menggunakan perantara
Contoh :
MOV es,0b800h : salah, es tidak boleh diisi langsung
MOV ax,0b800h ; kedua perintah ini untuk menggantikan perintah
MOV es,ax ; yang salah diatas
. Untuk intterupt, ingatlah bahwa setiap interrupt memiliki syarat – syarat sebelum dipanggil. Penuhi syarat – syarat itu sebelum melakukan intterupt.
12. Contoh Program Sederhana
——————————
Program berikut ini akan membersihkan layar, kemudian akan muncul sebuah kalimat dan akan diminta untuk memasukkan sebuah karakter. Kemudian akan ditampilkan lagi sebuah kalimat diikuti dengan karakter yang tadi dimasukkan. code segment
assume cs : code
org 100h
begin : jmp start
kal1 db ‘Masukkan sebuah karakter : $’
kal2 db 10,13,’Karakter yang anda masukkan adalah : $’
kar db ?
start : mov ah,0
mov al,3h
int 10h
mov ah,9h
lea dx,kal1
int 21h
12mov ah,1h
int 21h
mov kar,al
mov ah,9h
lea dx,kal2
int 21h
mov al,kar
int 29h
mov ah,4ch
int 21h
code ends
end begin
Simpanlah program diatas dengan ekstensi .asm (misal test.asm), kemudian compile program tersebut dengan perintah :
tasm
misal : tasm test.asm
Maka akan dihasilkan sebuah object file berekstensi .obj, kemudian link file tersebut dengan perintah :
tlink /t
misal : tlink /t test.obj
Maka akan dihasilkan sebuah file berekstensi .com, cobalah jalankan !
Penjelasan :
– Perhatikan baris begin : jmp start, karena baris berikutnya adalah deklarasi variabel, maka harus dilewati dengan perintah jmp start (melompat ke label start).
– Pada baris kal1 db ‘Mas….. $’ disini kita mendeklarasikan sebuah variabel untuk pencetakan string, ingatlah selalu untuk menambahkan tanda ‘$’ diakhir sebuah string.
– Pada baris kal2 db 10,13,’… $’ sama seperti baris sebelumnya, tetapi disini kita menambahkan 2 karakter, karakter 10 untuk turun baris, karakter 13 untuk memindahkan kursor ke awal baris.
– Pada barus start : mov ah,0 sampai baris int 10h, disini kita melakukan interupsi 10h service 0h, yaitu untuk mengganti modus layar, al berisi 3 berarti modusnya adalah teks 80 x 25. Efek yang terjadi adalah layar akan bersih.
– Pada baris mov ah,9 sampai baris int 21h (2 baris dibawahnya), kita melakukan int 21h service 9h, yaitu untuk mencetak sebuah string. Register dx harus berisi alamat dari string yang akan dicetak.
– Pada baris mov ah,1h sampai baris mov kar,al, kita menggunakan int 21h service 01h, yaitu untuk meminta input 1 karakter dan ditampilkan ke layar. Karakter yang diinput akan berada pada register al setelah interupsi dilakukan, maka kita isikan ke variabel kar dengan perintah mov kar,al
– Selanjutnya pada baris mov al,kar dan int 29h, kita menggunakan int 29h yang tidak memiliki service, fungsinya untuk mencetak 1 karakter yang ada pada register al.
note : untuk melihat nomor-nomor service-service yang terdapat pada komputer gunakan program Helppc
Chapter 1 : Struktur Program COM
Compiler Assembly sudah banyak tersedia di internet, contohnya TASM (Turbo Assembler), MASM (Microsoft Assembler), NASM (Netwide Assembler), dan lain-lain.
Mengapa menggunakan bahasa Assembly?
1. Cepat, Lebih cepat dari compiler lainnya.
2. Lebih dekat dengan bahasa mesin, disebabkan bahasa Assembly dialamatkan 1:1 dengan bahasa mesin.
3. Kode yang dihasilkan lebih kecil dari compiler lainnya.
4. Dapat mengakses hardware lebih luas.
Salah satu bentuk program yang dapat dihasilkan oleh compiler Assembly adalah file COM.
FIle COM adalah struktur program paling sederhana. Ada beberapa syarat dalam pembuatan atau penggunaan file COM :
1. Kode dan data program harus tidak lebih besar dari 64 KB.
2. Tidak dapat memesan alamat memori melalui sistem operasi.
Contoh bentuk kode program COM, ketiklah di teks editor yang dapat menghasilkan file ASCII murni seperti Notepad, vi, atau lainnya. Simpan dengan namaCOBAASM.ASM.
Versi TASM :
———————————-
ideal
p386n
model tiny
codeseg
org 100h
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end
———————————-
Versi MASM :
———————————-
.386
.model tiny
.code
org 100h
entry:
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end entry
———————————-
Compile-lah dengan perintah TASM.EXE COBAASM.ASM lalu dikuti dengan perintah TLINK.EXE /T COBAASM.OBJ, jika menggunakan compiler TASM. Untuk compiler MASM gunakan perintah ML COBAASM.ASM. Jika tak ada error, maka akan terlihat output seperti ini :
E:\PUSHM0~1\TASM3>tasm.exe cobaasm.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International
Assembling file: cobaasm.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 460k
File yang dihasilkan dari proses kompilasi adalah file OBJ. Untuk merubah file OBJ ini menjadi sebuah file EXE atau COM kita perlu melakukan “linking” dengan program linker. Disini kita menggunakan TLINK.exe.
E:\PUSHM0~1\TASM3>tlink.exe /t cobaasm.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International
Argumen /t pada tlink.exe berarti kita ingin membuat file COM dari file .obj yang dihasilkan oleh compiler. Sedangkan untuk membuat file EXE tidak perlu mengikutkan argumen /t.
Jalankan program COM tersebut :
E:\PUSHM0~1\TASM3>cobaasm.com
Apa yang terjadi? Tentunya tidak terjadi apa-apa karena kita belum menuliskan perintah untuk program tersebut. Jadi program cobaasm.com tersebut hanya diload ke memory lalu terminate dengan sendirinya.
Apa sih arti dari kode-kode diatas? lalu apa perbedaan antara kode yang ditulis untuk compiler TASM dengan MASM?
berikut adalah penjelasan lengkapnya…
1. Perintah “ideal” berarti kita menggunakan syntax ideal dalanm compiler TASM.
2. Perintah “p386n” atau “.386” berarti kita menggunakan intruksi prosesor 80386.
3. Perintah “model tiny” atau “.tiny” berarti kita ingin menggunakan format file COM.
4. Perintah “codeseg” atau “.code” adalah awal dari kode program kita.
5. Perintah “org 100h” berarti program kita akan dimulai dari offset 100h.
6. Dalam compiler MASM kita perlu mendeklarasikan entry point untuk program, disini kita gunakan label “entry:”.
Perlu diketahui kalau deklarasi sebuah label : “nama_label:”.
7. Program COM selalu diawali dengan “peloncatan” atau “jump” ke awal kode program. Perintah yang digunakan adalah “jmp” diikuti dengan nama label, misalnya “start”. Bila diperhatikan, diantara perintah “jmp start” dan label “start” adalah tempat dimana kita bisa deklarasikan variabel-variabel ataupun data-data yang digunakan dalam program kita.
8. Untuk mengakhiri jalannya program, kita perlu membuat suatu perintah. Perintah “end” atau “end entry” disini hanya menunjukkan akhir dari kode program, bukan untuk MENGAKHIRI proses. 2 perintah yang digunakan adalah :
MOV AX, 4c00h
int 21h
Perintah MOV adalah perintah untuk menyalin isi data atau register ke suatu register lain. Bentuk umum perintah MOV :
MOV tujuan_salin, asal_salin
Pada perintah diatas kita akan menyalin atau lebih tepatnya “mengisi” register AX (lebih dikenal dengan register akumulator 16 bit) dengan bilangan heksa 4c00.
Sedangkan perintah INT 21h berarti kita menjalankan interrupt sistem dengan fungsi 21h.
Tugas
1. Buatlah program COM yang menampilkan teks ‘www.SrOer.OrG’!
Petunjuk :
– GUnakan variabel sebagai penyimpan teks, contoh :
teks db 13,13,’stringcoba’,’$’

Input / Output

Input/Output (I/O) adalah bagian dari sistem mikroprosesor yang digunakan oleh mikroprosesor itu untuk berhubungan dengan dunia luar. Unit input adalah unit luar yang digunakan untuk memasukkan data dari luar ke dalam mikroprosesor ini, contohnya data yang berasal dari keyboard atau mouse. Sementara unit output biasanya digunakan untuk menampilkan data, atau dengan kata lain untuk menangkap data yang dikirimkan oleh mikroprosesor, contohnya data yang akan ditampilkan pada layar monitor atau printer.
Beberapa contoh input
ALAT INPUT LANGSUNG
–          Keyboard
–          Pointing device contoh mouse, ligh pen, digitizer graphic tablet
–          Scanner, contoh micr, magnetic strip, optical data reader(ocr reader, ocr tag reader, bar code wand, omr reader)
–          Sensor, contoh camera
–          Voice recognizer atau speech recognizer
ALAT INPUT TAK LANGSUNG
–          Key to card
–          Key to tape
–          Key to disk
Beberapa contoh output
HARD COPY DEVICE
–          Berupa alat yang digunakan untuk mencetak tulisan serta image pada media kertas seperti kertas, plastic atau film.
–          Contoh: printer, plotter, computer output to microfilm (com)
SOFT COPY DEVICE
–          Berupa alat yang dignakan untuk menampilkan tulisan serta image pada media lunak yang berupa signal elektronik.
–          Contoh: video display (CRT), flat panel display (LCD), seaker
DRIVE DEVICE
–           Berupa alat yang digunakan untuk merekam symbol dalam bentuk yang hanya dapat dibaca oleh mesin dan berfungsi sebagai alat input maupun output.
–          Contoh : disk drive, tape drive, optical drive, CD-ROM.

Daftar Instruksi Bahasa Assembly

Dalam program bahasa assembly terdapat 2 jenis yang kita tulis dalam program:
1. Assembly Directive (yaitu merupakan kode yang menjadi arahan bagi assembler/compiler untuk menata program)
2. Instruksi (yaitu kode yang harus dieksekusi oleh CPU mikrokontroler dengan melakukan operasi tertentu sesuai dengan daftar yang sudah tertanam dalam CPU) 
Daftar Assembly Directive 
Assembly DirectiveKeterangan
EQUPendefinisian konstanta
DBPendefinisian data dengan ukuran satuan 1 byte
DWPendefinisian data dengan ukuran satuan 1 word
DBITPendefinisian data dengan ukuran satuan 1 bit
DSPemesanan tempat penyimpanan data di RAM
ORGInisialisasi alamat mulai program
ENDPenanda akhir program
CSEGPenanda penempatan di code segment
XSEGPenanda penempatan di external data segment
DSEGPenanda penempatan di internal direct data segment
ISEGPenanda penempatan di internal indirect data segment
BSEGPenanda penempatan di bit data segment
CODEPenanda mulai pendefinisian program
XDATAPendefinisian external data
DATAPendefinisian internal direct data
IDATAPendefinisian internal indirect data
BITPendefinisian data bit
#INCLUDEMengikutsertakan file program lain

Daftar Instruksi 
InstruksiKeterangan Singkatan
ACALLAbsolute Call
ADDAdd
ADDCAdd with Carry
AJMPAbsolute Jump
ANLAND Logic
CJNECompare and Jump if Not Equal
CLRClear
CPLComplement
DADecimal Adjust
DECDecrement
DIVDivide
DJNZDecrement and Jump if Not Zero
INCIncrement
JBJump if Bit Set
JBCJump if Bit Set and Clear Bit
JCJump if Carry Set
JMPJump to Address
JNBJump if Not Bit Set
JNCJump if Carry Not Set
JNZJump if Accumulator Not Zero
JZJump if Accumulator Zero
LCALLLong Call
LJMPLong Jump
MOVMove from Memory
MOVCMove from Code Memory
MOVXMove from Extended Memory
MULMultiply
NOPNo Operation
ORLOR Logic
POPPop Value From Stack
PUSHPush Value Onto Stack
RETReturn From Subroutine
RETIReturn From Interrupt
RLRotate Left
RLCRotate Left through Carry
RRRotate Right
RRCRotate Right through Carry
SETBSet Bit
SJMPShort Jump
SUBBSubtract With Borrow
SWAPSwap Nibbles
XCHExchange Bytes
XCHDExchange Digits
XRLExclusive OR Logic


untuk yang lebih jelas dan detil:
a. MOV
Perintah MOV adalah perintah untuk mengisi, memindahkan,memperbaruhi isi suatu register, variable ataupun lokasi memory, Adapun tata penulisan perintah MOV adalah :
MOV [operand A], [Operand B]
Contoh :
MOV AH,02
Operand A adalah Register AH
Operand B adalah bilangan 02
Hal yang dilakukan oleh komputer untuk perintah diatas adalahmemasukan 02 ke register AH.

b. INT (Interrupt)
Bila anda pernah belajar BASIC, maka pasti anda tidak asing lagi dengan perintah GOSUB. Perintah INT juga mempunyai cara kerja yang sama dengan GOSUB, hanya saja subroutine yang dipanggil telah disediakan oleh memory komputer yang terdiri 2 jenis yaitu :
- Bios Interrupt ( interput yang disediakan oleh BIOS (INT 0 – INT 1F))
- Dos Interrupt ( Interrupt yang disediakan oleh DOS (INT 1F – keatas))

c. Push
Adalah perintah untuk memasukan isi register pada stack, dengan tata penulisannya:POP [operand 16 bit]

d. Pop
perintah yang berguna untuk mengeluarkan isi dari register/variable dari stack,dengan tata penulisannya adalah : POP [operand 16 bit]

e. RIP (Register IP)
Perintah ini digunakan untuk memberitahu komputer untuk memulai memproses program dari titik tertentu.

f. A (Assembler)
Perintah Assembler berguna untuk tempat menulis program Assembler.
-A100
0FD8:100

g. RCX (Register CX)
Perintah ini digunakan untuk mengetahui dan memperbaruhi isi register CX yang merupakantempat penampungan panjang program yang sedang aktif

Diagram Alir (Flow Chart)



Flowchart adalah algoritma penyelesaian suatu masalah yang diwujudkan dalam bentuk penggambaran bagan, dimana dalam bagan tersebut memiliki kandungan aliran data yang lebih menggambarkan langkah-langkah penyelesaian suatu masalah. Terdapat 2(dua) penggambaranFlowchart yaitu System Flowchart dan Program Flowchart.

Flowchart dapat digunakan untuk menggambarkan perilaku suatu algoritma (dengan menggunakan gambar-gambar atau tanda-tanda yang sesuai) Bila suatu flowchart lengkap telah selesai dikerjakan, gambaran lengkap tentang proses pemikiran seorang programmer dalam memecahkan suatu masalah dapatlah diikuti. Peranan flowchart sangat penting terutama pada pemeriksaan program. Flowchartyang merupakan bagian penting dalam suatu program yang telah selesai juga dapat membantu orang lain dalam memahami algoritma yang tepat yang dibuat programmer.

Ada dua jenis flowchart, yaitu:

a. Flowchart sistem: menunjukkan jalannya program secara umum.

b. Flowchart terperinci: rincian (detail) yang dibutuhkan programer.

Biasanya suatu program yang rumit didahului dengan flowchart sistem, lalu dilengkapi pula dengan.flowchart terperinci. Keuntungan dari flowchart ialah dapat menunjukkan urutan langkah-langkah dengan menggunakan simbol anak panah.



a. Flowchart Sistem

Digunakan untuk menggambarkan aliran data atau informasi secara garis besarnya yang melewati suatu tahapan proses dalam sebuah sistem dengan menunjukkan media yang digunakan dalam sistem. Seperti media input, output maupun media penyimpanan dalam proses pengolahan data.

Adapun simbol yang digunakan meliputi:





Gambar 1. Simbol flowchart sistem



b, Flowchart Program

Digunakan untuk menggambarkan aliran data atau informasi secara rinci yang melewati suatu tahapan proses dengan menunjukkan tahapan penyelesaian permasalahan untuk mendapatkan hasil sesuai tujuan yang diharapkan.

Adapun simbol yang digunakan adalah sebagai berikut:



Gambar 2. Simbol Flowchart Umum

Sebuah flowchart minimal umumnya terdiiri dari simbol mulai yang menggambarkan bahwa sebuah algoritma dimulai, dilanjutkan dengan masukan data, selanjutnya data diproses kemudian hasil proses dikeluarkan dan diakhiri dengan simbol akhir dari aliran program.

Gambar 3 adalah contoh flowchart sederhana penyelesaian bertahap untuk menghitung luas sebuah bangun segi empat, dimana bangun tersebut memiki panjang = p dan lebar = l, dimana luas = p x l :

Menghitung luas bangun ternyata tidak hanya sebuah bangun yang bisa dilakukan dalam program, dengan menambahkan menu pilihan ternyata dapat dipilih untuk menghitung beberapa luas bangun dari bidang tertentu.

Jika sebuah algoritma membutuhkan alternatip pilihan maka dibutuhkan simbol percabangan, sebagai contoh sebuah sistem program harus melakukan layanan perhitungan luas bangun segi empat, luas bangun segi tiga dan luas bangun lingkaran.

Gambar 3. Flowchart Sederhana (menghitung luas)

Dengan demikian maka terdapat pilihan alternatip (gambar 4), jika dipilih 1 maka digunakan untuk menghitung luas bidang segi empat, untuk pilihan 2 digunakan menghitung luas bangun segi tiga dan untuk pilihan 3 digunakan untuk menghitung luas bangun lingkaran, maka flowchart-nya dapat digambarkan sebagai berikut:



Gambar 4 Simbol Flowchart Program Pilihan



Aliran program dimulai, kemudian memberi kesempatan pada user untuk memberikan masukan berupa angka 1 atau angka 2 atau angka 3, jika angka tersebut adalah 1 maka akan diteruskan pada proses menghitung luas bangun segi empat.

Jika ternyata angka yang diberikan adalah 2 maka akan diteruskan pada proses menghitung luas bangun segi tiga, dan juika ternyata angka yang diberikan adalah 3 maka akan diteruskan pada proses menghitung luas bangun lingkaran.

Suatu saat dibutuhkan sebuah algoritma untuk menggambarkan suatu proses yang berulang, misal pada suatu program dibutuhkan sebuah rutin yang berfungsi sebagai penghitung (counter). Untuk itu flowchartnya dapat digambarkan sebagai berikut:







Gambar 5. Flowchart Untuk Proses Diulang



Dalam membuat algoritma untuk pemrograman mikroprosesor dalam bahasa asembler biasanya notasi yang digunakan dalam flowchart menggunakan kode-kode, berikut contoh flowchart dengan notasi kode:





Gambar 6. Flowchart Dengan Notasi Kode Program.



Contoh permasalahan 3:

Mengisi akkumulator dengan data 15H, register D dengan data EAH dan register B dengan data 55H. Tambahkan isi akku dengan isi register D. Hasil penjumlahan diatas bersama carrynya di kurangi dengan isi register B.



Penyelesaian (Flowchart)





Contoh permasalahan 4:

Mengeluarkan data FFH dan 00H dengan tunda waktu FFHxFFH program berlangsung terus, sampai pada penekanan tombol reset. Program utama pada 1800H Program bagian pada 1F00H



Penyelesaian (algoritma-narasi)



Ø Program Utama

Alamat register kontrol 43 H

Alamat Port C 42 H

Kata kendali : 80 H ( Port A, B dan C = keluaran )

Mengisi akku dengan data kata kendala ( 80 H )

Keluarkan isi akku ke register kontrol

loop ( pengulangan tak berakhir )

isi akku dengan data FFH

keluarkan isi akku ke register port C tinggi

panggil tunda waktu

isi akku dengan data 00 H

keluarkan isi akku ke register port C tinggi

panggil tunda waktu



Ø program bagian tunda waktu

isi register H dengan data FFH

loop 1

isi register L dengan data FFH

loop 2

kurangkan isi L dengan 1

loncat ke loop 2, bila LF 0

kurangkan isi H dengan 1

loncat ke loop 1, bila HF 0

mengakhiri program bagian (kembali ke program utama)



KESIMPULAN:

Ø Dalam menyusun program aplikasi pada sebuah hardware mikroprosesor, seharusnya diawali dengan penyusunan algoritma.

Ø Sebuah program aplikasi merupakan cara menyusun berbagai instruksi-instruksi berdasarkan urutan logika tertentu untuk memenuhi kebutuhan.

Ø Algoritma dapat digunakan untuk menyelesaikan berbagai masalah, karena untuk membangun sebuah program aplikasi diperlukan sebuah bahasa pemrograman yang disebut dengan bahasa assembly, melalui bahasa ini instruksi disusun dalam urutan sekuensial mengikuti tata aturan dan konsep yang terstruktur.

Ø Konsep algoritma pemrograman dapat dituangkan dalam bentuk diagram alir (flowchart).

Kamis, 03 Maret 2016

DASAR KOMPONEN MIKROPROSESOR

Ditinjau dari struktur dan fungsinya tubuh manusia terdiri dari berbagai macam organ misal jantung, hati, kepala, kaki, tangan dan  organ tubuh lainnya yang kesemuanya membentuk sebuah sistem tubuh, setiap komponen atau organ tubuh tersebut memiliki fungsi masing-masing dalam membentuk sistem tubuh dan dapat bekerja saling berhubungan satu ama lainnya.

Bagaimana proses dan dari mana sumber yang membuat setiap gerak atau kerja organ, dunia medis menjelaskan bahwa kerja atau gerak organ tubuh manusia selalu diawali adanya instruksi atau perintah dari otak berupa sinyal listrik yang dikirimkan melalui jalur kendali menuju organ yang diperintahkan untuk melaksanakan gerak. Setiap kerja atau gerak organ melalui sinyal peritah dan
gerak organ satu dengan lainnya juga selalu ada sinkronisasi.

Tanpa adanya instruksi atau perintah dari otak maka organ yang dibentuk dari sel tidak bekerja, begitu juga jika ada kegagalan instruksi dari otak akan membuat organ tidak bekerja sesuai yang diharapkan misal terjadi pada orang sakit stroke.  Seperti diketahui organ tubuh manusia mampu bekerja selama 24 jam terus menerus, dari kenyataan tentang kerja organ tubuh manusia maka
sudah seharusnya kita bersyukur dan mau mengakui keagunganNYA.

Dalam bab sebelumnya juga dijelaskan tentang arsitektur sistem mikroprosesor yang dikembangkan mengikuti pola tubuh manusia, yaitu sistem dibuat dengan membentuk organ-organ yang sering istilahnya disebut dengan komponen. Setiap komponen pembentuk sistem mikroprosesor dibangun dari rangkaian-rangkaian gerbang digital, antar komponen dihubungkan dengan sistem jalur
data (Data BUS), untuk menunjuk komponen digunakan jalur alamat (Address Bus) dan untuk sinkronisasi kerja antar komponen digunakan jalur kontrol (Control Bus). Seperti pada tubuh manusia pada sistem mikroprosesor untuk  memanfaatkan atau memfungsi komponen dilakukan melalui instruksi atauperintah yang dikirim dari pusat pengolah yang disebut Arithmatic Logic Unit.

Pengertian instruksi atau perintah dalam bahasa asembler terdiri dari susunan kode biner yang membentuk tata cara dan tata kelola operasi hardware mikroprosesor, kode biner digunakan sebagai dasar pembentuk instruksi dengan alasan bahwa sebuah mikroprosesor secara hardware hanya mengenali dua kondisi yaitu nol dan satu.

Seperti dijelaskan pada bab sebelumnya bahwa secara struktur mikroprosesor dibangun dari sekian banyak transistor yang berfungsi sebagai saklar elektronik, sedangkan saklar elektronik hanya kenal on /off atau buka/tutup.

Banyaknya instruksi per satuan waktu biasanya diukur dalam detik (instructions per second (IPS)) adalah sebuah ukuran kecepatan proses dari prosesor sebuah komputer. IPS ditentukan berdasarkan kecepatan maksimum yang dicapai oleh sebuah prosesor dalam melaksanakan instruksi untuk setiap detiknya, hal tersebut juga dijadikan patokan pengukuran kecepatan operasi sebuah aplikasi
karena antara satu aplikasi dengan aplikasi lainnya memiliki kecepatan yang berbeda.

Bagi pengguna bahasa mesin dengan kode biner sangat merepotkan, untuk lebih sederhana dalam mengenali instruksi dengan bilangan biner dikodekan ke dalam bilangan heksadesimal yang dikenal dengan bahasa mesin.  
Dengan demikian dapat mempermudah bagi pengguna untuk mengenali instruksi yang digunakan, namun demikian masih banyak kendala dalam melakukan intepretasi terhadap kode instruksi tersebut yang disebabkan beberapa instruksi ternyata dikodekan lebih dari satu bilangan heksadesimal.

Instruksi Mikroprosesor

Sebuah hardware mikroprosesor tidak akan dapat berfungsi apabila tidak dilengkapi dengan instruksi-instruksi, karena melalui instruksi inilah komponen-komponen sebuah mikroprosesor dikendalikan. Agar mikroprosesor dapat digunakan untuk memenuhi keperluan dari kendali peralatan rumah tangga, sistem keamanan mobil dan rumah sampai pada sistem kendali di bidang militer dan bidang industri, diperlukan susunan instruksi secara sekuensial sehingga dapat berfungsi sebagai penggerak fungsi kendali.
Sedangkan instruksi sistem mikroprosesor dituliskan dalam bahasa yang disebut dengan bahasa assembly, sehingga dengan memahami instruksi dan menyusunnya dalam urutan sekuensial akan dapat digunakan Untuk dapat menerapkan instruksi pada sistem mikroprosesor perlu memahami deskripsi setiap instruksi, operasi untuk menunjang fungsi instruksi terkait dengan sistem hardware
mikroprosesor.