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

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

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

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

Добавлен: 04.12.2023

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования Российской ФедерацииФедеральное государственное бюджетное образовательное учреждение высшего образования «Магнитогорский государственный технический университет имени
Г.И. Носова»
Институт Энергетики и Автоматизированных СистемКафедра электроники и микроэлектроникиКУРСОВАЯ РАБОТА по дисциплине «Машинные языки»на тему: Разработка программы на языке ассемблер К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.