Langsung ke konten utama

Cara Kerja Komputer dan Assembler Menggunanakan NASM

Mempelahjari Bagaimana Cara Kerja Komputer dan Belajar Assembler Menggunanakan NASM

    Komputer merupakan perangkat listrik dimana kosakata bahasanya hanya ON yang dilambangkan angka 1 dan OFF yang dilambangkan angka 0. Dimana angka biner 0 artinya arus listrik diputus, sedangkan 1 artinya arus listrik tersambung.

    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.

Bagaimana Cara Kerja Komputer Menampilkan (Output) "Hello World"?

    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.

Kalau INPUT sekaligus OUTPUT bagaimana? Ini analoginya.
Seandainya alur input dan output tadi diprogramkan dengan assembler bagaimana?
Kalau program itu di terjermahkan ke kode mesin (compile) dan dijalankan (run), maka hasilnya seperti ini:

    Jadi yang dimaksud bahasa pemrograman itu adalah serangkaian instruksi untuk mengoperasikan perangkat komputer khususnya REGISTER dan INTERRUPT. Jenis instruksinya apa?

  1. Instruksi INPUT (membaca data dari keyboard, mouse, transmisi input dari jaringan, dan perangkat input lain) dan menyimpan data tadi ke RAM (Random Access Memory),
  2. Instruksi PROSES (operasi aritmatika, percabangan, perulangan, dan proses-proses lainnya) dan
  3. 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