Другие языки программирования и технологии
Помогите написать программу для процессора 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 назад, что-то мог забыть.
Если вылезут ошибки, пиши письма - попробуем вдвоем исправить
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 назад, что-то мог забыть.
Если вылезут ошибки, пиши письма - попробуем вдвоем исправить
Ой, как это все сложно!
Похожие вопросы
- Помогите написать программу в Assembler НАЙТИ СУММУ ЦИФР 3-ЗНАЧНОГО ЧИСЛА И ПРОИЗВЕДЕНИЕ 4-ЗНАЧНОГО ЧИСЛА
- Помогите написать программу со switch в СИ
- Помогите написать программу на С. Тема Составление программ с использованием массивов
- Помогите написать программу выключения компьютера на С++
- Помогите написать программу на Visual Basic (найти ошибку)
- Помогите написать программу на ассемблере, завтра экзамен а я в нём совсем не шарю.
- помогите написать программу на Delphi
- Помогите написать программу на С++
- помогите написать программу на С в Борланде?
- Люди помогите написать программы для Pascal очень срочно и очень нужно