Senin, 27 April 2020

BAHASA ASSEMBLY


Mata Pelajaran : Teknik Pemrograman, Mikroprosesor dan Mikrokontroller


Bahasa Assembly


Bahasa Assembly adalah bahasa pemrograman yang terdiri dari instruksi-instruksi yang menggantikan kode-kode biner dari bahasa mesin dengan mnemonic sehingga mudah diingat, biasa disebut kode sumber. Bahasa mesin adalah kumpulan kode biner yang merupakan instruksi yang bisa dijalankan oleh computer, biasa disebut  kode objek.

Misalkan suatu instruksi penjumlahan akan dituliskan dalam bahasa mesin yang berupa kode-kode biner 10110011, dapat dibuat dalam bahasa assembly dengan kode mnemonic ADD sehingga mudah diingat dibandingkan dengan penulisan dalam bentuk kode 0 dan 1.

Dalam setiap instruksi membutuhkan suatu operand baik berupa data langsung maupun tidak langsung atau berupa alamat suatu lokasi memori tempat menyimpan data bersangkutan. Baris-baris program yang mengandung instruksi mesin atau pengarah assembler harus mengikuti aturan program assembler ASM51.

Beberapa contoh dan kegunaannya bahasa assembly directive (kode pengarah bagi assembler compiler)
EQU                      : pendefinisian konstanta
DBIT                     : pendefinisian data dengan ukuran 1 bit
ORG                      : inisialisasi alamat mulai program
DATA                    : pendefinisian internal direct data (data langsung)
IDATA                   : pendefinisian internal indirect data (data tidak langsung)
END                      : penanda akhir program
CODE                    : penanda mulai pendefinisian program
#INCLUDE           : mengikutsertakan file program line

Beberapa contoh dan kegunaan instruksi yang harus di eksekusi oleh CPU mikrokontroller
ACALL                   : Absolute Call, memanggil sub rutin program
AJMP                    : Absolute Jump, memindahkan kendali program ke lokasi tertentu
CJNE                     : Compare and Jump if Not Equal, membandingkan data langsung dengan dengan lokasi   memori tertentu
CLR                       : Clear, mereset data akumulator
DEC                       : Decrement, mengurangi isi lokasi memori yang di tuju
DJNZ                     : Decrement and Jump if Not Zero, mengurangi isi register dengan 1 hingga           hasilnya 0 maka instruksi selanjutnya akan dilaksanakan
INC                       : Increment, menambahkan isi memori dengan 1
MOV                     : Move from memory, memindahkan isi akumulator/register atau data
RET                       : Return from subroutine, kembali dari suatu subrutin program ke alamat terakhir subrutin tersebut dipanggil
RR                         : Rotate Right, memutar akumulator ke kanan (right)

Contoh program bahasa assembly:

$mod51
org 0H

ljmp loop

delay:
      mov R7,#10
l1:   mov R6,#85
l2:   mov R5,#85
l3:   djnz R5,l3     
      djnz R6,l2     
      djnz R7,l1
      ret

GerakKiri:
               mov a,#0FEH
geki:      mov P2,a
               rl a
               acall delay
               cjne a,#7FH,geki
               ret
GerakKanan:
               mov a,#7FH
geka:     mov P2,a
               rr a
               acall delay
               cjne A,#0FEH,geka
               ret
              
loop:      acall Gerakkiri
               acall GerakKanan
               sjmp loop
              
end

Tidak ada komentar:

Posting Komentar