Тема: Рішення деяких задач мовою A51 середовища keil
Завдання: Зберегти вміст поточного банку регістрів в ЗПД з адреси C200h
XSEG AT 0С200h ; визначаємо абсолютний сегмент пам'яті
; в зовнішній пам'яті даних (XDATA)
ORG 0С200h ; переміщуємо лічильник розташування на комірку 0C200h
ARR1: DS 08h ; помітимо цю комірку міткою ARR1 і зарезервуємо 8 комірок
CSEG AT 0С000h ; визначаємо абсолютний сегмент пам'яті
; в пам'яті програм (CODE)
ORG 0С000h ; переміщуємо лічильник розташування на комірку 0C000h
MOV R0, #0 ; Заповнимо чимось регістри
MOV R1, #1
MOV R2, #2
MOV R3, #3
MOV R4, #4
MOV R5, #5
MOV R6, #6
MOV R7, #7
MOV DPTR, #ARR1 ; перемістимо в DPTR адресу першої комірки в ЗПД
MOV PSW, #00001000b ; оберемо перший банк регістрів
MOV R0, #00h ; завантажимо в R0 адресу R0 із нульового банку
MOV R1, #08h ; визначимо кількість кроків для циклу
LABEL: MOV A, @R0 ; переміщуємо в регістр A
; значення регістру із нульового банку
MOVX @DPTR, A ; переміщуємо в ЗПД значення акумулятора
INC DPTR ; збільшемо значення DPTR на 1,
; таким чином помістимо в нього адресу наступної комірки
INC R0 ; збільшимо значення R0 на 1,
; таким чином помістимо в нього адресу наступного регістру
DJNZ R1, LABEL ; віднімаємо від R1 1 і якщо R1 не дорівнює нулю,
; то переходимо на мітку LABEL
JMP $ ; нескінченний цикл
END
Далі буде...