• Tidak ada hasil yang ditemukan

Latihan 13. Aplikasi instruksi transfer,aritmatik,branch

N/A
N/A
INSAN BAGUS KARUNIA Mahasiswa PNJ

Academic year: 2023

Membagikan "Latihan 13. Aplikasi instruksi transfer,aritmatik,branch"

Copied!
4
0
0

Teks penuh

(1)

;MATERI 1 : Pengenalan Instruksi Dasar AVR (simulasi)

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

; untuk operasi pengurangan HEXA blok n byte dengan Sign bit

;Tujuan : Untuk mengenal dan memahami konsep dasar program Pengurangan

; HEXA n byte dengan output TMF Positive,Negative (K2)dan

; Negative TMF

;===========================================================================

;= 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

DOC_SPM_PNJ_2015 (Materi 1_AVR32 Instruksi Aritmatik dan Logik_FS Dengan Sign bt nbyte) 1/4

(2)

; Contoh:

; .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 dengan sign bit Hexa n byte (Full Subtractor)

;==========================================================================

;Langkah_1 inisialisasi register yang akan dipakai

;register X Y Z sebagai pointer alamat

;---

DOC_SPM_PNJ_2015 (Materi 1_AVR32 Instruksi Aritmatik dan Logik_FS Dengan Sign bt nbyte) 2/4

(3)

; reg X

ldi r26,0x6f 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

;---

;Proses pengurangan selesai

;---

;Cek Cy bila ='0' ---> positive ----> langsung STOP

; bila ='1' ---> Negative = K2 ---> perlu konversi ke TMF

; dan simpan di alamat z

;Alamat MSB+ menunjukkan sign bit

; bila 2B Menunjukan nilai positip (+) atau kode ASCII 2Bh= '+ '

; bila 2D Menunjukan nilai negatip (-) atau kode ASCII 2Dh= '- '

;---

;branch clear carray byte BRCC HASIL_POSITIP

;---

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

(4)

HASIL_NEGATIP:

;Simpan kode ASCII negatip ke alamat MSB+1 ldi r16,0x2d

st z,r16

; Proses konversi K2 ke TMF

; inisialisasi alamat Z

; reg Z

ldi r30,0x8f ldi r31,0x00

;ambil LSB dan konversi ke TMF ld r0,z

;NEG = K2 (Negative) neg r0

st z,r0

; byte brikutnya ld r0,-z

;COM = K1 (Complement) com r0

st z,r0

; byte brikutnya ld r0,-z

;COM = K1 (Complement) com r0

st z,r0

; konversi selesai rjmp STOP

;--- HASIL_POSITIP:

;Simpan kode ASCII positip ke alamat MSB+1 ldi r16,0x2B

st z,r16

;selesai

;---

;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 Dengan Sign bt nbyte) 4/4

Referensi

Dokumen terkait