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

Postingan populer dari blog ini

Membuat Halaman CheckOut Dengan NextJS & Bulma

Apa itu Next.js?  Next.js merupakan sebuah React framework yang dibentuk buat mengatasi kasus client-side rendering yang dimiliki React. Sebuah halaman website yang dibentuk memakai React ‘terasa ringan’ lantaran tampilan website sangat interaktif.  Selain itu, ketika data berubah, React menggunakan efisien akan mengupdate bagian menurut halaman website yang memang perlu diupdate tanpa perlu reload satu halaman penuh.  Untuk menerima itu seluruh, client wajib load seluruh file JavaScript sebelum konten halaman ditampilkan. apabila file JS relatif akbar maka ketika yang diperlukan buat load pertama kali pula sebagai lebih lama.  Masalah lain menurut client-side rendering merupakan SEO, terdapat kemungkinan web crawler berusaha mengindex halaman yang belum terselesaikan dirender sepenuhnya (lantaran ketika load yang lama). Dan menduga web tadi blank.  Kedua kasus diatas bisa diselesaikan menggunakan teknik pre-rendering. Yaitu halaman HTML dan file JavaScript pada...

Mengasah Keterampilan di HackerRank.com - Part 2 (If-Else)

HackerRank adalah platform yang bisa kita gunakan untuk mengasah kemampuan pemrograman kita. Selain pemrograman, kita juga bisa belajar tentang database, keamanan, sistem terdistribusi, dll. Jelas, semua ini ada hubungannya dengan pemrograman.  Di HackerRank, seperti kebanyakan juri online, kami dapat mengatasi banyak tantangan. Dari tingkat mudah hingga ahli. Ada begitu banyak tantangan yang tersedia sehingga kita tidak akan pernah bosan. Kompetisi atau kontes diadakan secara berkala dan beberapa di antaranya menawarkan harga yang menarik. buat kontes "kecil" kami menggunakan fungsi HackerRank.  Faktanya, masih ada langit di atas langit, jadi jangan pernah puas dengan pengetahuan yang telah kita peroleh. Terus tingkatkan dan kembangkan lagi, inilah tampilan pertama  HackerRank.com : Pada gambar diatas terdapat tampilan pertama HackerRank.com, pada halaman ini anda bisa memilih sesuai dengan kebutuhan yang saat ini dibutuhkan untuk bisnis atau developer, bagi anda yang in...

Pengembangan Konsep Algoritma Web Server Dinamis

Pengertian Flowchart Flowchart atau bagan alir adalah diagram yang menunjukkan langkah-langkah dan keputusan untuk menyelesaikan suatu proses dari suatu program. Setiap langkah direpresentasikan sebagai diagram dan dihubungkan oleh garis atau panah.  Flowchart memainkan peran penting dalam menentukan tahap atau fitur dari proyek pemrograman yang melibatkan banyak orang. Selain itu, dengan menggunakan diagram alur proses program akan lebih jelas, lebih ringkas, dan mengurangi risiko salah tafsir. cara menghubungkan kebutuhan teknis dan non-teknis.  Sebelum melanjutkan, saya ingin memberi tahu Anda sesuatu Di sini Anda dapat mempelajari lebih lanjut tentang diagram alur dalam Dicoding. Anda dapat menemukan materi ini dan belajar di Memulai Pemrograman Dasar untuk Menjadi Pengembang Perangkat Lunak. Fungsi Flowchart Fungsi utama dari flowchart adalah untuk memberikan gambaran tentang alur suatu program dari satu proses ke proses lainnya. Dengan cara ini, alur program menjadi muda...