Главная страница
Навигация по странице:

  • Решение: ORG 800h; смещаем программу на стандартный адрес начала LXI H, 052ch; адрес 1-го массива - в HL PUSH H; заносим его стек

  • LDAX B; копирование в A ячейки 2-го массива (ее адрес в BC) ADD M; суммирование A с ячейкой 1-го массива (адрес в HL)

  • XTHL; достаем в HL счетчик, а адрес 1-го массива кладем в стек

  • HLT; останов программы ORG 0512h; заполняем 1-й массив (с учетом резервирования 26 байт (3)) DB 01 DB 02 DB 03

  • DB 0dh DB 0eh DB 0fh; 15 DB 10h DB 11h DB 12h DB 13h DB 14h

  • DB 01 DB 01 DB 01 DB 01 DB 01 DB 01 DB 01 DB 01 DB 01

  • DB 01 DB 01 DB 01 DB 01 DB 01

  • 3.Резервирование памяти подразумевает вычитание из требуемого адреса размера предыдущей программы со всеми ранее сделанными ORG-смещениями.

  • зачет. зачетЛяйля. Решение org 800h смещаем программу на стандартный адрес начала lxi h, 052ch адрес 1го массива в hl


    Скачать 30 Kb.
    НазваниеРешение org 800h смещаем программу на стандартный адрес начала lxi h, 052ch адрес 1го массива в hl
    Анкорзачет
    Дата12.03.2022
    Размер30 Kb.
    Формат файлаdoc
    Имя файлазачетЛяйля .doc
    ТипРешение
    #393669

    Имеется 2 массива данных. Адрес первого массива 052C, адрес второго массива 2617.Записать в ОЗУ сумму 2-х массивов. Адрес его 275C. В первом и втором массивах содержится по 25 чисел.

    Решение:
    ORG 800h; смещаем программу на стандартный адрес начала

    LXI H, 052ch; адрес 1-го массива - в HL

    PUSH H; заносим его стек

    MVI L, 24; заносим счетчик элементов в L (рег. пара - HL) (1)

    LXI B, 2617h; адрес 2-го массива - в BC

    LXI D, 275ch; адрес 3-го массива - результата - в DE
    M1: XTHL; достаем в HL адрес 1-го массива, а счетчик кладем в стек

    LDAX B; копирование в A ячейки 2-го массива (ее адрес в BC)

    ADD M; суммирование A с ячейкой 1-го массива (адрес в HL)

    STAX D; кладем получившуюся в A сумму в 3-й массив

    INX H; увеличиваем индексы всех трех массивов

    INX B

    INX D

    XTHL; достаем в HL счетчик, а адрес 1-го массива кладем в стек

    DCR L; уменьшаем счетчик на 1

    JNZ 0Ch; если в L еще не 0 - возвращаемся на метку M1 (2)

    POP H; восстановим стек (необязательная, но желательная команда)

    HLT; останов программы
    ORG 0512h; заполняем 1-й массив (с учетом резервирования 26 байт (3))

    DB 01

    DB 02

    DB 03

    DB 04

    DB 05

    DB 06

    DB 07

    DB 08

    DB 09

    DB 0ah

    DB 0bh

    DB 0ch

    DB 0dh

    DB 0eh

    DB 0fh; 15

    DB 10h

    DB 11h

    DB 12h

    DB 13h

    DB 14h

    DB 15h

    DB 16h

    DB 17h

    DB 18h; 25
    ORG 20D3h; заполняем 2-й массив (с учетом резервирования 52Dh байт (3))

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01

    DB 01
    1.В счетчик кладем число 24 (25-1) в связи с особенностями организации

    цикла. При значении счетчика 25 цикл выполнится 26 раз.
    2.Из-за несовершенства отладчика возврат на метку M1 производить нельзя.

    Такой возврат передаст управление на адрес 80Ch, в то время как

    программа, несмотря на директиву ORG 800h, располагается с 0-го адреса.
    3.Резервирование памяти подразумевает вычитание из требуемого адреса

    размера предыдущей программы со всеми ранее сделанными ORG-смещениями.

    Обусловлено несовершенством отладчика.
    РЕЗУЛЬТАТ: В третьем массиве (275Ch) должны получиться числа от 2 до 19h


    написать администратору сайта