Задача сложения двухбайтных чисел

Блок схема алгоритма решения задачи. Описание программы на языке Ассемблера и в машинных кодах. Сложение 5 двухбайтных чисел, находящихся в адресном пространстве 0800h-0809h, с учетом знака и переноса из старшего бита суммы. Адресное пространство задачи.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 15.09.2017
Размер файла 158,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

ФГБОУ ВПО «Магнитогорский государственный технический университет» им. Г. И. Носова

Кафедра Электроники и микроэлектроники

Курсовая работа

по дисциплине «Машинные языки программирования»

Выполнил: студент группы АП-10-1

Аркузин И.В.

Проверил: д.т.н., профессор кафедры ЭиМЭ

Лукьянов С.И.

Магнитогорск, 2013 г.

Оглавление

  • 1. Задание
  • 2. Выполнение работы
    • 2.1 Анализ поставленной задачи
    • 2.2 Блок схема алгоритма решения задачи
    • 2.3 Описание программы на языке Ассемблера и в машинных кодах
  • Вывод
  • Библиографический список

1. Задание

Сложить 5 двухбайтных чисел, находящихся в адресном пространстве 0800h-0809h, с учетом знака и переноса из старшего бита суммы. Ответ разместить в ячейках 080Ah - 090Ch. Лишние биты суммы заполнить нулями. Формат чисел:

Младший байт

7

6

5

4

3

2

1

0

Модуль числа

З

Старший байт

7

6

5

4

3

2

1

0

Модуль числа

З - знак числа.

двухбайтный число программа ассемблер

2. Выполнение работы

2.1 Анализ поставленной задачи

Регистровая пара BC будет содержать адрес текущей ячейки массива чисел, то есть байта. При сложении чисел, будут складываться содержимое регистровых пар HL и DE, HL - будет содержать промежуточный результат сложения, а DE - следующее число. Поэтому перед началом основной программы, регистровую пару HL нужно обнулить.

После загрузки старшего байта в регистр D, сразу же будем проверять число на знак, для этого в аккумулятор загрузим содержимое ячейки памяти с адресом Addr3 (где первоначально будут содержаться нули), если число будет отрицательное. Прибавим к содержимому аккумулятора FFh, перезапишем содержимое аккумулятора в ту же ячейку памяти Addr3. После сложения чисел, будем проверять перенос из старшего бита. Для этого, если будет перенос, в аккумулятор загрузим содержимое ячейки памяти Addr2, где тоже первоначально будут нули, проинкрементируем содержимое аккумулятора, сохраним в ту же ячейку памяти Addr2. Чтобы выйти из цикла сложения, нам понадобится счетчик чисел, для этого в начале программы загрузим в ячейку памяти Addr1 число 5. После проверки на перенос, будем загружать содержимое этой ячейки в аккумулятор, декрементировать содержимое аккумулятора, и если бит ноля Z будет равен единице, выходить из цикла и сохранять результат в ячейки памяти 0900h и 0901h. И складывать содержимое ячеек Addr2 и Addr3. Это и будет наш третий байт.

2.2 Блок схема алгоритма решения задачи

M(Addr1) - ячейка памяти 0810h, M(Addr2) - ячейка памяти 0811h, M(Addr3) - ячейка памяти 0812h, M(Addr4) - ячейка памяти 0900h, M(Addr5) - ячейка памяти 0901h. Программа будет храниться в адресном пространстве, начиная с ячейки 0813h.

двухбайтный число программа ассемблер

2.3 Описание программы на языке Ассемблера и в машинных кодах

Описание программы представлено в таблице 1:

Метка

Адрес

Данные

Ассемблер

Мнемоника

Комментарий

M1

M2

0813

21

LXI H, 0810

(HL)0810

Загрузить в регистровую пару HL адрес ячейки памяти 0810

0814

10

0815

08

0816

36

MVI M, 05

M(HL)05

Записать количество слагаемых в ячейку памяти, адрес которой хранится в регистровой паре HL

0817

05

0818

23

INX H

(HL)HL+1

Инкрементирование регистровой пары HL

0819

36

MVI M, 00

M(HL)00

Обнулить ячейку памяти

081A

00

081B

23

INX H

(HL)HL+1

Инкрементирование регистровой пары HL

081C

36

MVI M, 00

M(HL)00

Обнулить ячейку памяти

081D

00

081E

21

LXI H, 0000

(HL)0000

Обнулить промежуточную сумму в регистровой паре HL

081F

00

0820

00

0821

01

LXI B, 0800

(BC)0800

Загрузить в регистровую пару BC начальный адрес массива данных

0822

00

0823

08

0824

0A

LDAX B

(A)

Загрузить в аккумулятор младший байт, адрес которого хранится в регистровой паре BC

0825

0F

RRC

Сдвиг аккумулятора вправо без переноса

0826

E6

ANI 80

(A)(A)^10000000

Операция логическое И аккумулятора с данными 80h

0827

80

0828

5F

MOV E, A

(E)(A)

Переслать маску из регистра А в регистр E

0829

37

STC

C=1

Установить бит переноса в значение 1

082A

3F

CMC

C=

Инвертировать значение бита переноса

082B

03

INX B

(BC)BC+1

Инкрементирование регистровой пары BC

082C

0A

LDAX B

(A)

Загрузить в аккумулятор старший байт, адрес которого хранится в регистровой паре BC

082D

1F

RAR

Cдвиг аккумулятора вправо с переносом

082E

B3

ORA E

(A)(A)?(E)

Операция логическое ИЛИ аккумулятора и регистра E

082F

57

MOV D, A

(D)(A)

Переслать старший байт из регистра А в регистр D

0830

C6

ADI 00

(A)(A)+00

Прибавить к содержимому аккумулятора 00h

0831

00

0832

F2

JP M2

JMP if S=0

Переход на метку M2, если бит знака S равен нулю

0833

3D

0834

08

0835

3A

LDA 0812

(A)

Загрузить в аккумулятор содержимое ячейки памяти 0812

0836

12

0837

08

0838

C6

ADI FF

(A)(A)+FF

Прибавить к содержимому аккумулятора FFh

0839

FF

083A

32

STA 0812

M(0812)(A)

Записать содержимое аккумулятора в ячейку памяти 0812

083B

12

083C

08

083D

0B

DCX B

(BC)(BC)-1

Декрементирование регистровой пары BC

083E

0A

LDAX B

(A)

Загрузить в аккумулятор младший байт, адрес которого хранится в регистровой паре BC

083F

1F

RAR

Cдвиг аккумулятора вправо с переносом

0840

5F

MOV E, A

(E)(A)

Переслать содержимое регистра А в регистр E

0841

19

DAD D

(HL)(HL)+(DE)

Сложить регистровые пары HL и DE

0842

D2

JNC M3

JMP if C=0

Переход на метку M3, если бит переноса С равен нулю

0843

4C

0844

08

0845

3A

LDA 0811

(A)

Загрузить в аккумулятор содержимое ячейки памяти 0811

0846

11

0847

08

0848

3C

INR A

(A)(A)+1

0849

32

STA 0811

M(0811)(A)

Записать содержимое аккумулятора в ячейку памяти 0811

084A

11

084B

08

M3

084C

3A

LDA 0810

(A)

Загрузить в аккумулятор количество слагаемых

084D

10

084E

08

084F

3D

DCR A

(A)(A)-1

Декрементирование содержимого аккумулятора

0850

CA

JZ M4

JMP if Z=1

Переход на метку M4, если бит ноля Z равен единице

0851

5B

0852

08

0853

32

STA 0810

M(0810)(A)

Записать содержимое аккумулятора в ячейку памяти 0810

0854

10

0855

08

0856

03

INX B

(BC)(BC)+1

Инкрементирование регистровой пары BC

0857

03

INX B

(BC)(BC)+1

Инкрементирование регистровой пары BC

0858

C3

JMP M1

Безусловный переход на метку M1

0859

24

085A

08

M4

085B

3A

LDA 0811

(A)

Загрузить в аккумулятор переносы

085C

11

085D

08

085E

57

MOV D, A

(D)(A)

Переслать содержимое регистра А в регистр D

085F

3A

LDA 0812

(A)

Загрузить в аккумулятор знак

0860

12

0861

08

0862

82

ADD D

(A)

Сложить содержимое регистров A и D

0863

22

SHLD 0900

M(0900)(L)

M(0901)(H)

Записать содержимое регистровой пары HL в ячейки памяти 0900h и 0901h

0864

00

0865

09

0866

FF

RST 7

Остановка программы

Вывод

Основной сложностью, при составлении программы, было составление цикла представления чисел к обычному виду, то есть когда знак находится в седьмом бите старшего байта. В связи с этим были задействованы все регистры, и для учета знака и переноса из старшего бита суммы пришлось использовать ячейки памяти: в одной учитывались переносы, в другой - знак.

Программа может посчитать не только сумму 5 чисел, а например 256 двухбайтных чисел. Для этого следует изменить проверку на последний адрес ячейки памяти массива чисел.

Ответ выводится в ячейки памяти 0900h - 0901h, причем младший байт записывается в ячейку 0900h, а старший в ячейку 0901h. Третий байт суммы хранится в аккумуляторе.

Библиографический список

1. С.И. Лукьянов, Д.В. Швидченко, Е.С. Суспицын, Р.С. Пишнограев. Методические указания к курсовому проектированию по дисциплинам «Машинные языки программирования» и «Основы микропроцессорной техники» для студентов специальности 210106, направления 210100. Магнитогорск: Изд-во Магнитогорск. гос. техн. ун-та им Г.И. Носова, 2011г. 42 с.

2. К.А. Палагута. Учебное пособие Микропроцессоры Intel 8080, 8085 (КР580ВМ80А, КР1821ВМ85А) и их программирование. -М.: МГИУ 2007. 104с.

3. Л. Левенталь, У. Сэйвилл. Программирование на языке Ассемблера для микропроцессоров 8080 и 8085. Перевод с английского А.А. Батнера. -М.: Радиосвязь 1987. 441c.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка алгоритма работы блока сложения дробных двоичных чисел в обратном модифицированном коде с фиксированной запятой. Определение состава узлов и управляющих сигналов блока по схеме электрической функциональной, описание его принципа работы.

    реферат [415,8 K], добавлен 29.11.2010

  • Описание методов нахождения и построения эйлеровых циклов в графах при раскрытии содержания цикломатических чисел и фундаментальных циклов. Изучение алгоритма решения задачи "Китайского почтальона" и разработка программы, решающей задачу на языке Си.

    курсовая работа [924,3 K], добавлен 09.01.2011

  • Формальные правила двоичной арифметики. Операция алгебраического сложения в ЭВМ. Алгебраическое сложение в дополнительном коде. Денормализация чисел. Виды денормализации и методы устранения. Особенности округления чисел, заданных инверсными кодами.

    реферат [42,9 K], добавлен 16.01.2011

  • Алгоритм решения задачи: расположение значений ветора в порядке возрастания методом "Всплывающих пузырьков". Блок-схема алгоритма решения задачи. Описание блок-схемы, распечатка программы. Операторы: rem, dim, print, input, lprint using, for-next.

    курсовая работа [17,4 K], добавлен 27.02.2010

  • Общее описание и особенности использования программы, предназначенной для определения нечетных чисел, находящихся в массиве чисел. Листинг и методы оптимизации данной компьютерной программы. Источники оптимизации кода, описание выполненных команд.

    лабораторная работа [17,4 K], добавлен 25.03.2011

  • Оптимальный алгоритм деления чисел в нормализованной форме для получения нормализованного произведения чисел с помощью TP Pascal. Работа со строковыми данными и типами Real и Integer. Описание метода решения. Блок-схема работы программы, ее листинг.

    курсовая работа [111,8 K], добавлен 28.07.2009

  • Создание и реализация алгоритма решения транспортной задачи методом наименьших стоимостей. Схема алгоритма основной программы. Основные шаги алгоритма решения транспортной задачи. Инструкция по эксплуатации программы и обзор результатов ее выполнения.

    курсовая работа [2,0 M], добавлен 12.02.2013

  • Составление программы сортировки по возрастанию массив из 20 шестнадцатеричных чисел, просматривающей все исходные числа во внешней памяти и выбирающей самое большое число. Блок-схема алгоритма работы программы. Таблица команд и число их выполнения.

    курсовая работа [23,1 K], добавлен 24.05.2015

  • Поиск взаимно простых чисел. Алгоритм Евклида для целых чисел. Описание выбранного языка программирования. Алгоритм решения задачи. Обзор средств программирования. Текст и описание программы. Руководство оператора, программа и методика испытаний.

    курсовая работа [843,5 K], добавлен 15.06.2011

  • Программирование микро ЭВМ на МП БИС КР580ИК80. Арифметические команды. Представление чисел в различных системах счисления и отображение их на дисплее. Сложение массива однобайтных чисел. Вычитание одинаковых чисел. Сложение двух десятичных чисел.

    лабораторная работа [263,8 K], добавлен 03.03.2009

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

  • Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.

    задача [163,4 K], добавлен 16.12.2009

  • Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.

    курсовая работа [1,4 M], добавлен 16.03.2012

  • Решение задачи по методу Адамса. Блок-схема функции main. Блок-схема функции Adams. Листинг программы. Блок-схема функции MMinor. Блок-схема функции MatrixMultiply. Блок-схема функции Determinant. Результат решения задачи на ЭВМ.

    курсовая работа [68,9 K], добавлен 16.04.2004

  • Составление блок-схемы алгоритма решения задачи, погрешности вычисления суммы членов числового ряда. Разработка программ на языке на Visual Basic, работа с массивами. Особенности работы со строковыми данными. Варианты реализации формы приложения.

    контрольная работа [220,4 K], добавлен 18.06.2010

  • Задача для проведения теплофизического расчета с помощью программы написанной на языке Pascal. Модуль программы, позволяющий определить и рассчитать параметры для решения задачи теплофизического расчета. Блок-схема, отображающая основные действия.

    методичка [17,5 K], добавлен 02.09.2010

  • Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

    курсовая работа [446,0 K], добавлен 19.06.2014

  • Организационно-экономическая характеристика задачи выгрузки необходимых данных на магнитный носитель. Информационное, техническое и программное обеспечение решения данной задачи. Блок-схема алгоритма решения задачи. Экономическое обоснование программы.

    дипломная работа [559,3 K], добавлен 08.11.2010

  • Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.

    курсовая работа [88,2 K], добавлен 19.09.2012

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.