Другие языки программирования и технологии

Помогите написать программу для процессора i8085 на assembler.

Составить программу разделения однобайтовых данных в массиве с начальным адресом 2061Н и длиной по адресу 2060Н, на две части с последовательным запоминанием старших частей в памяти по начальным адресом 3061Н.
Эх, когда-то я программировал на этом ассемблере!
lda 2060H ; [2060] -> A
mov b, a ; A -> B - длина массива
mvi c, 0 ; C - счетчик массива
lxi h, 2061H ; HL = адрес текущей ячейки массива
M1: mov a, l ; L -> A
add c ; A = A + C
mov l, a ; A -> L
mov a, m ; [HL] -> A
ani 0F0H ; обрезаем младшие 4 бита в А
mov d, a ; A -> D
mov a, h ; H -> A
add 10H ; A = A + 10H, старшая часть адреса превращается из 20H в 30H
mov h, a ; A -> H
mov m, D ; D -> [HL], сохраняем обрезанный байт в 3061Н
mov a, h ; H -> A
sub 10H ; A = A - 10H, старшая часть адреса превращается обратно из 30H в 20H
mov h, a ; A -> H
inr c ; C = C + 1
mov a, c ; C -> A
cmp b ; Сравниваем счетчик с длиной массива
jnz M1 ; если еще не равен, возвращаемся в цикл
hlt ; конец программы.
Примерно так, но проверяй - я с этим асмом работал лет 25 назад, что-то мог забыть.
Если вылезут ошибки, пиши письма - попробуем вдвоем исправить
Петр Выгорницкий
Петр Выгорницкий
55 709
Лучший ответ
Ой, как это все сложно!
Anatoli Plutahhin
Anatoli Plutahhin
3 895