Port Perangkat Keras I/O

Selasa, 22 Mei 2012

Nama : Muhammad Endry
NRP : 113040139


Tugas Mata Kuliah Sistem Operasi
Dosen : Yoseph Ismail S.T.


Subject Tugas :
Mencari Referensi mengenai alamat-alamat port perangkat keras I/O yang ada dalam Personal Computer.

Alamat-Alamat Port Perangkat Keras Input Output

Input/Output

Fungsinya adalah untuk memindahkan informasi antara CPU atau memori utama dengan dunia luar. 

I/O terdiri : 
  • Piranti l/O (peripheral) 
  • Pengendali I/O (device controller) 
  • Perangkat lunak 
Proses transfer informasi antara CPU dengan sebuah peripheral : 
  • Memilih I/O dan mengujinya.
  • Menginisialisasi transfer dan mengkoor­dinasikan pengaturan waktu operasi I/O.
  • Mentransfer informasi.
  • Menghentikan proses transfer. 
Klasifikasi piranti I/O terdiri 3 kelompok : 
  • Kelompok yang memasukkan informasi (input), contoh : keyboard, ADC, scanner.
  • Kelompok yang rnenampilkan informasi (output), contoh : VDU (monitor), printer.
  • Kelompok yang melayani input dan output, contoh : Floppy disk.
Port input/output

Port input/output adalah komponen yang menghubungkan mikroprosesor dengan perangkat luar (harddisk printer, keyboard, monitor, dll.). Jadi port disini berlaku sebagai “pintu” ke perangkat luar. Sebagaimana memori, port I/O juga bukan merupakan komponen tunggal (artinya ada banyak port di dalam sistem komputer) yang masing-masing diberi alamat tertentu. Dengan demikian mikroprosesor tahu, misalnya, ke mana untuk mengirim data ke printer, mengambil data dari mouse dsb.

Fungsi dan Jenis-Jenis Port Pada Komputer

Port merupakan colokan yang terpasang di bagian belakang case yang berfungsi sebagai penghubung antara komponen di dalam unit system dengan piranti diluar, sebagai contoh, port untuk menghubungkan camera digital, monitor, mouse dsb.

Port dibagi menjadi 2, yaitu : 
  • Port fisik,adalah soket atau slot atau colokan yang ada di belakang CPU sebagai penghubung peralatan input-output komputer, misalnya Mouse,keyboard,printer…dll.
  • Port Logika (non fisik),adalah port yang di gunakan oleh Software sebagai jalur untuk melakukan koneksi dengan komputer lain, tentunya termasuk koneksi internet. 

Berikut yang termasuk dalam Port Fisik :



  • Port Serial
Biasa digunakan untuk melakukan tranmisi data yang beroreintasi pada pengiriman sebuah bit per waktu, kareana sifatnya demikian pegiriman data berjalan agak lambat, biasanya digunakan untuk mengoneksi piranti seperti : printer, mouse, modem, PLC (programmable Logic controller), pembaca kartu maknetik dan pembaca barcode. Port ini sering dinyatakan dengan nama COM. Konektor yang digunakan adalah RS-232C dengan 9 pin atau 25 pin.
  • Port Parallel
Port Parallel atau sering disebut port LPT bekerja atas dasar 8 bit perwaktu, cocok untuk pengiriman data dengan cepat, tetapi dengan kabel yang pendek (tidak lebih dari 15 kaki). Umumnya digunakan untuk printer parallel, hard disk eksternal dan zip drive. Konektor yang digunakan adalah DB-25 yang terdiri dari 25 pin.
  • PS / 2 
Port ini disebut dengan port serial type 2 yang digunakan untuk menghubungkan keyboard dan mouse. Untuk port keyboard berwarna ungu dan untuk port mouse berwarna hijau.
  • Port USB
Port USB merupakan port yang akhir-akhir ini sangat populer digunakan, yang dapat digunakan untuk menghubungkan berbagai piranti seperti camera digital, printer, scanner, zip drive dan sebagainya, port ini mempunyai kecepatan tinggi bila dibandingkan dengan port serial maupun port paralel.
  • Port SCSI
Port SCSI adalah Small Compter System Interface yang merupakan jenis port yang memungkinkan koneksi antar piranti dalam bentuk sambung menyambung. Port mempunyai kecepatan tinggi, dengan kecepatan tranfernya 32 bit per waktu, biasa digunakan untuk menghubunkan hard drive, scanner, printer dan tape drive, konektor yang digunakan adalah DB-25 dan 50 pin Centronics SCSI. 
  • Port Infra Merah
Port ini digunakan untuk mendukung hubungan tanpa kabel, misalnya untuk menghubungkan mouse yang menggunakan infra merah sebagai media tranmisi, mengirim data dari ponsel, dan sebagainya.
  • Port-Port Lain
Banyak port lain yang tidak tergolong pada port-port diatas, misalnya port untuk monitor, port keyboard, port mouse, port speaker, port jaringan, port home theater, dll.

Gambar Port Pada PC

Keterangan : 
  1. Port power supply kabel power listrik
  2. Port ps/2 mouse
  3. Port ps/2 keyboard
  4. Port USB
  5. Port serial
  6. Port parallel
  7. Port video (monitor)
  8. Port parallel
  9. Port network
  10. Port sound card (line in, out, mic)
  11. Port serial
  12. Port modem line telepon 
Alamat Port


Port Paralel mempunyai 3 alamat. 3BCH ialah alamat dasar yang diperkenalkan sejak munculnya port Paralel pada kartu video yang kemudian tidak digunakan lagi . LPT1 ialah line printer dengan alamat 378h, lalu LPT2 dengan alamat 278H meskipun alamat ini dapat dirubah. Saat ini, alamat 378H dan 278H umumnya digunakan sebagai alamat port Paralel .
  • 3BCH – 3BFH
Digunakan untuk paralel port di kartu video,tidak mendukung alamat ECP 
  • 378H – 37FH
Alamat untuk LPT 1
  • 278H – 27FH
Alamat untuk LPT 2 

Setelah diketahui alamat dari port parallel, maka dapat ditentukan alamat DP (Data Printer), PC (Printer Control) dan PS (Printer Status).

1. DATA PORT (DP)

Data Port digunakan untuk mengirim data yang harus dicetak oleh printer.Alamat DP adalah base address dari port parallel tersebut.

2. PRINTER CONTROL (PC)

Printer Control digunakan untuk mengirimkan kode-kode kontrol dari komputer ke printer, misalnya kode kontrol untuk menggulung kertas. Alamat PS adalah (base address + 1).

3. PRINTER STATUS (PS)

Printer Status digunakan untuk mengirimkan kode-kode status printer ke komputer, seperti untuk menginformasikan kertas telah habis. Alamat PC adalah (base address +2).

List dibawah adalah tabel alamat untuk DP, PC dan PS dengan LPT mempunyai base address 378h

1. LPT1 DP = Alamat Register 378h / 888

2. LPT1 PS = Alamat Register 379h / 889

3. LPT1 PC = Alamat Register 37Ah / 890

Ketika komputer dihidupkan, BIOS (Basic Input/Output System) akan menentukan jumlah port yang anda miliki dan mengeset nama LPT1, LPT2 & LPT3 ke masing-masing port tersebut. BIOS pertama kali mencari alamat 3BCH. Jika parallel port ditemukan di sana,BIOS akan mengeset dengan nama LPT1, lalu mencari alamat lainnya yaitu 378H.

Dan berikut yang termasuk dalam Port Non Fisik :

· Port 80, Web Server
Port ini biasanya digunakan untuk web server, jadi ketika user mengetikan alamat IP atau hostname di web broeser maka web browser akan melihat IP tsb pada port 80.

· Port 81, Web Server Alternatif
ketika port 80 diblok maka port 81 akan digunakan sebagai port altenatif hosting website.

· Port 21, FTP Server
Ketika seseorang mengakses FTP server, maka ftp client secara default akan melakukan koneksi melalui port 21 dengan ftp server.

· Port 22, SSH Secure Shell
Port ini digunakan untuk port SSH.

· Port 23, Telnet
Jika anda menjalankan server telnet maka port ini digunakan client telnet untuk hubungan dengan server telnet.

· Port 25, SMTP(Simple Mail Transport Protokol)
Ketika seseorang mengirim email ke server SMTP anda, maka port yg digunakan adalah port 25.

· Port 2525 SMTP Alternate Server
Port 2525 adalah port alternatifi aktif dari TZO untuk menservice forwarding email. Port ini bukan standard port, namun dapat diguunakan apabila port smtp terkena blok.

· Port 110, POP Server
Jika anda menggunakan Mail server, user jika log ke dalam mesin tersebut via POP3 (Post Office Protokol) atau IMAP4 (Internet Message Access Protocol) untuk menerima emailnya, POP3 merupakan protokol untuk mengakses mail box.

· Port 119, News (NNTP) Server

· Port 3389, Remote Desktop
Port ini adalah untuk remote desktop di WinXP.

· Port 389, LDAP Server
LDAP Directory Access Protocol menjadi populer untuk mengakses Direktori, atau Nama, Telepon, Alamat direktori. Contoh untuk LDAP: / / LDAP.Bigfoot.Com adalaha LDAP directory server.

· Port 143, IMAP4 Server
IMAP4 atau Pesan Akses Internet Protocol semakin populer dan digunakan untuk mengambil Internet Mail dari server jauh.Disk lebih intensif, karena semua pesan yang disimpan di server, namun memungkinkan untuk mudah online, offline dan diputuskan digunakan.

· Port 443, Secure Sockets Layer (SSL) Server
Ketika Anda menjalankan server yang aman, SSL Klien ingin melakukan koneksi ke server Anda Aman akan menyambung pada port.

· 443. This port needs to be open to run your own Secure Transaction server.
Port 445, SMB over IP, File Sharing
Kelemahan windows yg membuka port ini. biasanya port ini digunakan sebagai port file sharing termasuk printer sharing, port inin mudah dimasukin virus atau worm dan sebangsanya.

· Ports 1503 and 1720 Microsoft NetMeeting and VOIP
MS NetMeeting dan VOIP memungkinkan Anda untuk meng-host Internet panggilan video atau lainnya dengan.

· Port 5631, PCAnywhere

· Port 5900, Virtual Network Computing (VNC)
Bila Anda menjalankan VNC server remote kontrol ke PC Anda, menggunakan port 5900. VNC berguna jika anda ingin mengontrol remote server.

· Port 111, Portmap

· Port 3306, Mysql

· Port 981/TCP

Referensi :

http://www.google.co.id/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&ved=0CGgQFjAI&url=http%3A%2F%2Fricky.staff.gunadarma.ac.id%2FDownloads%2Ffiles%2F21942%2F7%2BINPUT%2BOUTPUT.doc&ei=5pm7T-fPNMn4rQfN7o2ACA&usg=AFQjCNGpi7g6pslPruSOzV5IbbCUfZvATg&sig2=b5Q6GdQod9vMsiOJDcC8mw

http://katrokz.blogspot.com/2010/10/jenis-jenis-port-komputer-dan-fungsinya.html

http://www.ruzman.co.tv/2009/07/macam-macam-port.html

http://tiksmadangawi.blogspot.com/2010/05/port-pada-komputer.html

Systems Call

Kamis, 05 April 2012

Nama : Muhammad Endry
NRP : 113040139


Tugas Mata Kuliah Sistem Operasi
Dosen : Yoseph Ismail S.T.
Subjek Tugas :
Mencari kategori-kategori dari systems call dan macam-macam systems call, serta bagaimana tiap fungsi systems call digunakan dalam sistem operasi.
Komputer digunakan untuk melakukan suatu proses yang dikehendaki user. Oleh karena itu harus ada suatu bentuk komunikasi antara user dan hardware. Komunikasi itu terjadi dalam bentuk system calls. SO melaluishell-nya akan menangkap perintah dari user yang kemudian akan dikomunikasikan melalui system calls. Disinilah peran SO sebagai jembatan komunikasi antara user dan hardware itu terjadi. System calls itu sendiri umumnya ditulis dalam bahasa C dan C++.

Mengenai shell, shell itu sendiri secara umum adalah layer yang berfungsi sebagai interface antara user dan inti dalam sistem operasi (kernel). Melalui shell, user dapat memberi perintah-perintah yang akan dikirim ke sistem operasi, sehingga shell ini merupakan layer yang menerima interaksi dari user secara langsung. Shell dalam SO secara umum dibagi menjadi 2, Command Line(CLI) dan Graphical(GUI). Jadi dengan kata lain,system calls berperan sebagai interface dalam layanan-layanan yang disediakan oleh sistem operasi.

Untuk lebih jelasnya lihat gambar berikut. Contoh di atas adalah sytem calls di dalam program yang membaca data dari satu file lalu meng- copy-nya ke file lain. 

Gambar Contoh System Call  









Jenis System Calls

Berikut ini adalah tipe system call:
  • Manajemen Proses. System call untuk manajemen proses diperlukan untuk mengatur proses-proses yang sedang berjalan. Kita dapat melihat penggunaan system calls untuk manajemen proses pada Sistem Operasi Unix. Contoh yang paling baik untuk melihat bagaimana system call bekerja untuk manajemen proses adalah Fork. Fork adalah satu satunya cara untuk membuat sebuah proses baru pada sistem Unix.
  • Manajemen Berkas. System calls yang berhubungan dengan berkas sangat diperlukan. Seperti ketika kita ingin membuat atau menghapus suatu berkas, atau ketika ingin membuka atau menutup suatu berkas yang telah ada, membaca berkas tersebut, dan menulis berkas itu. System calls juga diperlukan ketika kita ingin mengetahui atribut dari suatu berkas atau ketika kita juga ingin merubah atribut tersebut. Yang termasuk atribut berkas adalah nama berkas, jenis berkas, dan lain-lain. Ada juga system calls yang menyediakan mekanisme lain yang berhubungan dengan direktori atau sistem berkas secara keseluruhan. Jadi bukan hanya berhubungan dengan satu spesifik berkas. Contohnya membuat atau menghapus suatu direktori, dan lain-lain. 
  • Manajemen Piranti. Program yang sedang dijalankan kadang kala memerlukan tambahan sumber daya. Jika banyak pengguna yang menggunakan sistem dan memerlukan tambahan sumber daya maka harus meminta peranti terlebih dahulu. Lalu setelah selesai, penggunaannnya harus dilepaskan kembali dan ketika sebuah peranti telah diminta dan dialokasikan maka peranti tersebut bisa dibaca, ditulis, atau direposisi. 
  • System Call Informasi/Pemeliharaan. Beberapa system calls disediakan untuk membantu pertukaran informasi antara pengguna dan sistem operasi, contohnya adalah system calls untuk meminta dan mengatur waktu dan tanggal atau meminta informasi tentang sistem itu sendiri, seperti jumlah pengguna, jumlah memori dan disk yang masih bisa digunakan, dan lain-lain. Ada juga system calls untuk meminta informasi tentang proses yang disimpan oleh sistem dan system calls untuk merubah informasi tersebut. 
  • Komunikasi. Dua model komunikasi: 
    • Message-passing. Pertukaran informasi dilakukan melalui fasilitas komunikasi antar proses yang disediakan oleh sistem operasi. 
    • Shared-memory. Proses menggunakan memori yang bisa digunakan oleh berbagai proses untuk pertukaran informasi dengan membaca dan menulis data pada memori tersebut. Dalam message-passing, sebelum komunikasi dapat dilakukan harus dibangun dulu sebuah koneksi. Untuk itu diperlukan suatu system calls dalam pengaturan koneksi tersebut, baik dalam menghubungkan koneksi tersebut maupun dalam memutuskan koneksi tersebut ketika komunikasi sudah selesai dilakukan. Juga diperlukan suatu system calls untuk membaca dan menulis pesan (message) agar pertukaran informasi dapat dilakukan. 
Terdapat 3 (tiga) metode yang umum digunakan untuk melewatkan parameter antara program yang sedang berjalan dengan sistem opeasi yaitu :
  1. Melewatkan parameter melalui register.
  2. Menyimpan parameter pada tabel yang disimpan di memori dan alamat tabel tersebut dilewatkan sebagai parameter di register.
  3. Push (menyimpan) parameter ke stack oleh program dan pop (mengambil) isi stack yang dilakukan oleh system operasi.
Melewatkan parameter melalui tabel

Pada dasarnya System call dapat dikelompokkan dalam 5 kategori, yaitu :


1. Kontrol Proses
Hal-hal yang dilakukan:
  • Mengakhiri (end) dan membatalkan (abort);
  • Mengambil (load) dan eksekusi (execute);
  • Membuat dan mengakhiri proses;
  • Menentukan dan mengeset atribut proses;
  • Wait for time;
  • Wait event, signal event;
  • Mengalokasikan dan membebaskan memori.
Contoh: Sistem operasi pada MS-DOS menggunakan sistem singletasking yang memiliki command interpreter yang akan bekerja.
Sistem MSdos: (a) pada saat startup (b) pada saat running

Karena singletasking, maka akan menggunakan metode yang sederhana untuk menjalankan program dan tidak akan membuat proses baru.

UNIX menjalankan lebih dari satu proses

2. Manipulasi File
Hal-hal yang dilakukan:
  • Membuat dan menghapus file; 
  • Membuka dan menutup file; 
  • Membaca, menulis, dan mereposisi file; 
  • Menentukan dan mengeset atribut file; 
3. Manipulasi Device
Hal-hal yang dilakukan:
  • Meminta dan mmebebaskan device; 
  • Membaca, menulis, dan mereposisi file; 
  • Menentukan dan mengeset atribut device; 
4. Informasi Lingkungan
Hal-hal yang dilakukan:
  • Mengambil atau mengeset waktu atau tanggal; 
  • Mengambil atau mengeset sistem data; 
  • Mengambil atau mengeset proses, file atau atribut-atribut device; 
5. Komunikasi
Hal-hal yang dilakukan:
  • Membuat dan menghapus sambungan komunikasi; 
  • Mengirim dan menerima pesan; 
  • Mentransfer satus informasi; 
Ada 2 model komunikasi:
  1. Message-passing model. Informasi saling ditukarkan melalui fasilitas yang telah
  2. Shared-memory Model. Proses-proses menggunakan map memory untuk mengakses
Model komunikasi: (a) Message Passing (b) Shared Memory



Referensi :
http://bebas.ui.ac.id/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch06s04.html
lecturer.eepis-its.edu/~arna/.../2.Struktur%20Sistem%20Operasi.pdf

Mikroarsitektur dan Diagram Processor

Rabu, 07 Maret 2012

Tugas 1 Mata Kuliah Sistem Operasi
Dosen : Yoseph Ismail S.T.


Mengumpulkan informasi mengenai Mikroarsitektur dan Diagram Processor

Penjelasan arsitektur prosesor ini, diambil prosesor Intel Core sebagai contoh. Intel core adalah sebuah multi-core prosesor yang diperkenalkan oleh intel dalam kuartal 1 2006. Prosesor ini didasarkan pada versi perbaikan dari Yonah core dan dapat dipertimbangkan sebagai iterasi akhir dari mikroarsitektur P6, yang menjejakkan sejarahnya pada pentium pro yang dikenalkan pada 1995. Tingginya konsumsi dan intensitas panas dari prosesor berbasis NetBurst, mengakibatkan ketidakmampuan pada bertambahnya clock speed secara efektif, dan masalah lain seperti pipeline yang tidak efisien menjadi alasan utama intel meninggalkan mikroarsitektur NetBurst. Mikroarsitektur core dirancang oleh tim Intel Israel yang sebelumnya pernah merancang pentium M mobile processor.

Prosesor pertama yang menggunakan arsitektur ini diberi kode Merom, Conroe, dan Woodcest; Merom untuk komputasi mobile, Conroe untuk sistem desktop, dan Woodcest untuk server dan workstation. Sebenarnya secara arsitektur, ketiganya sama, ketiga prosesor ini berbeda pada socket yang digunakan, kecepatan bus, dan konsumsi tenaga. Prosesor berbasis Core ini dipasarkan dengan merk Pentium Dual-Core atau Pentium dan pasaran yang rendah dinamai Celeron; prosesor berbasis Core yang digunakan untuk server dan workstation dinamai Xeon, sementara prosesor berbasis Core untuk desktop dan mobile dinamai Core 2. Akan tetapi, meski terdapat prosesor yang nama pasarnya adalah Core Solo, Core Duo, dan Core i3/i5/i7, sebenarnya prosesor-prosesor tersebut tidak menggunakan mikroarsitektur Core.

Mikroarsitektur Core mengurangi clock rates dan meningkatkan penggunaan, baik pada clock cyce dan tenaga bila dibandingkan dengan mikroarsitektur NetBurst sebelumnya dari Pentium4. Mikroarsitektur Core menyediakan tahapan pembacaan sandi yang lebih efisien, unit eksekusi, cache, dan bus, mengurangi konsumsi tenaga dari CPU brand Core-2 dibandingkan dengan mengurangi kapasitas pemrosesannya.

Seperti CPU-CPU NetBurst sebelumnya, prosesor berbasis Core menonjolkan multiple Core dan sokongan perangkat keras virtualisasi (dipasarkan sebagai Intel VT-x), seperti Intel64 dan SSSE3. Bagaimanapun, prosesor berbasis Core tidak memiliki teknologi Hyper-Threading yang dapat ditemukan di prosesor Pentium 4. Hal ini karena mikroarsitektur Core adalah sebuah turunan dari mikroarsitektur P6 yang digunakan pada Pentium Pro, Pentium II, Pentium III, dan Pentium M tetapi semakin besar dari 32KB pada Pentium II/III menuju 64KB L1 cache/core (32 KB L1 Data + 32 KB L1 Instruction) pada Pentium M dan Core/Core 2. Mikroarsitektur Core juga memiliki kelemahan pada Cache L3 yang dapat ditemukan di Gallatin core dari Pentium 4 Extreme Edition, meskipun Cache L3 disajikan pada versi high-end dari prosesor berbasis Core Xeon. Baik pada Cache L3 dan Hyper-threading diperkenalkan kembali pada mikroarsitektur Nehalem.

Mikroarsitektur Intel Core dirancang dari awal, namun sama seperti filosofi mikroarsitektur Pentium M. pipeline-nya sepanjang 14 stages, kurang dari setengah Prescott, sebuah fitur signature dari urutan luas eksekusi core-core. Unit eksekusi core terdapat selebar 4 issue, dibandingkan dengan mikroarsitektur P6, Pentium M, dan NetBurst yang hanya 3-issue core. Arsitektur baru yang lain adalah rancangan dual core dengan Cache L1 yang terhubung dan Cache L2 yang dibagikan. Dirancang untuk performance maksimum per watt dan scalability yang dikembangkan.

Agar lebih jelas, berikut ini adalah gambaran mengenai mikroarsitektur Intel Core

Micro-Architecture - Merupakan arsitektur inti dari processor intel, yang menentukan desain, fitur dan performa processor secara keseluruhan. Umumnya Micro-architecture melambangkan generasi processor tersebut.

Tabel Micro-architecture Processor Intel Xeon

Processor
Micro-architecture
Intel Xeon 3200 series
Intel Core
Intel Xeon 3000 series
Intel Core
Intel Xeon 5300 series
Intel Core
Intel Xeon 5100 series
Intel Core
Intel Xeon 5000 series
Intel NetBurst
Intel Xeon 70000 series
Intel NetBurst
Intel Pentium 4
Intel NetBurst
Intel Pentium D
Intel NetBurst
Intel Core 2 Duo
Intel Core
Intel Core 2 Quad
Intel Core


Intel mengenal dua macam generasi micro-architecture, yaitu NetBurst & Core. Core sendiri merupakan generasi terbaru pengganti NetBurst, dengan benefit : jalur data yang lebih lebar, transfer data yang lebih cepat, cache memori yang lebih besar, sistem kerja yang lebih cerdas serta energi yang lebih efisien.

Prosesor Core
Prosesor dari mikroarsitektur Core dapat dikategorikan kepada jumlah core, ukuran cache, dan socketnya; setiap kombinasi dari hal tersebut memiliki kode nama khusus dan kode produk khusus yang digunakan pada sejumlah merk. Sebagai contoh, nama kode “Allendale” dengan kode produk 80557 memiliki dua core, 2 MB cache L2 dan menggunakan socket desktop 775, tetapi dipasarkan sebagai Celeron, Pentium, Core 2 dan Xeon, masing-masing dengan ketersediaan fitur yang berbeda-beda. Kebanyakan dari prosesor mobile dan desktop berasal dari dua varian yang hanya berbeda dari segi ukuran dari cache L2, namun memiliki jumlah L2 yang spesifik dapat juga dihilangkan dari sebuah produk pada saat waktu produksi.

Bahasa Assembler

Jumat, 20 Januari 2012

Bahasa rakitan
Bahasa rakitan atau lebih umum dikenal sebagai Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputermikroprosesorpengendali mikro, dan perangkat lainnya yang dapat diprogram. Bahasa rakitan mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu. Dengan demikian, portabilitas bahasa rakitan tidak dapat menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi. Namun demikian, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.
Pada bahasa rakitan, programmer umumnya menggunakan sebuah program utilitas yang disebut sebagai perakit (bahasa Inggrisassembler) yang digunakan untuk menerjemahkan kode dalam bahasa rakitan tersebut ke dalam kode mesin untuk perangkat keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya akan diterjemahkan menjadi sebuah instruksi mnemonic dalam kode mesin, berbeda halnya dengan kompiler pada bahasa pemrograman tingkat tinggi yang menerjemahkan sebuah perintah menjadi sejumlah instruksi dalam kode mesin.
Beberapa perangkat lunak bahasa rakitan terkenal biasanya menyediakan tambahan fitur untuk memgasilitasi proses pengembangan program, mengontrol proses perakitan, dan alat bantu debugging.

Dasar alasan menggunakan bahasa rakitan

Ada beberapa dasar alasan menggunakan bahasa rakitan dilihat dari sudut pandang penggunaannya:
§  Bahasa rakitan dibandingkan dengan bahasa mesin, bahasa rakitan merupakan representasi atas bahasa mesin yang dirancang agar lebih mudah dipahami oleh manusia. Dengan menggunakan bahasa rakitan, seorang programmer dapat lebih mudah mengingat instruksi-instruksi dengan menggunakan simbol yang lebih dapat dimengerti dibandingkan bila menggunakan simbol mnemonic kode mesin secara langsung. Demikian halnya pula dengan mekanisme lompatan yang umum terdapat dalam bahasa mesin yang biasanya menggunakan alamat memori, programmer dapat lebih mudah menggunakan fasilitas labeling yang terdapat bahasa rakitan dibandingkan menggunakan alamat memori tertentu dalam kode mnemonic.
§  Bahasa rakitan dibandingkan dengan bahasa tingkat tinggi, bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin.

Representasi kode mesin

Bahasa rakitan menerjemahkan sebuah instruksi rakitan menjadi instruksi mesin, umumnya mekanisme penerjemahan ini bersifat 1-1, karenanya dapat disebutkan pula bahwa setiap instruksi dalam bahasa rakitan merupakan representasi dari instruksi kode mesin.
Sebagai contoh, berikut adalah instruksi yang digunakan pada prosesor x86 untuk memindahkan nilai 97 sebesar 8-bit ke dalam register prosesor AL. Kode biner atas instruksi pemindahan adalah 10110 diikuti dengan 3-bit pengenal atas register yang akan digunakan. Pengenal atas register AL dalam hal ini adalah 000. Kemudian, nilai 97 dalam kode biner adalah 01100001, sehingga kode mesin yang digunakan untuk memindahkannya adalah sebagai berikut:[1]
10110000 01100001
Kode biner ini dapat diubah agar lebih mudah dibaca manusia dengan mengkonversikannya dalam bilangan heksadesimal sebagai berikut:
B0 61
Pada instruksi diatas, B0 berarti: 'Pindahkan nilai berikut ke register AL', dan 61 adalah representasi bilangan heksadesimal untuk nilai 01100001, atau 97 dalam bilangan desimal. Bahasa rakitan untuk prosesor Intel menyediakan simbol mnemonic MOV (yang merupakan singkatan dari move) untuk instruksi serupa sehingga kode mesin sebelumnya dapat ditulis dalam bahasa rakitan sebagai berikut:
MOV AL, 61h       ; Isi register AL dengan nilai 97 (61h)
Bahasa rakitan memungkinkan programmer menambahkan komentar atas setiap instruksi yang ditulis untuk mempermudah pembacaan dan lebih mudah pemahaman.
1. Definisi Stack
Secara harfiah stack berarti tumpukan, yaitu bagian memori yang digunakan untuk menyimpan nilai suatu register untuk sementara, membentuk tumpukan nilai. Stack dapat dibayangkan sebagai tabung memanjang (seperti tabung penyimpan koin). Sedangkan nilai suatu register dapat dibayangkan sebagai koin yang dapat dimasukkan dalam tabung tersebut. Jika ada data yang disimpan maka data-data tersebut akan bergeser ke arah memori rendah, dan akan bergeser kembali ke arah memori tinggi bila data yang disimpan telah diambil.
2. Perintah Perpindahan Data
Terkait perpindahan data, bahasa assembler mempunyai beberapa perintah yang dapat dibedakan yaitu untuk memindahkan data tunggal seperti huruf atau angka dan untuk memindahkan data string yang berupa deretan huruf. Tetapi di sini hanya akan menjelaskan beberapa perintah yang dipakai dalam aplikasi.
2.1. PUSH/POP
Syntax :

PUSH Reg16Bit
POP Reg16Bit
PUSH adalah perintah penyimpanan data ke memori stack secara langsung, dan untuk mengambil keluar nilai yang disimpan tersebut gunakan perintah POP. Nilai terakhir yang dimasukkan dalam stack, dengan perintah PUSH, akan terletak pada puncak tabung stack. Dan perintah POP pertama kali akan mengambil nilai pada stackyang paling atas kemudian nilai berikutnya, demikian seterusnya. Jadi nilai yang terakhir dimasukkan akan merupakan yang pertama dikeluarkan. Operasi ini dinamakan LIFO (Last In First Out). Perhatikan contoh berikut ini:
push ax;
push bx;
push cx;
mov ax, $31C;
mov bx; $31D;
mov cx, $31E;
pop cx;
pop bx;
pop ax;


2.2. MOV

Syntax :
MOV destination, source
Digunakan untuk menyalin data dari memori/register ke memori/register atau dari data langsung ke register. Nilai pada source yang dipindahkan tidaklah berubah. Pada contoh di bawah, register al diberi nilai $31Ckemudian nilai register al disalin ke register ax. Jadi sekarang nilai register al dan register ax adalah $31C.
mov al, $31C;
mov ax, al;
Hal-hal yang tidak boleh dilakukan dalam penyalinan data:
a. Penyalinan data antarregister segmen (ds, es, cs, ss)
mov ds, es ? tidak dibenarkan
Gunakan register general, misalnya register ax, sebagai perantara
mov ax, es
mov ds, ax
atau gunakan stack sebagai perantara
push es
pop ds
b. Penyalinan data secara langsung untuk register segmen (ds, es, cs, ss)
mov ds, $31C ? tidak dibenarkan
Gunakan register general, misalnya register ax, sebagai perantara
mov ax, $31C
mov ds, ax
c. Penyalinan data langsung antarmemori
mov memB, memA ? tidak dibenarkan
Gunakan register general, misalnya register ax, sebagai perantara
mov ax, memA
mov memB, ax
d. Penyalinan data antarregister general yang berbeda daya tampungnya (8 bit dengan 16 bit) tanpa pointer
mov al, bx ? tidak dibenarkan
2.3. IN/OUT
Syntax :

IN Reg16Bit, port
OUT port, Reg16Bit
Untuk membaca data dari suatu port dan memasukkan nilainya ke dalam suatu register gunakan perintah IN. Dan perintah OUT digunakan untuk memasukkan suatu nilai ke dalam suatu port. Nilai yang akan dimasukkan diberikan pada register al/ax dan alamat port diberikan pada register dx. Pada contoh berikut ini, pertama kaliregister dx disimpan pada stack, menyalin nilai $31E pada register dx kemudian perintah IN akan membaca nilai pada register dx (port bernilai $31E) dan memasukkannya ke dalam register al. Dan terakhir nilai tersebut disalin ke variabel Data.
push dx
mov dx, $31E
in al, dx
mov Data, al
pop dx
Dan contoh berikut untuk memberi nilai ($8A) pada suatu port.
push dx
mov dx, $31E
mov al, $8A
out dx, al
pop dx


3. Operasi Aritmatika


3.1. Penjumlahan
Syntax :
ADD destination, source
ADC destination, source
INC destination
Perintah ADD akan menjumlahkan nilai pada destination dan source tanpa menggunakan carry (ADD), dimana hasil yang didapat akan ditaruh pada destination. Dalam bahasa pascal pernyataan ini sama dengan pernyataan destination := destination + source. Daya tampung destination dan source harus sama misalnya register al (8 bit) dan ah (8 bit), ax (16 bit) dan bx (16 bit). Perhatikan contoh berikut, nilai register ah sekarang menjadi $10 :
mov ah, $5;
mov al, $8;
add ah, al


Perintah ADC digunakan untuk menangani penjumlahan dengan hasil yang melebihi daya tampung destinationyaitu dengan menggunakan carry (ADD), dalam bahasa pascal sama dengan pernyataan destination := destination + source + carry. Misalnya register ax (daya tampung 16 bit) diberi nilai $1234 dan bx (16 bit) diberi nilai $F221, penjumlahan kedua register ini adalah $10455. Jadi ada bit ke 17 padahal daya tampung register bx hanya 16 bit, penyelesaiannya adalah nilai bx = $0455 dengan carry flag = 1.
Perintah INC digunakan untuk operasi penjumlahan dengan nilai 1. Jadi nilai pada destination akan ditambah 1, seperti perintah destination := destination + 1 dalam bahasa Pascal.
3.2. Pengurangan
Syntax :

SUB destination, source
SBB destination, source
DEC destination
Perintah SUB untuk mengurangkan 2 operand tanpa carry flag. Hasilnya diletakkan pada destination dalam bahasa pasca sama dengan pernyataan destination := destination – source. Untuk mengenolkan suatu register, kurangkan dengan dirinya sendiri seperti contoh berikut ini. Pertama kali register ax bernilai $5, kemudian nilai register tersebut dikurangi dengan dirinya sendiri sehingga terakhir nilai register ax adalah 0.
mov ax, $15;
mov bx, $10;
sub ax, bx;
sub ax, ax;
Perintah SBB mengurangkan nilai destination dengan nilai source kemudian dikurangi lagi dengan carry flag (destination := destination – source – carry flag).
Dan perintah DEC untuk mengurangi nilai destination dengan 1.
3.3. Perkalian
Syntax :

MUL source
Digunakan untuk mengalikan data pada accumulator dengan suatu operand dan hasilnya diletak pada register source. Register source dapat berupa suatu register 8 bit (misal bl, bh, dan sebagainya), register 16 bit (bx, dx, dan sebagainya) atau suatu variabel.
3.4. Pembagian
Syntax :

DIV source
Operasi aritmatika ini pada dasarnya sama dengan operasi perkalian