48632

Складывать содержимое последовательных ячеек памяти до появления признака переноса CY

Курсовая

Информатика, кибернетика и программирование

В данной работе используется цикл с постусловием. 4 ОТЛАДКА И ВЕРИФИКАЦИЯ ПРОГРАММЫ Заданные числа были равны 8050 в 16й системе счисления Записаны в ячейки памяти 6000h6004h. В таблице 2 приведен пример корректной работы программы. Таблица 2 Регистры H 50 50 50 0 50 F0 50 40 Начальное и итоговое состояния программы показаны на рисунках 2 и 6.

Русский

2013-12-22

242 KB

7 чел.

1 ПОСТАНОВКА ЗАДАЧИ

Задача: Складывать содержимое последовательных ячеек памяти до появления признака переноса CY. Адрес первой ячейки 6000Н. Этапы решения задачи:

1. Разработать блок-схему алгоритма решения задачи по заданному варианту

2. Написать программу на языке ассемблера.

3. Ассемблировать программу вручную.

4. Занести программу в память микроЭВМ.

5. Выполнить программу в автоматическом режиме.

6. Если программа не работает, то используя пошаговый режим отладить программу.

2 АНАЛИЗ ЗАДАЧИ И РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ

Поскольку для представления данных используется шестнадцатеричная система счисления, начальные данные необходимо перевести в эту систему счисления.

Обнуляем аккумулятор и принудительно устанавливаем признак переноса  С=0. Вводим данные в ячейки 6000h-6004h ( (H,L)←6000h ). Передаем содержимое аккумулятора и регистра (H) в аккумулятор – А ( (А)←(А)+((H,L)) ).

Увеличиваем содержимое регистровой пары на 1 ( (HL) ←(HL)+1 ). Далее используем  команду – Переход к метке по условию. В данном случае условием будет являться С=0 – Отсутствие переноса, NC (NO Carry). При истинности этого условия программа переходит к метке ( (А)←(А)+((H,L)) ). Если же условие становиться ложным: С=1- Перенос, заканчиваем программу (HLT).

 

3 РАЗРАБОТКА СТРУКТУРЫ ПРОГРАММЫ И ЕЁ АССЕМБЛИРОВАНИЕ

В данной работе используется цикл с постусловием.

Рисунок 1 Блок-схема алгоритма

Таблица 1

Мнемоника

Код

Описание

MVI A

3A

Передаем в аккумулятор ноль.

STC

37

Устанавливаем признак переноса С=1.

CMC

3F

Инвертируем признак переноса^ С=0.

LXI H

21

В регистрах HL первый адрес.

ADD M

86

Сложить А с регистром M.

INX H

23

Увеличиваем содержимое регистровой пары на 1.

JNC

D2

Повторить.

HLT

76

Конец.

4 ОТЛАДКА И ВЕРИФИКАЦИЯ ПРОГРАММЫ

Заданные числа были равны «80(50 в 16й системе счисления)» (Записаны в ячейки памяти 6000h-6004h). После прибавления значения ячейки 6004h программа должна прекратить работу из за появления признака переноса С=1(Перенос возникает, когда число в аккумуляторе превышает значение 255). В таблице 2 приведен пример корректной работы программы.

Таблица 2

Регистры

H

A

50

50

50

A0

50

F0

50

40

 

Начальное и итоговое состояния программы показаны на рисунках 2 и 6. Как видно из рисунка 2, в начальный момент времени ячейки памяти с адресами 6000h-6004h имеют значение 50; Аккумулятор имеет значение 0 (AF=0); Признак переноса С=0.

Рисунок 2 Окно программы на первом шаге

    На следующем шаге, как видно на рисунке 3, содержимое ячейки памяти 6000 передалось в аккумулятор (А = 50).

Рисунок 3 Окно программы на втором шаге

     На третьем шаге программы  увеличиваем значение HL на 1.

Рисунок 4 Окно программы на третьем шаге

  На следующем  шаге, после проверки условия (С=0) мы переходим к адресу 5007 и далее в аккумулятор заносится сумма первой и второй ячеек (6000h и 6001h). AF=A0 (160 в 10й системе счисления).

Рисунок 4 Окно программы на четвертом шаге

           На следующем шаге программы  увеличиваем значение HL на 1.

Рисунок 5 Окно программы на пятом шаге

На следующем шаге работы программы (рисунок 6), после проверки условия (С=0) мы переходим к адресу 5007 и далее в аккумулятор заносится сумма первой и второй и третей ячеек (6000h, 6001h, 6002h). AF=F0 (240 в 10й системе счисления).

Рисунок 6 Окно программы на последнем шаге

На следующем шаге программы  увеличиваем значение HL на 1.

Рисунок 7 Окно программы на следующем шаге

На следующем шаге работы программы (рисунок 8), после проверки условия (С=0) мы снова переходим к адресу 5007 и далее в аккумулятор к сумме первых трех ячеек добавляется четвертая (6000h, 6001h, 6002h, 6003h). Теперь сумма в аккумуляторе превышает значение 255 и в программе появляется флаг переноса С=1.

Рисунок 8 Окно программы на следующем шаге

На последнем шаге работы программы условие отсутствия переноса (С=0) становиться ложно и программа завершается (HLT).

Рисунок 9 кно программы на следующем шаге

Таким образом теоретические значения совпали со значениями выданными программой Ассемблер в пошаговом режиме, что указывает на корректную работоспособность программы.

PAGE  13


(A)
 (A)+((HL))

H,L)6000h

A=0

C=1

C=0

Начало

Конец

C=1

(HL) (HL)+1


 

А также другие работы, которые могут Вас заинтересовать

59243. Свято Миколая-Чудотворця 39.5 KB
  Біля входу на сцену сидить на стільчику дід Панас і дрімає. Дійові особи: Святий Миколай дід Панас 1й ангел Софія 2й ангел Ірена Жид Чорт Візник Ведучий Ведучий: Майже у всіх народів є звичай давати дітям вночі на Святого Миколая всякі дарунки.
59245. СЦЕНАРІЙ РАНКУ: КОТИЛАСЯ ПИСАНОЧКА... 39 KB
  Мета: Формувати уявлення дітей про виготовлення писанок: ознайомити з традиційними елементами та кольоровою гамою писанок Гуцульщини; виховувати інтерес до декоративноприкладного мистецтва...
59246. Загадкове поле Див 35.5 KB
  Хід заняття: Вихователь –Малятка що найголовніше для людини гроші чи здоров’я Діти Здоров’я. Вихователь –Так Ми з вами знаємо що В здоровому тілі здорова душа другу половину прислів’я діти домовляють самі.
59250. Сценарій вечора-конкурса: В імя кохання 28.5 KB
  Якийсь хлопець Валентин був несправедливо засуджений і посаджений в тюрму. За рішенням суду його повинні були стратити 14 лютого. Ведучий ІІ: Але в нього закохалася дочка начальника тюрми. Істота велична, добра і ніжна, яка, на жаль, була сліпа.