dasar-dasar pemrograman assembler
Post on 22-Feb-2016
160 Views
Preview:
DESCRIPTION
TRANSCRIPT
Dasar-Dasar Pemrograman
AssemblerBy
Kustanto
MOV :digunakan untuk menyalin data antara 2 operand.
MOVC :Untuk menyalin data yang terdapat pada memory program internal.
MOVX :Untuk menyalin data yang terdapat pada memory program eksternal
1. Instruksi (MOV, MOVC, dan MOVX)
Contoh Syntax KeteranganMOV A,R1 Salin nilai R1 ke akumulatorMOV A,@R1 Salin isi lokasi yang ditunjuk R1 ke AMOV A,P1 Salin data pada port 1 ke
AkumulatorMOV P1,A Salin data pada Akumulator ke Port
1MOVC A,@X+DPTR Salin data int. Yang di tunjuk DPTR
ke AMOVX A,@DPTR Salin data eks. Yang ditunjuk DPTR
ke AMOVX @DPTR,A Salin data Akumulator ke lokasi
yang ditunjuk DPTR
Contoh
ADD : Digunakan untuk melakukan operasi penjumlahan Akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator.
SUBB :Untuk melakukan operasi pengurangan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator.
2. Instruksi (ADD dan SUBB)
Contoh Syntax KeteranganADD A,#20 A=A + 20ADD A,@R0 A=A + [R0]SUBB A,B A=A-BSUBB A,#10 A=A-10
Contoh
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: A=50h B=A0hMUL A,B
hasilnya=3200h maka: A=00h B=32h
3. Instruksi (MUL AB dan DIV AB)
DIV AB :digunakan untuk melakukan operasi pembagian antara Akumulator dengan regiser B. Hasilnya pembagian disimpan pada Akumulator dan sisa pembagian disimpan pada register B.
Contoh: A=FBh B=12hDIV A,B
Hasilnya= 0Dh maka: A=0Dh B=11h
DEC :digunakan untuk melakukan pengurangan sebesar satu pada suatu operand.
INC :digunakan untuk melakukan penambahan sebesar satu pada suatu operand.
3. Instruksi (DEC dan INC)
Syntax KeteranganDEC A A=A-1DEC @R0 [R0]=[R0] – 1INC A A=A + 1INC DPTR DPTR= DPTR + 1
Contoh:
ORL :Untuk melakukan operasi OR antara dua operand.
ANL :Untuk melakukan operasi AND antara dua operand.
CPL :Untuk melakukan operasi komplemen suatu operand.
4. Intruksi (ORL, ANL dan CPL)
Syntax Akumulator Register B HasilORL A,B 0011 1010 1111 0000 1111 1010ANL A,B 0011 1010 1111 0000 0011 0000CPL A 0011 1010 1111 0000 1100 0101
Contoh
RR :Untuk melakukan operasi pergeseran ke kanan sebanyak 1 bit.
RL :Untuk melakukan operasi pergeseran ke kiri sebanyak 1 bit.
SWAP :Untuk melakukan operasi pertukaran data low nible dan high nible
5. Instruksi (RR, RL dan SWAP)
Syntax Akumulator HasilRR A 0011 1010 0001 1101RL A 0011 1010 0111 0100SWAP A 0011 1010 1010 0011
Contoh
SETB : digunakan untuk memberikan logik 1 pada bit operand.
CLR :Untuk memberikan logik 0 pada bit operand.
Contoh:SETB P2.0SETB P0.0CLR P2.1
6. Instruksi (SETB dan CLR)
PUSH :Untuk menyimpan operand ke dalam stack.
POP :Untuk mengembalikan nilai operand dari stack.
DJNZ : Melakukan lompatan jika nilainya di kurangi 1 dan hasilnya tidak nol.
7. Instruksi PUSh dan POP, DJNZ
push 7push 6push 5mov R7,#04h
loopa: mov R6,#0ffhloopb: mov R5,#0ffh
djnz R5,$djnz R6,loopbdjnz R7,loopapop 5pop 6pop 7
Contoh
JMP (jump) :Melakukan lompatan ke suatu blok program.
Contoh:
org 00hstart: jmp looporg 300hloop: setb p0.0clr p0.1sjmp loopend
Instruksi JMP
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: org 00hstart: mov p0,#00hjb p0.0, nyalasjmp start
nyala: setb p2.0sjmp startend
Instruksi JB dan JNB
org 00hstart: mov p0,#0ffh
jnb p0.0,nyalasjmp start
nyala: setb p2.0sjmp startend
Contoh: instruksi JNB
JZ (Jump if zero) :Untuk melakukan lompatan ke suatu blok program jika nilai operand 0 (zero).
JNZ (Jump if not zero) : Untuk melakukan lompatan ke suatu blok program jika nilai operand 1 (not zero).
Instruksi JZ dan JNZ
org 00hutama: mov R1,#10start: dec R1
jz R1,nyalasjmp start
nyala: setb p2.0jmp utamaend
Contoh
CJNE (Compare and Jump if Not Equal) :Digunakan untuk melakukan pembandingan dua operand dan lompat ke blok program lain jika tidak sama.
Contoh:org 00hutama: mov a,#10tambah: inc acjne a,#20,tambahsetb p2.0sjmp utamaend
Instruksi CJNE
CALL :dignakan untuk memanggil prosedur tertentu dalam program (subprogram).
RET :digunakan untuk mengembalikan ke baris program yang melakukan CALL.
Instruksi CALL dan RET
org 00hkedip: setb p2.0call tundaclr p2.0call tundasjmp kedip
tunda: mov r7,#20la: mov r6,#0ffhlb: mov r5,#0ffhdjnz r5,$djnz r6,lbdjnz r7,laret
end
Contoh
TERIMA KASIHThanks
top related