90 lines
1.9 KiB
Text
90 lines
1.9 KiB
Text
; constant array (elements are unchangeable) - the array is stored in the CODE segment
|
|
myarray db 'Array' ; db = define bytes - initializes 5 bytes with values 41, 72, 72, etc. (the ascii characters A,r,r,a,y)
|
|
myarray2 dw 'A','r','r','a','y' ; dw = define words - initializes 5 words (1 word = 2 bytes) with values 41 00 , 72 00, 72 00, etc.
|
|
; how to read index a of the array
|
|
push acc
|
|
push dph
|
|
push dpl
|
|
mov dpl,#low(myarray) ; location of array
|
|
mov dph,#high(myarray)
|
|
movc a,@a+dptr ; a = element a
|
|
mov r0, a ; r0 = element a
|
|
pop dpl
|
|
pop dph
|
|
pop acc ; a = original index again
|
|
|
|
; array stored in internal RAM (A_START is the first register of the array, A_END is the last)
|
|
; initalise array data (with 0's)
|
|
push 0
|
|
mov r0, #A_START
|
|
clear:
|
|
mov @r0, #0
|
|
inc r0
|
|
cjne r0, #A_END, clear
|
|
pop 0
|
|
; how to read index r1 of array
|
|
push psw
|
|
mov a, #A_START
|
|
add a, r1 ; a = memory location of element r1
|
|
push 0
|
|
mov r0, a
|
|
mov a, @r0 ; a = element r1
|
|
pop 0
|
|
pop psw
|
|
; how to write value of acc into index r1 of array
|
|
push psw
|
|
push 0
|
|
push acc
|
|
mov a, #A_START
|
|
add a, r1
|
|
mov r0, a
|
|
pop acc
|
|
mov @r0, a ; element r1 = a
|
|
pop 0
|
|
pop psw
|
|
|
|
; array stored in external RAM (A_START is the first memory location of the array, LEN is the length)
|
|
; initalise array data (with 0's)
|
|
push dph
|
|
push dpl
|
|
push acc
|
|
push 0
|
|
mov dptr, #A_START
|
|
clr a
|
|
mov r0, #LEN
|
|
clear:
|
|
movx @dptr, a
|
|
inc dptr
|
|
djnz r0, clear
|
|
pop 0
|
|
pop acc
|
|
pop dpl
|
|
pop dph
|
|
; how to read index r1 of array
|
|
push dph
|
|
push dpl
|
|
push 0
|
|
mov dptr, #A_START-1
|
|
mov r0, r1
|
|
inc r0
|
|
loop:
|
|
inc dptr
|
|
djnz r0, loop
|
|
movx a, @dptr ; a = element r1
|
|
pop 0
|
|
pop dpl
|
|
pop dph
|
|
; how to write value of acc into index r1 of array
|
|
push dph
|
|
push dpl
|
|
push 0
|
|
mov dptr, #A_START-1
|
|
mov r0, r1
|
|
inc r0
|
|
loop:
|
|
inc dptr
|
|
djnz r0, loop
|
|
movx @dptr, a ; element r1 = a
|
|
pop 0
|
|
pop dpl
|
|
pop dph
|