Mempelahjari Bagaimana Cara Kerja Komputer dan Belajar Assembler Menggunanakan NASM
Jaman dahulu, pada saat komputer generasi awal dibuat, teknologinya yang ada masih menggunakan tabung vakum. Sehingga 1 unit komputer merk Electronic Numerical Integrator and Computer (ENIAC), dibuat dari 18.000 tabung vakum, 70.000 resistor dan 5 juta titik solder. Komputer ENIAC ini setidaknya butuh ruang 500 meter persegi atau hampir seluas lapangan sepak bola. berbeda dengan saat ini yang ukurannya sudah sangat kecil.
Bagaimana
Cara Kerja Komputer?
Komputer
tidak menyimpan karakter sebagai karakternya sendiri, juga tidak ada gambar dan
huruf yang tersimpan di harddisk komputer kita. Sebaliknya, setiap karakter
dikodekan sebagai rangkaian bit biner : 1 dan 0
Misalnya
kode huruf "A" adalah 01000001. Tapi bagaimana komputer mengetahui
bahwa 01000001 berarti huruf "A"? Pengkodean pada komputer ini
berawal dari kode ASCII (American Standar Code for Information
Interchange). Cara kerjanya memproses karakter sebagai kelompok digit
biner. Jadi sebenarnya para perangkat komputer itu terdiri dari serangkaian
sirkuit saklar listrik, dimana masing-masing saklar sirkuit tadi dikondisikan
mana yang ON dan mana yang OFF. Kombinasi dari ON dan OFF itulah yang akhirnya
di-standarisasi menjadi karakter tertentu. Setiap 8 kumpulan kombinasi sirkuit
saklar, melambangkan 1 karakter tertentu.
Masih sulit membayangkan? oke ini saya kasih analogi sederhana, saya umpamakan serangkaian instruksi tadi seakan-akan seperti mengalirkan air dari tandon ke bak kamar mandi
Bagaimana Cara Kita Merancang Serangkaian Intruksi "Hello World" Tadi?
Rancangan
Tadi Bisa Ditulis Dalam Bentuk Flowchart atau Pseudocode
Pemrograman
"aliran_air" dengan Assembly
Dari
Pseudo code ini, kalau dituliskan ke bahasa pemrograman assembler, dan program
tersebut dieksekusi, maka hasil programnya terlihat pada gambar berikut
ini.
Bahasa
Assembly versus Kode Mesin
Bahasa
assembler/assembly merupakan bahasa mnemonic dari instruksi mesin komputer.
Jadi bahasa assembler itu susunan perintahnya bisa dikatakan sama persis dengan
instruksi pada mesin komputer. Untuk membuktikan struktur instruksi pada mesin
komputer dengan struktur bahasa assembler, bisa dilihat pada gambar berikut
ini
Sampai disini kan baru proses OUTPUT ya. Bagaimana dengan INPUT? Jadi misalkan kita mengentikkan sesuai dari keyboard? Analoginya seperti gambar yang diatas ini.
Ada yang menarik diisini, antara input dengan output itu register yang digunakan hanya 1 (satu) ya. Jadi register
EAX, EBX, ECX dan EDX tadi ya cuman
satu saja, tapi gimana caranya hanya dengan satu register, tapi bias digunakan untuk INPUT sekaligus OUTPUT.
Berarti register tadi kita operasikan
secara bergantian. Jadi
kalau dianalogikan dengan aliran air tadi, gimana caranya air dari sumber air sampai ke kamar mandi itu hanya
menggunakan 2 pipa, 1 kran, 1
bak kontrol dan 1 tandon.
Jadi yang dimaksud bahasa
pemrograman itu adalah serangkaian instruksi untuk
mengoperasikan perangkat komputer khususnya REGISTER dan INTERRUPT. Jenis instruksinya apa?
- Instruksi INPUT (membaca data dari keyboard, mouse, transmisi input dari jaringan, dan perangkat input lain) dan menyimpan data tadi ke RAM (Random Access Memory),
- Instruksi PROSES (operasi aritmatika, percabangan, perulangan, dan proses-proses lainnya) dan
- Instruksi OUTPUT (menampilkan data ke monitor, printer, transmisi output jaringan dan perangkat output lainnya)
Dimana serangkaian instruksi tersebut bisa menggunakan standar Bahasa mesin (low level language) atau bahasa tingkat menengah (middle level language) atau bahasa tingkat tinggi (hight level language)
- Low Level Language : Assembler/assembly
- Middle Level Language : C/C++
- Hight Level Language : Java, Python, Rust, .Net dsb
Komentar
Posting Komentar