Sadrzaj tabele "Table" iskopirati u bafer "buffer". Prilikom kopiranja preskociti karaktere 'e' i 'a'.
;Prilikom kopiranja podataka u svakom podatku setovati b0 i b3, resetovati b2 i b4 i invertovati b1, b5 i b6.
;Ne koristiti eksplicitno zadavanje brojnih vrednosti: velicina tabele, ....
;POSTUPAK:
U subroutines.asm napisati podprogram ReadTable, koji koristi tehniku izracunatog skoka,
i definisati tabelu sa vrednostima:
0x23,56,'A',"Vezba 3"
Definisati variable:
table_counter i table_pointer u AccesBank-u
buffer potrebne velicine u Bank 2
Inicijalizovati, u glavnom programu, FSR0 sa adresom "buffer"
Inicijalizovati table_counter sa vrednoscu (TableEnd-Table)/2
Inicijalizovati PCLATU, PCLATH i table_pointer, sa adresom "Table-2".
Primenom programske petlje iskopirati sadrzaj tabele u bafer.U svakom prolazu
kroz petlju modifikovati podatke. Broj prolaza brojati table_counter-om.
Ovako izgleda resenje:
Main
lfsr FSR0,buffer
;
movlw low ((TableEnd-Table)/2)
movwf table_counter
;
movlw upper (Table-2)
movwf PCLATU
movlw high (Table-2)
movwf PCLATH
movlw low (Table-2)
movwf table_pointer
;
main_loop0
call ReadTable
xorlw 'e'
bz main_loop_no_copy
xorlw 'e' ^ 'a'
bz main_loop_no_copy
xorlw 'a'
iorlw B'00001001'
andlw B'11101011'
xorlw B'01100010'
movwf POSTINC0
main_loop_no_copy
decfsz table_counter
bra main_loop0
;
main_dead_loop
clrwdt
bra main_dead_loop
U pitanju je PIC 18F4520
Kako da uradim sledece: Kako da iz tabele karakter 'e' zamenim sa karakterom 'b'
Ja mislim da bi trebalo ovako ali nisam siguran.
main_loop0
call ReadTable
xorlw 'e'
bz main_loop_copy
xorlw 'e' ^ 'a'
bz main_loop_no_copy
main_loop_copy
movlw 'b'
movwf POSTINC0
decfsz table_counter
bra main_loop0
main_loop_no_copy
decfsz table_counter
bra main_loop0
Rad sa tabelama
Moderators: pedja089, stojke369, [eDo], trax
Re: Rad sa tabelama
Da li sam mozda nejasno objasnio moj problem.