бред
если внешняя память через DPTR то адрес двухбайтовый
mov dptr,#adr16
далее чтение массива из внешней памяти в РПД ОЗУ с декрементом указателей
перезагрузка dptr адресом назначения и возврат данных из РПД ОЗУ в новое место внешнего ОЗУ
если ВПД с диапазоном адресов до 256 то можно использовать команды
movx a,@r0 movxa,@r1 и movx @r0,a movx @r1,a при этом старший байт адреса фиксировать в порт p1(при отсутствии внешней памяти программ)
с чашечки валерьянки будет:
mov sp,#50h;переустановка указателя стека
mov r0,#30h;указатель рвх
mov r2,#10;счетчик байт массива
mov dptr,#adr_a;адрес начала массива источника в dptr
rdb:
movx a,@dptr;читать текущий байт источника
mov @r0,a;хранить в рвх (не касается ИС с двумя dptr - от 52 и старше)
inc r0;указатель рвх+1
inc dptr;указатель источника +1
djnz r2,rdb;повторять до исчерпания (возможно я просчитался с к-вом байт

)
mov r0,#30h;перезагрузка указателя рвх
mov r2,#10;перезагрузка с-ка байт
mov dptr,#adr_b;указатель на адрес начала массива назначения
wdb:
mov a,@r0;читать рвх
movx @dptr,a;в массив назначения
inc r0;указатель рвх+1
inc dptr;указатель приемника +1
djnz r2,wdb;повторять до исчерпания (возможно я просчитался с к-вом байт

)
примерно так , но возможно и ошибка в количестве циклов
