0% found this document useful (0 votes)
275 views29 pages

Bahasa Assembly 1 (Compatibility Mode)

The document discusses various addressing modes and operations in assembly language for the MCS-51 microprocessor. It describes four addressing modes: immediate, register, direct, and indirect addressing. It also explains logical, arithmetic, rotate/swap, and other operations like addition, subtraction, and multiplication. Examples are provided to illustrate how to use different instructions to perform operations using different addressing modes on registers, memory locations, and SFRs.

Uploaded by

itmy
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
275 views29 pages

Bahasa Assembly 1 (Compatibility Mode)

The document discusses various addressing modes and operations in assembly language for the MCS-51 microprocessor. It describes four addressing modes: immediate, register, direct, and indirect addressing. It also explains logical, arithmetic, rotate/swap, and other operations like addition, subtraction, and multiplication. Examples are provided to illustrate how to use different instructions to perform operations using different addressing modes on registers, memory locations, and SFRs.

Uploaded by

itmy
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Assembly Language For MCS‐51

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 :

C=1 dapat ditambahkan ke byte berikutnya (high byte)


C=1 dapat ditambahkan ke byte berikutnya (high byte)
Penjumlahan Bertanda / Signed Addition
Penjumlahan Bertanda / Signed Addition
Hasil penjumlahan bertanda tidak boleh melebihi ‐128d atau 
+127d Aturan ini tidak menjadi masalah ketika angka yang
+127d. Aturan ini tidak menjadi masalah ketika angka yang     
dijumlahkan positif dan negatif, 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]

You might also like