Powered By Blogger

Cari Blog Ini

Selasa, 22 November 2016

Cara Membuat Web Server menggunakan Linux Ubuntu

Repository adalah paket atau kumpulan software-software yang dibuat khusus untuk suatu distribusi (distro lunux). dalam hal ubuntu, banyak sekali repository-repository ekstra yanng tidak dimaintain/dijaga oleh Canocial, sponsor utama Ubuntu, repository-repository tersebut dimantain oleh kelompok-kelompok, proyek-proyek, atau sekedar perorangan. banyak repository-repository ekstra ini memiliki aplikasi-aplikasi yang bermanfaat.

Repository Ubuntu dari Internet
langkah-langkahnya:
1. edit file konfigurasi yang ada di komputer pengakses,
#nano /etc/apt/sources.list

2. masukkan alamat repository, contoh menggunakan repository UGM:
# deb http://repo.ugm.ac.id/ubuntu/ubuntu/pool/main/a/apache2/


3. simpan file setelh diedit

4. lakukan perintah update, ketik perintah : #apt-get update
perintah sudo apt-get update ini harus kita jalankan setiap kali kita melakukan perubahan pda source.list




5. Instal aplikasi Apache web server
#apt-get install apache2

6. buat direktori baru dengan perintah
#mkdir /home/web

7. buat file baru, disini penulis menggunakan LibreOffice Writer
simpan file yang sudah diedit ke direktori /home/web

8. copy kan file tersebut ke direktori /var/www dengan klik kanan file pilih copy atau bisa dengan
#cp /home/web/selamatbelajarc /var/www/selamatbelajarc

9. pastekan file tersebut dalam direktori /var/www.
jika tidak bisa, gunakan perintah
#chmod 777 var/www


10. dalam direktori /var/www terdapat file index.html
jika file index.html tersebut terkunci, maka perlu adanya Hak Akses File. ketikkan perintah
#chmod 777 /var/www/index.html

edit file menggunakan bahasa pemrograman html dengan perintah gedit atau klik kanan pada file, pilih open with teks editor

simpan file setelah diedit

11.lakukan #apt-get update

12. buka web browser lalu ketikkan alamat IP kalian masing-masing.alamat IP penulis 127.0.1.1
akan tampil seperti gambar berikut


13. buat direktori baru html dalam direktori www.
pindah file index.html ke dalam direktori html


14. buka web broser, ketikkan localhost
maka semua file dalam direktori www akan muncul seperti berikut




terima kasih😊
selamat mencoba



Selasa, 15 November 2016

Soal Mikroprosesor

UJIAN TENGAH SEMESTER GANJIL T.A 2016/2017
Mata Ujian               :    Mikroprosesor
Dosen Penguji          :    Imam Marzuki, ST ., MT
Fakultas/smstr          :    Teknik/V1A
Prodi                        :    Teknik Elekto
Hari/tgl                     :    Selasa, 01 Nopember 2016
Waktu                      :    90 menit
Sifat                         :    Close
Kelas                        :    Sore

1.      Jelaskan yang anda ketahui mengenai CPU (Central Processing Unit)! Jelaskan pula keterkaitan antara CPU dengan mikroprosesor?
Jawab :
CPU adalah perangkat keras komputer yang berfungsi untuk menerima dan melaksanakan perintah dan data dari perangkat lunak. Istilah lain, prosesor (pengolah data), sering diguanakan untuk menyebut CPU. Adapun Mikroprosesor adalah CPU yang diproduksi dalam sirkuit terpadu, seringkali dalam sebuah paket sirkuit terpadu tunggal. Mikroprosesor berupa suatu lempengan silikon yang biasa disebut dengan Integrated Circuit (IC)
2.      Apa perbedaan antara mikroprosesor dan sistem mikroprosesor?
Jawab :
-          Mikroprosesor adalah sebuah komponen rangkaian terintergrasi (IC) mikroelektronika dalam paduan skala yang sangat besar yang didesain bekerja sebagai pusat pengolah data digital
-          Sistem mikroprosesor adalah gabunagn dari beberapa komponen, dalam hal ini Memory Unit, Input, Output Unit dan CPU yang bekerja sebagai pengolah data elektronik digital
3.      Sebutkan dan Jelaskan tugas bagian-bagian dari CPU?
Jawab :
-          Register berfungsi untuk sebagai tempat penyimpanan sementara data, alamat, kode instruksi dan bit status berbagai operasi mikroprosesor
-          ALU (Algorith ang Logic Unit) berfungsi untuk mengerjakan perintah-perintah logika dan operasi aritmatika
-          Timing and Control Unit berfungsi untuk mengambil dan mengkodekan instruksi dari memori program dan membangkitkan sinyal kendali yang telah diperlukan oleh bagian lain dari mikroprosesor untuk melaksanakan instruksi tersebut
4.      Sebutkan dan jelaskan mengenai sistem bilangan yang bisa diproses oleh CPU (jawaban sebanyak-banyaknya dan sejelas-jelasnya)!
Jawab:
-          Bilangan Biner : susunan bilangan yang mempunyai basis 2 sebab sistem bilangan ini menggunakan  dua nilai koefisien yang mungkin yaitu, 0 dan 1
-          Bilangan Oktal : susunan bilangan yang mempunyai basis 8 sebab sistem bilangan ini menggunakan delapan koefisien bilangan integer yaitu 0,1,2,3,4,5,6,7
-          Bilangan desimal : susunan bilangan yang mempunyai basis 10 sebab sistem bilangan ini mengunakan sepuluh koefisien bilangan interger bulat yaitu 0,1,2,3,4,5,6,7,8,9
-          Bilangan Hexadesimal : susunan bilangan yang mempunyai basis 16 sebab sistem bilangan ini menggunakan enam belas koefisien bilangan bulat integer yaitu 0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(16)




Senin, 14 November 2016

BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)

Apa Itu Bahasa Rakitan (Assembler) ?

Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasar komputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauh berbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatan yang paling baik. Kelebihan dari bahasa rakitan adalah :
1.     Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkan pemrograman menjadi lebih mudah).
2.     Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapat diintegrasikan kembali).
3.     Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan.
4.     Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkan secara maksimal.       

Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ?

Untuk mempelajarai bahasa rakitan / assembler diperlukan :
1.     Sistem bilangan antara lain Biner, Oktal, Desimal dan Hexadesimal
2.      Pengenalan Microprocessor
3.      Sistem Memori dan Pengalamatan Memori
4.     Interupt / Interupsi
5.     Register
6.     Instruksi Assembly atau Mnemonic
7.     Mode pengalamatan data
8.     Operasi-operasi pada assembler
9.     Pembuatan program

Sistem Bilangan

Untuk mempelajari bahasa rakitan kita harus mengenal beberapa sistem bilangan yang sangat berguna dalam pengaksesan port ataupun menghafal kode ASCII yang penting. Bilangan desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan lainnya sangat dibutuhkan dalam pemrograman bahasa rakitan atau assembler, karena bahasa ini dipakai untuk menjalankan sistem mikroprosessor. Setiap mikroprosesor memiliki bahasa rakitan sendiri. Adapun sistem bilangan yang dipelajari adalah sebagai berikut :
  1. Bilangan Biner
Bilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2. Cara mengkonversi ke bilangan desimal adalah dengan mengalikan dua dengan pangkat N (suku ke-N) seperti bilangan desimal mengalikan 10 dengan pangkat N
     Contoh:
     
     1110   (biner)   dikonversi ke desimal menjadi :
     (1 * 23) + (1 * 22) + (1 * 21) + (0 * 20) =
       8      +     4       +     2      +      0      =   14 (desimal)
-    Operasi tambah pada sistem biner :
      0  +    0   =   00
     1   +    0   =   01
     0   +    1   =   01
     1   +    1   =   11
     Contoh :
 
      1110001 + 1011000  =  11001001   (biner)
      desimalnya :  113 + 89 = 201


  1. Bilangan Oktal
Bilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari angka 0 hingga 7.
Konversi bilangan octal ke desimal mempunyai cara yang sama dengan bilangan biner, hanya memakai bilangan dasar 8.
Contoh:

      355 bilangan octal ke desimal
      355 oktal = (3 * 82) + (5 * 81) + (5 * 80)
                =    192   +   40     +   5
                =    237 desimal

  1. Bilangan Desimal
Bilangan ini sudah tidak asing lagi, karena digunakan dalam kehidupan sehari-hari.
Sistem bilangan ini terdiri dari angka 0 sampai 9 dengan menggunakan dasar 10.

  1. Bilangan Hexadesimal
Bilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita sering menemukan bilangan ini. Kode ASCII ditulis dalam bilangan hexadesimal yang mewakili huruf, angka, tanda baca dan karakter unik lainnya sebanyak 255 buah.
Bilangan hexadesimal merupakan bilangan dasar 16 terdiri dari : 0123456789ABCDEF
Cara mengkonversi ke bilangan desimal sama dengan biner dan octal
Contoh:
 
      3A hexa =  (3 * 161) + (10 * 160)
              =     48     +    10
              =     58 desimal
   
Tip
·         Bahasa Rakitan atau Assembler merupakan bahasa tingkat rendah / low level language digunakan dalam computer untuk Sistem Operasi, Compiler, penanganan file dan operasi-operasi mikroprosesor.
·         Setiap digit bilangan biner disebut satu bit. Terdiri dari 0 dan 1
·         Bilangan Octal merupakan bilangan dasar 8 terdiri dari 0 s/d 7
·         Bilangan Desimal merupakan bilangan dasar 10 yang sudah sering dipakai.
·         Bilangan Hexadesimal merupakan bilangan dasar 16 terdiri dari 0 – 9ABCDEF dan dipakai dalam kode ASCII dank ode-kode lainnya.


Memori                           

Pengertian Memori
Merupakan bagian terpenting dalam komputer  untuk menyimpan data dan program.
Dalam microprosesor 8088 terdapat 16 saluran alamat (address) dan 8 saluran data secara multiplex. Saluran alamat lainnya yang tersedia ada 4, khusus untuk menunjuk segmen memori, dimana tiap segment menjangkau memori sebesar 64 kliobyte. Sehingga dari 16 saluran alamat dapat menggarap isi memori hingga 1 megabyte dan bekerja dengan data 16 bit.
Ukuran memori 1 kilobyte = 1024 byte, 1 megabyte = 1024 x 1024 byte = 1.048.576 byte. Maka alamat memori dari 0 sampai 1 megabyte memerlukan penulisan dengan 5 digit angka hexadesimal dari 00000H sampai FFFFFH.
Sebagai contoh : Memori di PC XT 640 kilobyte terdiri dari alamat 00600H sampai alamat A0000H.RAM  dan ROM merupakan komponen IC yang dapat menyimpan data dan program yang dapat dialamati terdiri dari jalur alamat (address) dan jalur data. RAM dapat menulis dan membaca data, sedangkan ROM hanya membaca saja.
Kombinasi saluran/jalur data berupa 8 bit atau 16 bit yang dinyatakan dalam bilangan hexadesimal. Sedangkan jalur alamat (address) memiliki pola yang sama dengan jalur data memakai bilangan hexadesimal. Sekarang telah berkembang memori dengan jumlah saluran 32 bit dan 64 bit. 
Tempat menyimpan data ukuran 1 byte di RAM dan ROM harus diberi nomor urut agar mudah diidentifikasi berupa alamat memori (memori address). Jika ada data berupa 5AH disalurkan melalui jalur data ke memori dengan alamat memori 0F2B4H, maka berarti di lokasi memori nomor 0F2B4H terdapat data 5AH.
Memori dengan jalur alamat yang banyak akan memiliki kapasitas simpan yang dinyatakan dalam byte, kilobyte, megabyte atau gigabyte.
Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Suatu media penyimpan berupa Hard disk 10 M berarti memiliki kapasitas rekam 10 x 1024 x 1024 byte.
Istilah dalam memori yang sangat lazim dan sering ditemui dalam setiap pemrograman bahasa rakitan adalah :
Ø  Bit adalah singkatan dari binary digit
Ø  Byte adalah 8 bit
Ø  Word adalah 2 byte

Pembagian memori
      Diantara register dalam CPU untuk mencatat alamat memori yang dipergunakan terdapat segment register digabung dengan offset register yang mengatur pembagian memori. Offset register dapat berupa register lain yang bukan segment register dengan aturan pasangan :
                                                           SSSS : OOOO
S = digit hexadesimal pada segment register O
O = digit hexadesimal pada offset register
Satu segment memori berukuran 64 kilobyte terbagi atas beberapa segment offset yang dapat dialamati oleh offset register. Sedangkan memori (RAM & ROM) pada PC dapat terdiri dari beberapa/banyak  segment memori tergantung  kapasitas memori pada PC tersebut. 
 
Pengalamatan Memori
Merupakan suatu cara untuk mencatat atau menunjuk alamat memori sesuai aturan pasangan SSSS : OOOO artinya penulisan alamat memori menuruti aturan bahwa bobot digit terendah pada Segment Register adalah 16 pangkat 1 dan bobot tertinggi 16 pangkat 4. Sedangkan pada Offset Register bobot digit terendah adalah 16 pangkat 0 dan bobot digit tertinggi 16 pangkat 3.
Contoh:
Misalkan:  SSSS   dipilih 1234H
                 OOOO  dipilih DCBAH
Maka pengalamatan memori dapat dinyatakan 1234:DCBA.
Angka alamat absolutnya dapat dihitung dari :
              
               12340
               0DCBA +
               1FFFA
Cara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH.
Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX.
Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment register BX dan offset register DS. Pencatatan alamat dinyatakan dengan rumus DS:BX
Contoh:    0100 : 0234  artinya DS mencatat 0100H, BX mencatat 0234H
Alamat memori 0000 : 0234 dapat dinyatakan dengan :
DS:BX+DI yaitu DS berisi 0000, BX diisi 0200H dan DI diisi 0034H
Penulisan BX+DI disebut offset address terhadap segment address.


Tip
·         Memori pada dasarnya  dapat menyimpan data dan program yang bersifat sementara..
·         Memori memiliki jalur data dan jalur alamat (address) agar dapat diidentifikasi oleh microprosessor pada saat sedang membaca data dan program.
·         Memori memiliki kapasitas dalam satuan byte, kilobyte, megabyte, gigabyte dll.
·         Pengalamatan memori diatur berdasarkan pembagian segment dan offset.
·         Satu byte data dimemori memiliki satu alamat offset.
·         Penunjukkan alamat memori dilakukan oleh CPU dengan memanfaatkan register BX.
·         Pencatatan alamat memori dapat ditulis dengan DS:BX atau DS:BX+DI


Interrupt dan Register


Pengertian Interrupt

Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh mikroprosesor  sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa oleh sistem hardware computer.  
CPU banyak melaksanakan routin untuk melakukan pelayanan pemrosesan ataupun koordinasi kepada IC penunjang atau chipset dan peripherals pada saat diperlukan. Sehingga CPU dapat melakukan operasi dengan 2 cara yaitu :

1.     Operasi dengan polling
2.     Opreasi dengan interrupt

Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiap komponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukan pelayanan.
Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPU bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-menerus menanyakan /memantau komponen itu. Setiap interupsi yang datang di kontrol oleh interrupt controller di luar CPU. Dalam keadaan CPU terkena interupsi, maka CPU untuk sesaat menghentikan kegiatan pelayanan utama dan beralih melayani komponen yang menginterupsinya. Setelah selesai dilayani CPU kembali melakukan pelayanan utamanya.
Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya dengan cepat.
Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat menerima 3 macam interupsi antara lain :

1.     Interupsi software (instruksi INT nH  n= bilangan 00H s/d FFH)
2.     Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapat dicegah karena berasal dari sistem board atau IC.
3.     Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup atau dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.

Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal masing-masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan 2 byte untuk Instruction Pointer.   
Dalam pemrograman assembler kita dapat melakukan interupsi secara software dengan perintah INT yang dapat dilihat dalam tabel interupsi.
 Interrupt Software dalam PC terbagi dua yaitu :

1.     Interrupt BIOS (Basic Input Output Sistem)
2.     Interrupt DOS (Disk Operating Sistem)

Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya diwajibkan telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang disusun berurutan dan diberi servis number (nomor pelayanan) tersendiri.
Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untuk kembali ke DOS dan INT 21H untuk operasi Input/Output.

Pengertian Register

Register tidak dapat dilepaskan dari mikroprosessor, sebab pada mikroprosessor terdapat register yang berfungsi untuk menyimpan sementara hasil dari tahapan operasi arithmetika dan logika pada mikroprosessor. Register dalam bahasa rakitan menggunakan real mode memory yang sesuai dengan mikroprosessor Intel generasi 8088 s/d Pentium.
Register yang terdapat pada mikroprosessor Intel terdiri dari :
1.     General purpose register (register serbaguna)
2.     Pointer register (register pointer)
3.     Index register (register indeks)
4.     Segment register (register segment)
5.     Flag register (register status).

Semua register di atas lebarnya 32 bit, kecuali register segment (CS, DS, ES, SS, FS dan GS) hanya 16 bit. Register 32 bit dapat digunakan sebagai register 16 bit, kecuali register General purpose register dapat dibagi menjadi 8 bit (AL,AH, BL, BH, CL, CH, DL dan DH) yang berasal dari 16 bit (AX, BX, CX, DX). Register 32 bit diberi kode di depan register dengan E misalnya: EAX, EBX, ECX dan EDX.

Macam-macam Jenis dan Fungsi Register
Berikut ini jenis dan fungsi dari masing-masing Register yaitu :

1.   General Purpose Register (Register Serbaguna)
Register untuk keperluan umum yang terdiri atas :

a.   Register AX (Accumulator register) berfungsi sebagai tempat:
Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX)
Ø  Memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH).
Ø  Menyimpan bilangan yang dikalikan (reg AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).
Ø  Menyimpan setengah bagian terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi (AL, AX, EAX).

b.    Register BX (Base Register)
   Base register adalah register untuk menyimpan alamat offset data yang terletak di memori (BL, BH, BX dan EBX)

c.     Register CX (Counter Register)
      Counter register adalah register serbaguna yang berfungsi sebagai:
Ø  Pencacah untuk operasi loop (CX dan ECX)
Ø  Pencacah untuk operasi shift dan rotate (CL)
Ø  Pencacah (counter) untuk operasi string (CX)

d.    Register DX (Data register)
      Data register adalah register serbaguna yang berfungsi sebagai :
Ø  Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).
Ø  Penyimpan hasil pembagian (DX-AX dan EDX-EAX)
Ø  Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar monitor.

2.   Pointer Register
Register ini untuk menunjukkan alamat sebuah data di lokasi memori,  dipakai saat operasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) dan penunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointer register: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (Instruction Pointer).

3.   Index Register
Sama dengan pointer register, sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi string. Macam-macam register Index adalah : SI (Source Index), DI (Destination Index).

4.   Segment Register
Segment register membentuk alamat memori untuk data. Pada operasi real mode suatu segment register akan berbeda dengan segment register pada operasi protected mode.  Yang termasuk ke dalam segment register antara lain :
Ø  Code segment -> untuk menunjukkan alamt instruksi berikutnya.
Ø  Data segment -> untuk menunjukkan alamat data pada transfer register
Ø  Extra segment -> register tambahan untuk operasi string
Ø  Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatu prosedur (CALL) dan mengarah ke program utama (RET).
Ø  FS dan GS register -> register tambahan u/ segmen memori yang besar.

5.      Flag Register
Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.
Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Adapun kode bit yaitu sebagai berikut :
Ø  C  (carry)    ->  1=ada carry out    0= tdk ada carry out
Ø  P  (Parity)   ->   1=paritas genap    0= paritas ganjil
Ø  A (auxxiliary carry) -> 1=ada carry    0=tdk ada carry
Ø  Z  (zero)    -> 1=hasilnya nol    0=hasilnya bukan nol
Ø  S  (sign)    -> 1=hasilnya negatif   0=hasilnya positif
Ø  T  (trap)    -> bila diset 1 dimungkinkan melakukan debugging.
Ø  I   (interrupt)  -> 1= pin INTR enable   0=pin INTR disable
Ø  D  (direction) -> 1=cacahan turun     0=cacahan naik
Ø  (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak
Ø  IOPL (input-output privalege level) -> untuk protected mode
Ø  NT (nested task) -> indikasi dari penggabungan dengan operasi lain.
Ø  RF (resume)  -> untuk debugging
Ø  VF (Virtual mode) -> untuk operasi virtual pada protected mode
Ø  AC (alignment check) -> untuk data word dialamati ke memori


Tip
·         Register merupakan tempat menyimpan data sementara yang berada dalam CPU.
·         Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index Register, Segment Register, Flag Register.
·         Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh pembuat mikroprosesor.


Perlengkapan Bahasa Rakitan

Untuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software antara lain dari DOS berupa Debug.COM atau dari Borland International berupa Turbo Assembler atau program lainnya. Khusus untuk membuat program dengan Turbo Assembler maka perlengkapannya terdiri dari : Compiler dan Linker yang compatible dengan computer PC XT/AT/Pentium dan processor Intel, AMD, Cyrix.

Compiler dan Linker

Pada pemrograman assembler dikenal istilah Compiler merupakan suatu program yang dapat mengubah suatu file berextensi .ASM (assembler) menjadi file Object berekstensi .OBJ. Compiler ini juga dapat memberitahukan isi suatu program yang akan dikompilasi apakah mengandung kesalahan (error) per baris atau perintah yang tidak sesuai. Compiler pada bahasa rakitan khususnya Turbo Assembler menggunakan TASM.EXE. Source program yang dikompile dengan compiler TASM dibuat dengan teks editor DOS atau Windows dan disimpan dengan nama file .ASM di directori yang berisi TASM.EXE agar lebih mudah dalam mengkompilasinya.

Cara mengkompilasi program sumber (source program) menjadi program objek adalah :

               TASM  (nama file .ASM)  (nama file .OBJ)

Contoh:


    LATIH1.ASM  dikompile dengan TASM.EXE di directory A menjadi :
      A>TASM  LATIH1.ASM  LATIH1.OBJ  (enter)
                  atau
      A>TASM  LATIH1 (enter)
Maka di layar tampak:


   Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland International
   Assembling file:        LATIH1.ASM
   Error messages:       None
   Warning messages:  None
   Remaining memory:  16k 
                     


Jika kita ingin membuat file objek dari source program assembler disertai dengan nomor kesalahan yang mungkin terjadi pada baris program (file .LST), maka kita dapat memberi perintah sebagi berikut:
                                A>TASM  /L nama_file.ASM (enter)

Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LST
                               A>Edit  nama_file.LST (enter)

Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file COM atau EXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object code yang berupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dan disesuaikan dengan aturan DOS.
Program pelayanan Linker pada Turbo Assembler adalah TLINK.EXE
Penggunaan linker TLINK.EXE mernghasilkan file dengan nama file berekstensi COM atau EXE yang terdiri dari kode bahasa mesin yang telah pasti penempatannya sehingga dapat disimpan di memori (RAM) untuk melaksanakan program. Semua proses assembly dan semua proses link harus tidak ada kesalahan artinya error harus 0. Jika masih ada error program harus diedit dengan membuka source program (file .ASM).
Untuk menjalankan file yang telah dilinker dengan TLINK.EXE, maka langsung dapat dieksekusi dengan mengetik nama file di depan prompt DOS atau di run melalui Windows.
Cara melakukan linker pada sebuah objek program (.OBJ) menjadi program COM atau EXE adalah :      TLINK /T  (nama file .OBJ)    ->  untuk menjadi file berekstensi OBJ
                                   atau
                  TLINK    (nama file .OBJ)      ->  untuk menjadi file berekstensi .EXE  

Perbedaan file COM dan EXE

Program COM adalah salah satu jenis executable program. Ada beberapa sifat antara COM dengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing adalah sebagai berikut:
-          Program COM :
1.   Relatif lebih kecil dibanding EXE
2.   Lebih cepat dibanding EXE
3.   Hanya menggunakan 1 segment
4.   Ukuran file maksimal 64 KB
5.   Sulit mengakses data/prosedur di segment lain
6.   Dapat dibuat dengan Debug
7.   Source file tidak boleh menggunakan referensi segment tertentu
8.   Source file tidak boleh memakai data segment
9.   Source file tidak boleh memakai stack segment
10. Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih, executable code ahrus mulai di CS:0100

-          Program EXE :
1.   Relatif lebih besar dibanding COM
2.   Lebih lambat dibanding dengan COM
3.   Bisa menggunakan lebih dari 1 segment
4.   Ukuran berkas tidak terbatas (sesuai kemampuan memori)
5.   Mudah mengakses data/prosedur di segment lain
6.   Tidak dapat dibuat dengan Debug dari DOS.
7.   Source file boleh memilih memakai segment tertentu.
8.   Source file boleh memakai data segment
9.   Source file boleh memakai stack segment
10. Tidak perlu menggunakan ORG 100H untuk setiap Code segment. 

Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding program EXE.
Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan dalam file berekstensi .ASM  misalnya:   Coba1.ASM

Label dan Komentar

Label pada program merupakan address memori yang diberi nama unik misalnya :
Pada alamat 0000:0400 akan diberi nama label Data_BIOS. Maka susunan penulisan Label dalam pernyataannya adalah :

                    SEGMENT  AT 0000H
                    ORG   0400H
Data_BIOS  LABEL WORD

Atau jika kita ingin memulai suatu program dan diberi Label MULAI maka penulisannya adalah::

Code Segment
         Assume CS: Code
        ORG  100H

MULAI:
         ……….…
         ………….

Label yang dibuat untuk pengarah data (directive) sering digunakan adalah EQU singkatan dari EQUate. Kegunaannya untuk memberi nama pada angka atau konstanta yang dianggap penting.
Contohnya:

ANGKA     EQU   0B800H            ; 0B800H diberi nama ANGKA
Kolom        EQU  80                     ; angka 80 diberi nama Kolom


Sedangkan komentar pada program dibuat hanya sebagai catatan atau remark yang tidak berarti apa-apa dan tidak dieksekusi oleh CPU. Komentar pada program diberi tanda titik koma (;) diberi kata-kata atau kalimat  tentang program. Misalnya:

                      
 ; Program ini dibuat dengan Turbo Assembler   (komentar)
 ; Author by :
 ; Date      :

 Code segment
      Assume Cs: Code
      Org 100h
 Mulai:         (merupakan suatu Label)             
               

Perintah MOV

Perintah ini merupakan perintah dasar pemrograman bahasa rakitan untuk memindahkan data dari lokasi asal ke lokasi tujuan berupa register atau lokasi memori.
Instruksinya (mnemonic) adalah  MOV dengan sintaks:

                 MOV  lokasi tujuan, lokasi asal

Contoh:
                      
               MOV  CX, 05     ; angka 5 disimpan di register CX
               MOV  AX, 005AH  ; angka 005AH disimpan di AX
               MOV  BX, AX     ; isi AX disimpan ke BX
               MOV  [200], BX  ; isi BX disimpan di lokasi memori 200
               MOV  [BX], [200]; isi data di lokasi memori 200 disim-
                                 pan di alamat BX.              



Tip
·         Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER dengan TASM.EXE dan TLINK.EXE
·         Perlengkapan lainnya adalah Teks Editor berupa EDIT.COM, SK.COM (Side Kick) atau Notepad pada Windows.
·         Membuat program  COM dapat menggunakan 2 cara yaitu dengan Debug pada DOS atau dengan Turbo Assembler.
·         Label pada program merupakan nama yang dapat mewakili alamat memori (memory address), sebagai directive (pengarah), start program, prosedur atau keperluan lainnya.
·         Komentar merupakan tanda titik koma pada program yang tidak akan dieksekusi hanya keterangan tentang program atau baris program.
·         Perintah MOV merupakan perintah dasar dalam bahasa rakitan yang dipakai untuk mentransfer data angka, register, alamat memori (lokasi memori) 
pan: � y e � 0 0 0pt "Times New Roman"'>  NT (nested task) -> indikasi dari penggabungan dengan operasi lain.

Ø  RF (resume)  -> untuk debugging
Ø  VF (Virtual mode) -> untuk operasi virtual pada protected mode
Ø  AC (alignment check) -> untuk data word dialamati ke memori


Tip
·         Register merupakan tempat menyimpan data sementara yang berada dalam CPU.
·         Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index Register, Segment Register, Flag Register.
·         Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh pembuat mikroprosesor.


Membuat Program COM

Model  Program  COM

Program yang berekstensi COM (Command) merupakan program yang berisi perintah assembler berupa instruksi mnemonic yang dapat ditulis dengan Debug atau Turbo Assembler.

   Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 model
   yaitu:
Model 1:
 
 Title     Nama_program   ;judul program
 Makro     MACRO          ;nama makro
            --------
            --------      } isi makro berada (bila ada)
           ENDM           ;akhir makro
Code  SEGMENT             ;(nama label segment)
      ASSUME   CS: Code   ;(register CS berisi label segment)
      ORG   100h          ;(origin 100h menuju ke alamat offset 100h)

MULAI:  ---------         ;(label mulai)
        ---------         ; isi program
        ---------
        INT    20h        ; berhenti dan kembali ke DOS
Code    ENDS              ; akhir penulisan program di segment
        END  MULAI        ; akhir dari isi program



Model  2:

Bentuk struktur program di bawah ini lebih ringkas dibanding dengan model 1 yaitu:


   .model small
   .code
   org  100h                  ;program dimulai pada alamat 100h

 MULAI:
        ---------         ;(label mulai)
        ---------         ; isi program
        ---------
        INT    20h        ; berhenti dan kembali ke DOS
 END  MULAI                 ;akhir program


Kita dapat mengganti model 1 dengan model 2 dimana pengetikan isi program sama dengan model 1 di atas.

Pembuatan  program  dengan  Debug
Program yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com atau Debug.Exe, Pengetikan program dapat langsung ditulis dalam program Debug.

Caranya :
-          Ketik Debug di depan prompt C atau A (debug.com ada di directory tersebut)
C> Debug (enter)
-
-  Langkah berikutnya adalah memasukkan baris-baris program dengan  perintah A100  (assembly) di depan prompt debug ( _ )
Perintah A100 berarti instruksi pertama akan diletakkan pada alamat offset 100h pada segment memori tersebut.
-A100 (enter)
xxxx : 0100  _

xxxx: adalah alamat segment dan 0100 adalah alamat offset dimana program akan ditempatkan mulai alamat tersebut..
Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offset xxxx : 0100  misalnya:
            
 xxxx : 0100   MOV   DL,61           ;kode ASCII huruf a
      : 0103   MOV   AH,02           ;nomor pelayanan 02H
      : 0105   INT   21              ;cetak di layar       
      : 0107   INT   20              ;kembali ke DOS
      : 0109   _    (enter)          ;menuju ke prompt debug
  -                    

                          Alamat segment offset dari 0100 s/d 0109  akan keluar sendiri setelah kita mengetik program disertai dengan menekan enter.
Setelah instruksi  INT 20 tekan enter 2 kali dan program akan kembali ke prompt debug  ( _ ).
-          Menentukan panjang program pada debug dilakukan dengan mengisi register BX:CX.  Terlihat dari mulai alamat offset awal 0100h dan alamat offset akhir 010Fh, sehingga dapat diperoleh panjang programnya adalah (0109h – 0100h) = 9 byte, maka register BX diisi dengan 0 dan register CX dengan 9. Jadi pada prompt Debug ketik RBX lalu isi 0, dan ketik  RCX lalu isi dengan 9.
-RBX (enter)
BX  0000
:0  enter
-RCX (enter)
CX 0000
:9 enter
-          Setelah selesai ditik perintah RCX kemudian memberi nama file dengan perintah N (name). Contoh :  -N COBA1.com (enter)
-          Untuk menyimpan program ke disket atau harddisk berikan perintah W (write) lalu enter.
-          Menjalankan program harus memberi instruksi G (go) dan lihat hasilnya di layar. Bila program berjalan dengan benar (tidak ada kesalahan) komputer akan memberi komentar “Program terminated normally”. Selengkapnya contoh cara membuat program dengan Debug :
C> debug (enter)

-A100 enter
xxxx : 0100   MOV  DL,61
xxxx : 0103   MOV  AH,02
xxxx : 0105   INT  21
xxxx : 0107   INT  20
xxxx : 0109  
-rbx  enter
BX   0000
:0  enter
-rcx   enter
CX   0000
:9  enter
-N  coba1.com
-W
Writing 000F bytes
-G
 a         (hasil dari program assembler tampil huruf a di layar)
Program terminated normally

Pembuatan dengan Macro Assembler atau Turbo Assembler.
Adanya keterbatasan pembuatan program dengan Debug, maka kita dapat menggunakan bantuan assembler compiler dengan Macro assembler atau Turbo Assembler (TASM.EXE dan TLINK.EXE).
Untuk membuat program assembler dengan Turbo Assembler kita memerlukan source program yang ditulis dengan teks editor (fasilitas untuk mengetik program).  Teks editor dapat memakai Edit.com, Side Kick (SK.com) pada DOS atau Notepad pada Windows dan lain-lain. Program assembler dapat membuat file berekstensi COM atau berekstensi EXE

MENCETAK HURUF
Membuat program untuk mencetak huruf dapat dilakukan dengan menyusun kode ASCII satu persatu yang ditempatkan dalam register DL sebagai tempat menyimpan data yang akan ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 02H yang disimpan dalam register AH.
Untuk membuat program COBA2.COM  dengan Turbo Assembler, maka file harus diberi nama COBA2.ASM yang diketik dalam teks editor yang ada  yaitu :
Coba    segment
        Assume   CS: Coba
        Org   100h

MULAI:   MOV    AH,02H     ; isi register AH dengan 02h untuk pelayanan
                             cetak huruf di layar
         MOV    DL,41H     ; isi register DL dengan 41H kode ASCII
                           ; huruf A
         INT    21h        ; cetak huruf di layar
         INT    20h        ; berhenti dan kembali ke DOS
Coba     ENDS
         END    MULAI

-   Simpan file tersebut dengan nama COBA2.ASM
-   Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan program selanjutnya sehingga menjadi COBA2.COM.

OPERASI LOOP
Merupakan operasi pengulangan atau iterasi untuk digunakan dalam cacahan atau penampilan karakter string berulang-ulang. Perintah ini memakai register CX sebagai penentu jumlah cacahan atau jumlah pengulangan, diakhiri dengan perintah LOOP untuk lompat kembali melakukan pengulangan.
Contoh program operasi loop dengan DEBUG :
                      
 xxxx : 0100   MOV   CX,05  (enter)  ;loop sebanyak 5 kali
      : 0103   MOV   DL,61           ;kode ASCII huruf a
      : 0105   MOV   AH,02           ;nomor pelayanan 02H
      : 0107   INT   21              ;cetak di layar       
      : 0109   INC   DL              ;tambahkan isi DL dengan 1
      : 010B   LOOP  0107            ;kembali ke alamat 0107H
      : 010D   INT   20              ;kembali ke DOS
      : 010F   _    (enter)          ;menuju ke prompt debug
  -                    

Contoh program operasi loop dengan TURBO ASSEMBLER :
Coba    segment
        Assume   CS: Coba
        Org   100h
MULAI:   MOV    CX,0005H   ; banyaknya loop 5 kali
         MOV    DL,61H     ; isi DL dengan kode ASCII huruf a
ULANG:   INT    21h        ; cetak huruf di layar
         INC    DL         ; tambahkan isi DL dengan 1
         LOOP   ULANG      ; kembali ke label ULANG
         INT    20h        ; berhenti dan kembali ke DOS
Coba     ENDS
         END    MULAI

Mencetak beberapa huruf
Mencetak beberapa huruf dapat dilakukan dengan 2 cara yaitu :
q  Menyusun beberapa huruf dalam kode ASCII satu persatu yang setiap huruf disimpan di DL
q  Menggunakan operasi loop untuk mencetak beberapa huruf  memakai instruksi INC untuk menambah isi register dengan 1 sehingga nilai DL bertambah lagi untuk dicetak.
Contoh pembuatan beberapa huruf yang disusun satu persatu dengan DEBUG
C\Assembler> debug (enter)

-A100 enter
xxxx : 0100   MOV  AH,02
xxxx : 0103   MOV  DL,41
xxxx : 0105   int  21
xxxx : 0107   MOV  DL,42
xxxx : 0109   INT  21
xxxx : 010B   MOV  DL,43
xxxx : 010D   INT  21
xxxx : 010F   INT  20
xxxx : 0111  
-rbx  enter
BX   0000
:0  enter
-rcx   enter
CX   0000
:11  enter
-N  COBA2.COM
-W
Writing 0011 bytes
-G
 ABC       (tampilan ABC di layar)
Program terminated normally

Untuk membuat beberapa huruf yang disusun satu persatu dengan Turbo Assembler, maka program harus diketik dalam teks editor yang ada  (EDIT atau SK) yaitu :
;Menyusun beberapa huruf kode ASCII
Coba    segment
        Assume   CS: Coba
        Org   100h

MULAI:   MOV    AH,02H     ; isi register AH dengan 02h untuk pelayanan
                             cetak huruf di layar
         MOV    DL,41H     ; isi register DL dengan 41H kode ASCII
                           ; huruf A
         INT    21h        ; cetak huruf di layar
         MOV    DL,42H     ; isi register DL dengan 42H huruf B
         INT    21H        ; cetak huruf di layar
         MOV    DL,43H     ; isi register DL dengan 43H huruf C
         INT    21h        ; cetak huruf di layar
         INT    20h        ; berhenti dan kembali ke DOS
Coba     ENDS
         END    MULAI

-     Simpan file tersebut dengan nama COBA3.ASM
-   Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan program selanjutnya sehingga menjadi COBA3.COM.
Contoh pembuatan beberapa huruf memakai operasi loop dengan DEBUG
C\Assembler>debug (enter)
-A100 (enter)                      
 xxxx : 0100   MOV   CX,05  (enter)  ;loop sebanyak 5 kali
      : 0103   MOV   DL,61           ;kode ASCII huruf a
      : 0105   MOV   AH,02           ;nomor pelayanan 02H
      : 0107   INT   21              ;cetak di layar       
      : 0109   INC   DL              ;tambahkan isi DL dengan 1
      : 010B   LOOP  0107            ;kembali ke alamat 0107H
      : 010D   INT   20              ;kembali ke DOS
      : 010F   _    (enter)          ;menuju ke prompt debug
  -RCX
 :F
  -RIP
 :100
  -N  COBA3.COM
  -W
  Writing 000F bytes
  -G
  abcde       (tampilan ABC di layar)
  Program terminated normally
                      

Untuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kita dapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas.

Langkah-langkah pembuatan program bahasa rakitan dengan Turbo Assembler sebagai berikut :

    1. Buat source program dengan teks editor dan beri nama file berekstensi .ASM dan simpan didirektory yang berisi TASM.EXE dan TLINK.EXE.

    1. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ).        caranya :   C>TASM   KAMPUS>ASM   (enter)

    1. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ).        caranya :   C>TASM   KAMPUS.ASM   (enter)

    1. Setelah menjadi coba1.obj, kita harus me-link berkas objek menjadi COM dengan perintah  TLINK.  Caranya : C>TLINK /t  KAMPUS (enter)

    1. Jika pada pengetikan TLINK tidak diberi tanda /t , maka objek program akan menjadi file berekstensi EXE.

    1. Coba1.com dapat langsung dieksekusi dari DOS prompt untuk melihat hasilnya di layar monitor dengan mengetik C>KAMPUS  (enter)

    1. Jika terdapat kesalahan, Turbo Assembler akan memberi tahu letak kesalahan pada baris program dan diedit dengan membuka kembali teks editor dan file .ASM

    1. Perbaiki program yang salah, kemudian dicompile ulang seperti langkah 2 dan 3.



Tip
·         Membuat program COM dapat dengan Turbo Assembler dapat dilakukan dengan 2 model pilihan yaitu model 1 (Code segment) atau model 2 (Model Small).
·         Membuat program dengan debug harus diketik satu persatu, jika ada kesalahan maka program harus diketik dari awal lagi.
·         Membuat program dengan Turbo Assembler jauh lebih baik, karena jika ada kesalahan kita tidak perlu lagi mengetik ulang tinggal kita perbaiki program yang mengalami kesalahan tadi melalui teks editor dan dicompile ulang.
·         Program mencetak huruf memakai kode ASCII yang disusun satu persatu dengan memanfaatkan pelayanan interupsi INT 21H servive numer 02H.
·         Operasi Loop digunakan untuk melakukan pengulangan atau iterasi dan banyaknya nilai pengulangan ditentukan oleh nilai register CX sebelumnya.
·         Program membuat beberapa huruf dapat disusun satu persatu dengan kode ASCII atau dengan memanfaatkan operasi loop.

Sumber :  handout-rakitan.doc