Файл: Разработка программы на языке ассемблер К580 и в машинных кодах.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 90

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

Федеральное государственное бюджетное образовательное учреждение высшего образования «Магнитогорский государственный технический университет имени
Г.И. Носова»


Институт Энергетики и Автоматизированных Систем

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

КУРСОВАЯ РАБОТА

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

на тему: Разработка программы на языке ассемблер К580 и в машинных кодах

Вариант – 25

Исполнитель: студент__________ III курса, группа ________

Руководитель: к.т.н., доцент, Швидченко Д.В.

Работа допущена к защите «___» ________2023г.____________

(подпись)

Работа защищена «___» ________2023г. с оценкой _______ _____________

(оценка) (подпись)
Магнитогорск 2023

Содержание

Введение 3

1 Постановка и анализ задачи курсового проектирования 4

1.1 Постановка задачи 4

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

2 Разработка и описание программы 5

2.1 Разработка блок-схемы 5

2.2 Разработка программы на языке ассемблера и в машинных кодах 6

МП КР580ВМ80А 6

2.3 Описание программы 8

ЗАКЛЮЧЕНИЕ 9

Список использованных источников 10

Введение



Язык ассемблера – это машинно-ориентированный язык программирования низкого уровня. Язык ассемблера значительно облегчает написание кода, т.к. это символьная форма записи машинного кода. Для одной ЭВМ можно разработать различные языки ассемблера.

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


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

1 Постановка и анализ задачи курсового проектирования

1.1 Постановка задачи


В исходном массиве однобайтных чисел выделить все числа больше 510. Полученный массив расположить по возрастанию. Формат чисел следующий:


7

6

5

4

3

2

1

0

З

Модуль числа

где З – знак числа.

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


Для указания адресов массива воспользуемся ячейками 0800-0801 (начальный адрес массива) и 0802-0803 (конечный адрес массива), регистр С будем использовать для подсчета чисел, ячейка 0810 – начальный адрес исходного массива, ячейка 0850 – начальный адрес полученного массива.

Более подробно с анализом поставленной задачи ознакомимся в блок-схеме, приведенной в пункте 2.1.

2 Разработка и описание программы

2.1 Разработка блок-схемы




Рисунок 1 - Блок-схема алгоритма решения задачи

2.2 Разработка программы на языке ассемблера и в машинных кодах

МП КР580ВМ80А


Таблица 1 - Листинг программы

Метка

Адрес

Данные

Ассемблер

Мнемоника

Комментарии




0900

0901

0902

3A

00

08

LDA 0800

(А)←М(0800)



Загрузка начального адреса массива





0903

47

MOV B, A

(В)←(А)

Пересылка из (А) в (В)




0904

0905

0906

3A

02

08

LDA 0802

(A)←М(0802)



Загрузка конечного адреса массива





0907

90

SUB B

(А)←(А) - (В)

Вычитание (А) и (В)




090A

3C

INR A

(А)←(А) + 1

Инкремент (А)




090B

47

MOV B, A

(В)←(А)

Пересылка из (А) в (В)




090C

090D

090E

11

50

08

LXI D 0850

(DE)←0850h

Загрузка 0850 в DE




090F

0910

0911

21

10

08

LXI H 0810

(HL)←0810h

Загрузка 0810 в HL




0912

0D

DCR C

(C)←(C) - 1

Декремент (C)




0913

2B

DCX H

(HL)←(HL)-1

Декремент HL




0914

1B

DCX D

(DE)←(DE)-1

Декремент DE

M1

0915

23

INX H

(HL)←(HL)+1

Инкремент HL




0916

13

INX D










0917

7E

MOV A, M

(А)← М(HL)

Загрузка данных в (A) из M(HL)




091A

091B

FE

05

CPI 05h




Сравнение (A) и 05h




091C

091D

091E

CA

15

09

JZ M1




Переход на М1, если Z=1




091F

0920

0921

DA

14

09

JC M1




Переход на М1, если C=1




0922

12

STAX D

M(DE)← (A)

Запись содержимого (А) в M(DE)




0923

05

DCR B

(B)←(B) - 1

Декремент (B)




0924

0C

INR C

(C)←(C) + 1

Инкремент (C)




0925

C2

15

09

JNZ M1




Переход на М1, если Z=0

0926

0927


Продолжение таблицы 1

Метка

Адрес

Данные

Ассемблер

Мнемоника

Комментарии




092A092B092C

11

50

08

LXI D 0850

(DE)←0850h

Загрузка 0850 в DE




092D092E

092F

21

50

08

LXI H 0850

(HL)←0850h

Загрузка 0850 в HL




0930

2B

DCX H

(HL)←(HL)-1

Декремент HL

M4

0931

23

INX H

(HL)←(HL)+1

Инкремент HL




0932

EB

XCHG

(HL)↔(DE)

Обмен данными между (HL) и (DE)




0933

1A

LDAX D

(А)← М(DE)

Загрузка данных в (A) из M(DE)




0934

47

MOV B, A

(В)←(А)

Пересылка из (А) в (В)

M2

0935

13

INX D

(DE)←(DE)+1

Инкремент DE




0936

1A

LDAX D

(А)← М(DE)

Загрузка данных в (A) из M(DE)




0937

B8

CMP B




Сравнение (A) и (B)




093A093B

093C

CA

35

09

JZ M2




Переход на М2, если Z=1




093D093E

093F

DA

43

09

JC M3




Переход на М3, если С=1




0940

0941

0942

C3

35

09

JMP M2




Безусловный переход на М2

M3

0943

1B

DCX D

(DE)←(DE)-1

Декремент DE




0944

12

STAX D

M(DE)← (A)

Запомнить данные из (A) в M(DE)




0945

13

INX D

(DE)←(DE)+1

Инкремент DE




0946

78

MOV A, B

(А)←(В)

Пересылка из (В) в (А)




0947

12

STAX D

M(DE)← (A)

Запомнить данные из (A) в M(DE)




0948

0D

DCR C

(C)←(C) - 1

Декремент (C)




094A094B

094C

C2

31

09

JNZ M4




Переход на М4, если Z=0




094D

FF

RST7








2.3 Описание программы


Начальный адрес массива хранится в ячейках 0900, 0901, 0902.

Конечный адрес массива хранится в ячейках 0904, 0905, 0906.

Старт программы начинается с ячейки 0903.

Ответ выводится в ячейку 0947.

Массив может быть произвольной длины.

ЗАКЛЮЧЕНИЕ


В данной курсовой работе была разработанна программа, находящая все числа больше 510 и располагающая полученный массив по возрастанию.

Достоинством программы является компактность и удобство расположения ответа.

Недостатком является необходимость пользователя в сбросе регистров после каждого использования программы, а также обнуление ячейки, куда выводится ответ (0947).

Список использованных источников


  1. Лукьянов, С.И. Основы микропроцессорной техники / С.И. Лукьянов, Д.В. Швидченко, Е.С. Суспицын, Р.С. Пишнограев, Н.В. Швидченко, С.С. Красильников. – Магнитогорск : , 2019. – 139 с.

  2. Skillbox [Электронный ресурс]. – Режим доступа: https://skillbox.ru/media/code/chto-takoe-assembler/. – Дата доступа: 11.12.2022.