Bahasa Assembly 1 (Compatibility Mode)
Bahasa Assembly 1 (Compatibility Mode)
Assembly Language For MCS‐51
SS
SISTEM MIKROPROSESSOR
O OS SSO
email: [email protected]
OPERASI PEMINDAHAN DATA
Immediate Addressing Mode
Register Addressing mode
dd d
Direct Addressing Mode
Indirect Addressing Mode
email: [email protected]
Immediate Addressing Mode
Immediate Addressing Mode
Immediate Addressing : Data langsung dipindahkan ke
register
Contoh:
MOV A,#30h ; Copy the immediate data 30h to A register
MOV R0,#001 10000B ; Copy the immediate data 30h to R0 register
MOV DPTR,#48 ; Copy the immediate data 30h to DPTR register
`
Catatan: 30hexa = 00110000biner = 48desimal
REGISTER ADDRESSING MODE
Register Addressing : Data dari register sumber dipindahkan
ke register tujuan
Contoh:
C t h
MOV R0,A ; Copy data from A register to R0 register
MOV A,R7 ; Copy data from R7register to A register
DIRECT ADDRESSING MODE
Register Addressing : Data dari register/RAM/SFR sumber
Register Addressing : Data dari register/RAM/SFR sumber
dipindahkan ke register/RAM/SFR tujuan
MOV A,80h ; Copy data from port 0 pins to A register
Contoh :
Contoh : MOV 80h A
MOV 80h,A ; Copy data from A register to the port 0
; Copy data from A register to the port 0
MOV 3Ah,#3Ah ; Copy immediate data 3Ah to RAM location 3Ah
MOV R0,12h ; Copy data from RAM location 12h to R0 register
MOV 8Ch,R7 ; Copy data from R7 register to SFR timer 0 high byte
MOV 5Ch A
MOV 5Ch,A ; Copy data from A register to RAM location 5Ch
; Copy data from A register to RAM location 5Ch
MOV 0A8h,77h ; Copy data from RAM location 77h to IE register
INDIRECT ADDRESSING MODE
R0 atau R1 digunakan untuk menunjukkan Destination Address
MOV @R0,#30h ; Copy immediate data 30h to the address in R0
MOV @R0 30h ; Copy the content of address 30h to the address in R0
@R0,30h C h f dd 30h h dd i R0
MOV @R0,A ; Copy the data in A to the address in R0
R0 atau R1 digunakan untuk menunjukkan Source Address
MOV 7Fh,@R0; Copy the content of the address in R0 to address 7Fh
7Fh,@R0; Copy the content of the address in R0 to address 7Fh
MOV A,@R0; Copy the content of the address in R0 to A
LATIHAN 1
1. Pindahkan data 34h ke R5, R6 dan R7 menggunakan
immediate addressing mode
mode.
2. Pindahkan data 35h ke register A kemudian copy data
tersebut ke tiap register R5
R5, R6 dan R7menggunakan
register addressing mode.
3. Pindahkan data 36h ke register
g R5, kemudian copy
py
data tersebut ke tiap register R6 dan R7 mengguna
kan direct addressing mode.
OPERASI LOGIKA
Logika Boolean
Operasi Rotate & Swap
email: [email protected]
Logika Boolean
OPERASI ROTATE & SWAP
RL Rotate Left : Geser isi register ke kiri satu bit.
RR Rotate Right : Geser isi register ke kanan satu bit.
RLC Rotate Left and Carry : Geser isi register dan carry flag ke kiri satu bit.
y g y g
RRC Rotate Right and Carry : Geser isi register dan carry flag ke kanan satu bit
SWAP Swap : Saling tukarkan nibble register, low nibble menjadi high nibble,
dan sebaliknya.
OPERASI ARITMATIKA
OPERASI ARITMATIKA
Increment & Decrement
Penjumlahan
Pengurangan
g g
Perkalian
Pembagian
g
email: [email protected]
I
Increment & Decrement
t&D t
Increment : Tambah satu isi register
Decrement : Turunkan satu isi register
k ii i
CONTOH :
MOV A,#3Ah ; A = 3Ah
DEC A ; A = 39h
MOV R0 #15h
MOV R0,#15h ; R0 = 15h
; R0 = 15h
MOV 15h,#12h ; Internal RAM 15h = 12h
INC @R0 ; Internal RAM 15h = 13h
DEC 15h ; Internal RAM 15h = 12h
INC R0 ; R0 = 16h
MOV 16h,A
, ;; Internal RAM 16h = 39h
INC @R0 ; Internal RAM 16h = 3Ah
MOV DPTR,#12FFh ; DPTR = 12FFh
INC DPTR
INC DPTR ; DPTR = 1300h
; DPTR = 1300h
DEC 83h ; DPTR = 1200h(SFR 83h adalah byte DPH)
PENJUMLAHAN
Penjumlahan tak bertanda dan bertanda
Unsigned and Signed Addition
Penjumlahan unsigned number dapat menghasilkan carry flag
Penjumlahan unsigned number dapat menghasilkan carry flag
jika hasil penjumlahan melebihi FFh, atau borrow flag jika ang
ka pengurang lebih besar dari yang di kurangi.
Penjumlahan Tak Bertanda / Unsigned Addition
Penjumlahan Tak Bertanda / Unsigned Addition
Carry flag dapat digunakan untuk mendeteksi hasil penjumla
han yang melebihi FFh Jika carry = 1 setelah penjumlahan
han yang melebihi FFh. Jika carry = 1 setelah penjumlahan,
maka carry tersebut dapat ditambahkan ke high byte sehing
ga hasil penjumlahan tidak hilang.
Misalnya :
Dari penjumlahan diatas terdapat carry dari bit ke‐7, maka
D i j l h di d d i bi k 7 k
C=1. Pada bit ke‐6 juga terdapat carry, maka OV=0.
Pada penjumlahan ini tidak perlu manipulasi apapun karena
hasil penjumlahannya sudah benar.
Jika kedua angka yang dijumlahkan adalah positif, maka ada
kemungkinan hasil penjumlahan melebihi +127d, misalnya :
Ada kelebihan 22d dari batas +127d. Tidak ada carry dari
Ada kelebihan 22d dari batas +127d Tidak ada carry dari
bit ke‐7, maka C=0, ada carry dari bit ke‐6, maka OV=1.
Contoh penjumlahan dua angka positif yang tidak
melebihi +127d adalah :
Dari penjumlahan diatas tidak terdapat carry dari bit ke‐7
maupun bit ke 6 maka C 0 dan OV 0
maupun bit ke‐6, maka C=0 dan OV=0.
Penjumlahan dua angka negatif yang tidak melebihi
‐128d adalah sbb :
128d adalah sbb :
Terdapat carry dari bit ke‐7, maka C=1, ada carry dari
bit ke‐6,
bit ke 6, maka OV
maka OV=0.
0.
Penjumlahan dua angka negatif yang hasilnya
melebihi ‐128d adalah sbb :
Ada kelebihan ‐12d. Ada carry dari bit ke‐7, maka C=1,
tidak ada carry dari bit ke‐6, maka OV=1.
Dari semua contoh diatas, manipulasi program perlu dila
, p p g p
kukan sbb :
PENGURANGAN
Catatan :
Carry flag (C) akan 1 jika terdapat borrow pada bit ke‐7.
Auxilliary Carry flag (AC) akan 1 jika terdapat borrow pada bit ke‐3.
O
Over Flow flag (OV) akan 1 jika terdapat borrow pada bit ke‐7, tapi tidak
Fl fl (OV) k 1 jik t d t b d bit k 7 t i tid k
terdapat borrow pada bit ke‐6 atau terdapat borrow pada bit ke‐6 tetapi
tidak pada bit ke‐7,dimana dapat dieksperikan dengan operasi logika sbb:
Pengurangan tak bertanda dan bertanda
g g
Unsigned and Signed Substraction
Unsigned number : Positif 255d (C=0, A=FFh) s/d Negatif
i d b i if d( h) /d if
255d (C=1, A=01h)
Signed number : ‐128d s/d +127d atau 1000000b s/d
g
01111111b
Oleh karena carry flag selalu disertakan dalam penguran
gan, maka carry flag harus di set 0 agar tidak mempengar
uhi pengurangan.
g g g p g
Pengurangan unsigned number dapat menghasilkan
borrow jika angka pengurang lebih besar dari yang
dikurangi.
Pengurangan Tak Bertanda / Unsigned Substraction
Berikut adalah contoh pengurangan dimana pengurang
l bih b
lebih besar dari yang dikurangi :
d i dik i
C=1 dan OV=0. Komplemen 171d adalah 85d
SOAL :
Kurangkan 100d – 015d, serta jelaskan status flag‐nya!
Kurangkan 100d – 015d serta jelaskan status flag‐nya!
Pengurangan Bertanda / Signed Substraction
/
Hasil pengurangan bertanda tidak boleh melebihi ‐128d
p g g
atau +127d.
Dari pengurangan diatas terdapat borrow dari bit ke‐7
D i di t t d t b d i bit k 7
dan ke‐6, maka C=1 dan OV=0.Pada pengurangan ini
tidak perlu manipulasi apapun karena hasil pengurangan‐
nya sudah benar.
Tidak ada borrow dari bit ke‐7 atau bit ke‐6, maka C=0 dan OV=0.
Tidak ada borrow dari bit ke‐7 tapi ada borrow dari bit ke‐6,
maka C=0 dan OV=1. Hasilnya perlu dimanipulasi.
Ada borrow dari bit ke‐7 dan tidak ada borrow dari bit ke‐6,
maka C=1 dan OV=1. Hasilnya perlu dimanipulasi.
C t t
Catatan : Jika OV=1 maka komplemenkan hasilnya.
Jik OV 1 k k l k h il
PERKALIAN
Catatan :
O
Over Flow flag (OV) akan 1 jika A X B > FFh.
Fl fl (OV) k 1 jik A X B FFh
Carry flag (C) selalu 0.
Nilai maksimum hasil perkalian antara A dan B adalah
FE01h, jika A dan B berisi FFh.
Contoh :
MOV A,#7Bh
MOV A,#7Bh ;; AA=7Bh
7Bh
MOV B,#02h ; B=02h
MUL AB ; A=F6h dan B=00h; OV=0
MOV A,#06Ah ; A=6Ah
MUL AB
MU A ;; A=D4h dan B=00h; OV=0
A 4h dan 00h; OV 0
PEMBAGIAN
Catatan :
O
Over Flow flag (OV) akan 1 jika terjadi pembagian dengan 0.
Fl fl (OV) k 1 jik t j di b i d 0
Carry flag (C) selalu 0.
Contoh ::
Contoh
MOV A,#0FFh ; A=FFh=255d
MOV B,#2Ch ; B=2Ch=44d
DIV AB
DIV AB ; A=05h
; A 05h dan B
dan B=23h=35d
23h 35d
DIV AB ; A=00h dan B=05h
DIV AB ; A=00h dan B=00h
DIV AB ;
; A=?? Dan B=??, OV=1
,
NEXT WEEK
Operasi Percabangan
Operasi Timer / Co nter
Operasi Timer / Counter
email: [email protected]