Jumat, 06 Februari 2015
Dasar-dasar Pemrograman Bahasa Assembler
MOV,MOVC dan MOVX
Instruksi MOV digunakan untuk menyalin data antara 2 operand.
Instruksi MOVC digunakan untuk menyalin data yang terdapat pada memeori program internal.
Instruksi MOVX digunakan untuk menyalin data yang terdapat pada memori program eksternal.
Contoh Syntax
Keterangan
MOV A,R1
Salin nilai R1 ke Accumulator
MOV A@R1
Salin isi lokasi yag ditunjuk R1 ke A
MOV A,P1
Salin data pada Port 1 ke Akumulator
MOV P1,A
Salin data pada Akumulator ke Port 1
MOVC A,@X+DPTR
Salin data int. yang ditunjuk DPTR ke A
MOVX A,@DPTR
Salin data eks. Yang ditunjuk DPTR ke A
MOVX @DPTR,A
Salin data akumulator ke lokasi yang ditunjuk DPTR
ADD dan SUBB
Instruksi ADD digunakan untuk melakukan operasi penjumlahan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator
Instruksi SUBB digunakan untuk melakukan operasi pengurangan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator.
Contoh Syntax
Keterangan
ADD A,@#20
A = A + 20
ADD A,@R0
A = S + [ R0 }
ADD A,B
A = A - B
ADD A,@10
A = A - 10
MUL AB dan DIV AB
Instruksi MUL AB digunakan untuk melakukan operasi perkalian antara akumulator dengan register B. Hasilnya berupa data 16 bit dengan low byte pada A dan high byte pada B.
Contoh:
Misal A = 50h ; B = A0h
MUL a,b
Hasil = 3200h, maka A = 00h dan B = 32h
Instruksi DIV AB digunakan untuk melakukan operasi pembagian antara akumulator dengan register B. Hasilnya pembagian disimpan pada akumulator dan sisa pembagian disimpan pada register B.
Misal :
A = FBh ; B = 12h
DIV a,b
Hasil = 0Dh , maka A = 0Dh B=11h
Karena FBh = 0D x 12 + 11
DEC dan INC
Instruksi DEC digunakan utnuk melakukan pengurangan sebesar satu pada suatu operand.
Instruksi INC digunakan untuk melakukan penambahan sebesar satu pada suatu operand.
Contoh Syntaks
Keterangan
DEC A
A = A – 1
DEC @R0
[ R0 ] = [ R0 ] – 1
INC A
A = A + 1
INC DPTR
DPTR = DPTR + 1
ORL, ANL dan CPL
Instruksi ORL digunakan untuk melakukan operasi OR antara dua operand.
Instrukis ANL digunakan utnuk melakukan operasi AND antara dua operand.
Instruksi CPL digunakan untuk melakukan operasi komplemen suatu operand.
Syntaks
Akumulator
Register B
Hasil
ORL A,B
0011 1010
1111 0000
1111 1010
ANL A,B
0011 1010
1111 0000
0011 0000
CPL A
0011 1010
1100 0101
RR,RL dan SWAP
Instruksi RR digunakan untuk melakukan operasi pergeseran kekanan sebanyak 1 bit .
Instruksi RL digunakan utnuk melakukan operasi pergeseran ke kiri sebanyak 1 bit.
Instruksi SWAP digunakan utnuk melakukan operasi pertukaran data low nible dan high nible.
Syntaks
Akumulator
Hasil
RR A
0011 1010
0001 1101
RL A
0011 1010
0111 0100
SWAP A
0011 1010
1010 0011
SETB dan CLR
Instruksi SETB digunakan untuk memberikan logika 1 pada bit operand,
Instruksi CLR digunakan untuk memberikan logika 0 pada bit operand.
Contoh:
SETB p2.0
SETB acc.0
CLR p2.1
CLR acc.1
PUSH dan POP
Instruksi PUSH digunakan untuk menyimpan operand ke dalam stack.
Instruksi POP digunakan untuk mengembalikan nilai operand dari stack,
Contoh :
PUSH 7
PUSH 6
PUSH 5
MOV R7,#04H
LUPA: MOV R6,#0FFH
LUPB: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,LUPA
DJNZ R7,LUPB
POP 5
POP 6
POP 7
JMP,JB,JNB,JZ,JNZ dan CJNE
JMP (jump) digunakan untuk melakukan lpompatan ke suatu blok program.
Contoh:
Org 00h
Start:
Jmp loop
Org 300h
Loop:
Setb p0.0
Clr p0.1
Sjmp loop
End
JB (Jump if Bit) dan JNB (Jump If Not Bit) digunakan untuk melakukan lompatan ke suatu blok program jika nilai operand 1 (bit) atau 0 (Not bit).
Contoh JB:
Org 00h
Start:
Mov p0,#00h
Jb p0.0,Nyala
Sjmp Start
Nyala:
Setb p2.0
Sjmp Start
End
Contoh JNB:
Org 00h
Start:
Mov p0,#00h
Jnb p0.0,Nyala
Sjmp Start
Nyala:
Setb p2.0
Sjmp Start
End
JZ (Jump if Zero) dan JNZ (Jump If Not Zero) digunakan utnuk melakukan lpmpatan ke suatu blok program jika nilai operand 0 (Zero) atau <> 0 (Not Zero).
Contoh:
Org 00h
Utama:
Mov rl,#10
Jz rl,Nyala
Sjmp start
Nyala:
Setb p2.0
Jmp Utama
End
CJNE (Compare and Jump If Not Equal) digunakan utnuk melakukan pembandingan dua operand dan lompat ke blok program lain jika tidak sama.
Contoh:
Org 00h
Utama:
Mov a,#10
Tambah:
Inc a
Cjne a,#20,tambah
Setb p2.0
Sjmp utama
end
CALL dan RET
Instruksi CALL digunakan untuk memanggil prosedur tertentu dalam program (subprogram).
Instruksi RET digunakan untuk mengembalikan ke baris program yang melakukan CALL.
Contoh:
Org 00h
Kedip:
Setb p2.0
Call tunda
Clr p2.0
Call tunda
Sjmp kedip
Tunda:
Mov r7,#20h
La: mov r6,#0ffh
Lb: mov r5,#0ffh
Djnz r5,$
Djnz r6,lb
Djnz r7,la
Ret
End
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar