You are on page 1of 3

;MATERI 1 : Pengenalan Instruksi Dasar AVR (simulasi)

;Judul : Latihan 12. Aplikasi instruksi transfer,aritmatik,branch


; untuk operasi pengurangan HEXA blok n byte Non Sign bit
;Tujuan : Untuk mengenal dan memahami konsep dasar program Pengurangan
; HEXA n byte
;===========================================================================
;= MODUL PEMROGRAMAN MICROCONTROLLER ATMega8535/32 =
;= POLITEKNIK NEGERI JAKARTA =
;= TEKNIK ELEKTRONIKA =
;= Disusun oleh S u p o m o =
;===========================================================================
; A. Pendefinisian Dan Inisialisasi uC dan STACK POINTER
;===========================================================================
; 1. Difinisikan uC yang akan dipakai dengan menggunakan file *.INC
; Sumber untuk file ini ber ada di
; "C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\*.INC
; Contoh:
; .include "m32def.inc"
;
; 2. Difinisikan nama-nama label dalam bentuk directive (pengarah) yang akan
; dipakai sesuai yang diinginkan.
; Contoh:
; .def data_1=r17
; .def data_2=r18
;
; .equ nilai_awal = 20
; .equ nilai_akhir= 100
;
; 3. Insialisasi alamat segment program di ROM CSEG (code segment)
; Contoh:
; .cseg
; .org 0000h
;
; 4. Insialisasi alamat program utama dan Insialisasi alamat stack pointer
; Contoh:
; ljmp main
;
; 5. Insialisasi alamat stack pointer
; syarat utama sebelum menggunakan intruksi PUSH, Call, Interrupt
; register stack pointer (register sp)harus diinsialisasi
; diletakkan di RAM internal paling atas (085fh) untuk AVRMega32
; Contoh:
; MAIN:
; ldi r22,0x08
; out SPH,r22
; ldi r22,0x5f
; out SPL,r22
; atau
; ldi r22,high(RAMEND)
; out SPH,r22
; ldi r22,low(RAMEND)
; out SPL,r22
;
; 6. Penyusunnan program materi
; Contoh:
; Latihan 1:
; 7. Penutup program
; Contoh:

DOC_SPM_PNJ_2015 (Materi 1_AVR32 Instruksi Aritmatik dan Logik_FS non Sign bt nbyte ) 1/3
; .exit
; .end
;
; 8. Output file dari hasil Buliding atau dicompile (default)
; a. *.HEX
; b. *.LST
; c. *.MAP
; d. *.OBJ
; e. *.BAT
;
;==========================================================================
; B. Penyusunan program
;==========================================================================
;Langkah_1 Pendefinisian tipe uC yang digunakan
.include "m32def.inc"

;-------------------------------------------------------------------------
;Langkah_2 Pendefinisian nama-nama label
.def PSW_1=r14
.def PSW=r15
.def RegA=r16
.def RTMP_1=r17
.def RTMP_2=r18
.def RTMP_3=r19
.def RTMP_4=r20
.def RTMP_5=r21

;-------------------------------------------------------------------------
;Langkah_3 Insialisasi alamat segment program
.cseg
.org 0000

;-------------------------------------------------------------------------
;Langkah_4 Inisialisasi alamat program utama
rjmp MAIN

;-------------------------------------------------------------------------
;Langkah_5 Inisialisasi alamat stack pointer di alamat RAM akhir

MAIN:
ldi r22,high(RAMEND)
out SPH,r22
ldi r22,low(RAMEND)
out SPL,r22

;==========================================================================
;-------------------------------------------------------------------------
;Langkah_6 Penyusunnan program materi

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;==========================================================================
; B. Penyusunan Prg Pengurangan non sign bit Hexa n byte (Half Subtractor)
;==========================================================================
;Langkah_1 inisialisasi register yang akan dipakai
;register X Y Z sebagai pointer alamat
;-------------------------------------------------
; reg X
ldi r26,0x6f

DOC_SPM_PNJ_2015 (Materi 1_AVR32 Instruksi Aritmatik dan Logik_FS non Sign bt nbyte ) 2/3
ldi r27,0x00
;----------------
; reg y
ldi r28,0x7f
ldi r29,0x00
;----------------
; reg Z
ldi r30,0x8f
ldi r31,0x00
;-----------------
;inisialisasi counter byte reg. r16=3 untuk 3 byte
ldi r16,0x3

;-------------------------------------------------
;Langkah_2 Proses operasi pengurangan Z = X-Y
;-------------------------------------------------
;dimulai dari byte LSB
;----------------------
;CLEAR CARRY
;untuk proses half subtractor
CLC
;-------------
KURHEX:
ld r0,x
ld r1,y
sbc r0,r1
st z,r0
;------------
;amankan sementara SREG di R10
IN R10,SREG
;------------
;perbarui alamat X,Y,Z
sbiw X,1
sbiw Y,1
sbiw Z,1
;-----------
;kembalikan SREG dari R10
OUT SREG,R10
;------------
;lakukan ulang sampai n byte
dec r16
brne KURHEX

;-------------------------------------------------
;Langkah_3 Proses selesai stop mesin
;-------------------------------------------------
stop: rjmp stop

;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;-------------------------------------------------------------------------
;Langkah_4 Penutup program
;=========================================================================
.exit
.end
;=========================================================================

DOC_SPM_PNJ_2015 (Materi 1_AVR32 Instruksi Aritmatik dan Logik_FS non Sign bt nbyte ) 3/3

You might also like