Тема: Рішення деяких задач мовою 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Далі буде...

