16 лабораторных по "Системному программированию"

Практическая работа по предмету «Программирование»
Информация о работе
  • Тема: 16 лабораторных по "Системному программированию"
  • Количество скачиваний: 359
  • Тип: Практическая работа
  • Предмет: Программирование
  • Количество страниц: 48
  • Язык работы: Русский язык
  • Дата загрузки: 2015-11-28 05:19:38
  • Размер файла: 3225.93 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Комитет по образованию Правительства Санкт-Петербурга

Санкт-Петербургское государственное бюджетное профессиональное образовательное учреждение

«Колледж информационных технологий»

 

ОТЧЁТ

по учебной практике МДК 03.01

«Системное программирование»

Санкт-Петербург 2015г

 

 

 

Содержание

 

Лабораторная работа 1. 3

Лабораторная работа 2. 6

Лабораторная работа 3. 7

Лабораторная работа 4. 8

Лабораторная работа 5. 10

Лабораторная работа 6. 11

Лабораторная работа 7. 12

Лабораторная работа 8. 14

Лабораторная работа 9. 16

Лабораторная работа 10. 18

Лабораторная работа 11. 20

Лабораторная работа 12. 23

Лабораторная работа 13. 31

Лабораторная работа 14. 34

Лабораторная работа 15. 36

Лабораторная работа 16. 38

 

 

 

 

Лабораторная работа 1

Цель лабораторной работы

Изучение архитектуры микропроцессора КР580.

Содержание работы

 

Буфер данных

Регистр-аккумулятор

Регистр команд

Дешифратор команд

Буферный

Регистр1

Регистр признаков (флагов)

Буферный регистр 2

Блок АЛУ

Блок десятичной коррекции значения регистра-аккумулятора

Блок синхронизации и управления

Содержимое ячеек ОЗУ

Панель редактирования значения выбранной (текущей) ячейки ОЗУ мы;

Панель редактирования значения содержимого выбранного регистра ения


Используя справку к эмулятору МП-системы изучить структуру МП и описать его компоненты в виде:

 

 

 

 

 

 

 

 

 

< >Составить таблицу регистров, которые имеет МП:

Регистр

Назначение

Разрядность

Аккумулятор А

Регистр, в котором сохраняются непосредственные результаты выполнения арифметических и логических команд

8-разрядный

  1.  

Адресный регистр, при косвенной адресации хранит 16-разрядный адрес основной памяти

16-разрядный

  1.  

Функция счетчика команд

16-разрядный

  1.  

Функция указателя стека

16-разрядный

F и A

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

  1. разрядные

B, C, D, E

Регистры общего назначения

8-разрядные

  1.  

Регистр флагов

8-разрядый

 

 

< >

Начало

Составить блок-схему функционирования МП во время выполнения команды сложения содержимого аккумулятора и регистра В, имеющую мнемоническое обозначение ADD B.

 
 

 

B = RGa

A = RGb

RGa + RGb = A

Конец


 

 


< >Составьте таблицу флагов:

Обозначение флага

Признак флага

Условие установки флагов

C (Carry)

Перенос

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

M (Minus)

Отрицательный результат

Знаковый бит результата операции (седьмой разряд аккумулятора) равен 1, иначе сбрасывается

Z (Zero)

Признак нуля

Результат операции в аккумуляторе равен 0, иначе сбрасывается

P (Parity)

Паритет/четность

Результат операции в аккумуляторе содержит четное число единиц, иначе сбрасывается

AC (Auxiliary Carry)

Половинный (дополнительный) перенос

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

 

 

 

 

Лабораторная работа 2.

Исследование команд прямой адресации

Цель лабораторной работы

Целью данной работы является ознакомление с командами микропроцессора КР580 для прямой адресации

 

Составим программу:

0000    3A       LDAAh

0001    0A

0002    00

000332            STABh           -загрузить содержимое аккумулятора в

0004    0B                              -ячейку памяти с адресом Bh

000500

0000    00

0009    00

000A10

           

 

Рисунок 1 – Ввод операндов при прямой адресации

 

 

Лабораторная работа 3.

Исследование команд непосредственной адресации

Цель лабораторной работы

Целью данной работы является ознакомление с командами микропроцессора КР580 для непосредственной адресации

 

Составим программу:

            0000 26           MVIA, 20h

            0001 20

            0002 06           MVI B, 5h

            0003 5

            0004 26           MVI H, d1h

            0005 D1

            0006 FF          RST 7

 

Рисунок 2 – Ввод операндов при непосредственной адресации

Рисунок 3 – Результат работы модели при непосредственной адресации

 

Лабораторная работа 4.

Исследование команд косвенной адресации

Цель лабораторной работы

Целью данной работы является ознакомление с командами микропроцессора КР580 для косвенной адресации

 

Составим программу:

            0000    06        MVIB, 00h

            0001    00

            0002    0E       MVI C, 0Ah

            0003    0A

0004    0A       LDAX B

            0005    FF       RST 7

            …

            000A   10

 

Рисунок 4 – Ввод операндов при непосредственной адресации

Рисунок 5 – Результат работы модели при непосредственной адресации

 

Лабораторная работа 5.

Исследование команд стековой адресации

Цель лабораторной работы

Целью данной работы является ознакомление с командами микропроцессора КР580 для стековой адресации.

 

Составим программу:

0000    06        MVIB, 10h

            0001    10

            0002    16        MVI D, 5Ah

            0003    5A

0004    C5       PUSH B

0005    D5       PUSH D

0006    50        MOV D, B

0007    D1       POP D

0008    C1       POP B

0009    FF       RST7

 

Данные помещаются в регистры В и D, после чего их содержимое посылается в стек. После этого производится обмен значениями между регистрами и значения регистров возвращаются из стека.

 

 

 

Лабораторная работа 6.

Пример программы для микропроцессора

Цель лабораторной работы

Целью данной работы является ознакомление с простейшими арифметическими действиями на микропроцессореКР580

 

Таблица 1 − Программа сложения двух однобайтных чисел

Адрес

Код команды

Метка

Мнемокод

Комментарий

0000

AF

-

ХRА А

Очистить аккумулятор

0001

ЗЕ

-

MVI A, 38

Записать в аккумулятор

число 5610 = 38h16

0002

38

0003

06

-

MVI B, A3

Записать в регистр В число 16310 = a3h16

0004

A3

0005

80

-

ADD 8

Сложить 38h16и a3h16 (5610 + 16310 = 21910 =  db16)

0006

E7

-

RST 7

Прервать выполнениепрограммы

 

Рисунок 6 – Простое сложение двух однобайтных чисел

 

 

 

 

 

Лабораторная работа № 7

ПрограммасложениядвуходнобайтныхчиселXиУ

 

Цель: Задачасостоитвтом, чтобы, выполнивзанесениеоднобайтныхчиселврегистрыАиВ, сложитьихипоместитьрезультатсложенияв аккумулятор.

         Таблица - Программа PRG 1 сложения двух однобайтных чисел

12610(7E16) +8910(5916) = 21510 (D716)

Адрес

Код команды

Мнемокод

Комментарий

0000

AF

ХRА А

Очистить аккумулятор

0001

ЗЕ

MVI A, 38

Записать в аккумулятор

0002

38

 

число X (12610 = 7E16)

0003

06

MVI B, A3

Записать в регистр В

0004

A3

 

число У (8910 = 5916)

0005

80

ADD B

Сложить Xи Y. Сложить 7E16и 5916 (12610 + 8910 = 21510 = D716)

0006

32

STAadr

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

0007

0D

 

ячейку 000D

0008

00

 

 

0009

E7

RST 7

Прервать выполнениепрограммы

 

 

Рисунок7 До выполнения программы

 

Рисунок8 После выполнения программы

 

 

 

 

 

 

 

 

 

Лабораторная работа № 8

ПрограммавычитаниядвуходнобайтныхчиселXиУ

Цель: Выполнить самостоятельно (добавить скриншоты до и после выполнения программы) и записать результат вычислений (в двоичной и шестнадцатеричной системах счисления, разность записать в ячейку 000В):

 

19610(С416) – 6410(4016) = 13210 (8416)

Рисунок9 После выполнения программы

 

Таблица 1.3 - Программа PRG 2вычитания двух однобайтных чисел

Адрес

Код команды

Мнемокод

Комментарий

0000

AF

ХRА А

Очистить аккумулятор

0001

ЗЕ

MVI A,96

Записать в аккумулятор

0002

C4

 

число X (19610 = С416)

0003

06

MVI B, 25

Записать в регистр В

0004

45

 

число У (6410 = 4016)

0005

90

SUBB

ВычестьXи YвычестьС416и 4016 (19610 -6410 = 13210 = 8416)

0006

32

STA adr

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

0007

0D

 

ячейку 000D

0008

00

 

 

0009

E7

RST 4

Прервать выполнениепрограммы

 

 

Лабораторная работа № 9

Сложение массива однобайтных чисел

 

Цель:Массив однобайтных шестнадцатеричных чисел в 0050, 0051, 0052, 0053, 0054. Сам массив: 10610 (6A16) + 8410(5416) + 1610 (1016) + 3410 (2216) + 2110 (1516) + 16410 (A416) = 1A916(42510).

 

 

Таблица 1.3 – Программа PRG 3 сложения массива однобайтных чисел

Адрес

Код

команды

Метка

Мнемоника

Комментарий

0000

0001

0002

21

50

00

PRG 2:

LXI H,0050

Загрузить в регистры HL, адрес первого слагаемого

0003

0004

0E

06

 

MVI C, 04

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

0005

AF

 

XRA A

Очистить аккумулятор

0006

47

 

MOV B, A

Очистить регистр В

0007

86

M1:

ADD M

Прибавить к содержимому аккумулятора число из массива слагаемых

0008

0009

000А

D2

0D

00

 

INC M2

Еслипереносанет, то идти на М2

000В

000С

04

B7

 

INR B

 

ORA A

Увеличить содержимое регистра В на 1

Очистить флаг переноса

000D

23

M2:

INX H

Указать на следующий адрес слагаемого

000E

0D

 

DCR C

Уменьшить содержимое регистра С на 1

000F

0010

0011

C2

07

00

 

INZ

Если не все слагаемые, то идти на M1

0012

FF

 

RST 7

Прервать выполнение программы

0050

6A

 

 

Массив чисел

0051

54

 

 

0052

10

 

 

0053

22

 

 

0054

15

 

 

0055

A4

 

 

Рисунок10 Программа до выполнения

 

Рисунок 11 Программа после выполнения


Лабораторная работа № 10

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

Цель: Выполнить операцию сложения двух двухбайтных чисел Результат сложения двух чисел поместить в ячейки 0020 и 0021.

Таблица 1 - Программа PRG 1 сложения двух десятичных чисел

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A,8A

Младший байт первого слагаемого заносится в аккумулятор5716®A

0001

57

0002

06

MVI B,D8

Младший байт первого слагаемого заносится в аккумулятор2216®B

0003

49

ORA H

 

0004

80

ADD B

Сложение A и B

0005

32

STA adr

Переместить байт из ячейки Bв ячейку Dс адресом 50

0006

50

MOV D,B

 

0007

00

NOP

 

0008

3E

MVI A,D8

Старший байт первого слагаемого заносится в аккумулятор0916®A

0009

09

-

 

000А

06

MVI B,D8

Старший байт второго слагаемого заносится в аккумулятор1116®B

000В

11

-

 

000С

88

ADC B

Сложить

000D

32

STA adr

Переместить байт из ячейки Bв ячейку Dс адресом 51

000E

51

MOV D,C

 

000F

00

NOP

 

0010

76

HTL

остановка

 

Данная программа выполняет операцию. 95716 + 112216 = 1A7916

(239110 + 438610 = 677710).

 

Рисунок 12До выполнения программы

Рисунок 13 После выполнения программы

 

 

Лабораторная работа № 11

Вычитание одинаковых по длине чисел

Цель: Выполнить операцию вычитания двух двухбайтных чисел.

Таблица 2 - Программа PRG 2 вычитания двух чисел.

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A,27

Младший байт первого слагаемого заносится в аккумуляторA416®A

0001

A4

0002

D6

SUI 83

Аккумулятор –1D16В аккумулятор

0003

1D

ADD E

0004

32

STA adr

Переместить байт из ячейки Bв ячейку Dс адресом 50

0005

50

MOV D,B

0006

00

NOP

 

0007

3E

MVI A,21

Старший байт первого слагаемого заносится в аккумуляторD316®A

0008

D3

LXI H,d16

Третий байт команды записывается в регистр Hрегистровой пары, второй байт – в регистр L

 

0009

DE

SBI 10

Аккумулятор - 10

 

000А

88

-

 

 

000В

32

STAadr

Переместить байт из ячейки Bв ячейку Dс адресом 50

 

000С

51

MOVD,C

 

000D

00

NOP

 

 

000E

76

HLT

остановка

 

 

Данная программа выполняет операцию D3A4 16–881D 16=4A8716

(5418010–3484510= 1933510).

Рисунок 14 До выполнения программы

 

Рисунок 15 После выполнения программы

 

Лабораторная работа № 12

Изучение алгоритма ветвления

Цель: Изучение алгоритма ветвления

 
 


Задание 1:

Выполнить на эмуляторе МП КР580 программу:

Вычислить значение у:

если х>10, то у=х-4. если х £10, то у=3х.   х=ячейка [0020], у=ячейка [0021].

 

LDA 0020

CPI ,0A

JM {addr}

MOVB, A

SUI,04

STA 0021

HLT

{addr}:

MOVB,A

ADDB

ADDB

STA 0021

HLT

СОСТАВИТЬ БЛОК - СХЕМУ, ЛИСТИНГ (таблицу). СДЕЛАТЬ ПРОВЕРКУ ПРИ

Х=04, 0A, 0D.

 

Рисунок 16 Программа при х=4

Рисунок 17 Программа при х=10

 

Рисунок 18 Программа при х=13

 

 

Задание 2:

Выполнить на эмуляторе МП КР580 программу:

Вычислить значение у:

если х>12, то у=х-6. если х £12, то у=4х.   =ячейка [0030], у=ячейка [0031].

 

СОСТАВИТЬ БЛОК - СХЕМУ, ЛИСТИНГ (таблицу). СДЕЛАТЬ ПРОВЕРКУ ПРИ

Х=03,0С,0E.

Рисунок 19Программ при х=3

 

Рисунок 20 Программа при х=12

 

Рисунок 21Программа при х=14

 

 

Лабораторная работа №13

Вывод текстовой информации на экран

 

Цель: изучение возможностей вывода информации на экран

 

 

Задание:

1.Вывести на экран монитора КР580 номер группы, свою фамилию и имя разными цветами.

 

Рисунок 22Вывод программына экран

2.Написать листинг полученной программы

 

 

адрес

код команды

метка

мнемоника и операнд

комментарии

 
 

0000

3E

 

MVI A,21

21 => A, A=21

 

0001

21

 

 

{цвет символа в Акк}

 

0002

D3

 

OUT 00

A =>PORT 00,PORT 00=21

 

0003

00

 

 

{цвет символа в порт монитора}

 

0004

3E

 

MVI A,33

33 => A, A=33

 

0005

33

 

 

{номер символа в Акк, 3->A}

 

0006

D3

 

OUT 00

A =>PORT 00,PORT 00=33

 

0007

00

 

 

{номер символа в порт монитора}

 

0008

3E

 

MVI A, 21

11 => A, A=11

 

0009

11

 

 

{цвет символа в Акк}

 

000A

D3

 

OUT 00

A =>PORT 00,PORT 00=11

 

000B

00

 

 

{цвет символа в порт монитора}

 

000C

3E

 

MVI A, 32

32 => A, A=32

 

000D

32

 

 

{номер символа в Акк, 2->A}

 

000E

D3

 

OUT 00

A->PORT 00,PORT 00=32

 

000F

00

 

 

{номер символа в порт монитора}

 

0010

3E

 

MVI A, 61

61 => A, A=61

 

0011

61

 

 

{цвет символа в Акк}

 

0012

D3

 

OUT 00

A =>PORT 00,PORT 00=61

 

0013

00

 

 

{цвет символа в порт монитора}

 

0014

3E

 

MVI A,33

33 => A, A=33

 

0015

33

 

 

{номер символа в Акк, 3->A}

 

0016

D3

 

OUT 00

A =>PORT 00,PORT 00=33

 

0017

00

 

 

{номер символа в порт монитора}

 

0018

3E

 

MVI A, 11

11 => A, A=11

 

0019

11

 

 

{цвет символа в Акк}

 

001A

D3

 

OUT 00

A =>PORT 00,PORT 00=11

 

001B

00

 

 

{цвет символа в порт монитора}

 

001C

3E

 

MVI A,2D

2D => A, A=2D

 

001D

2D

 

 

{номер символа в Акк, -->A}

 

001E

D3

 

OUT 00

A =>PORT 00,PORT 00=2D

 

001F

00

 

 

{номер символа в порт монитора}

 

0020

3E

 

MVI A, 51

51 => A, A=51

 

0021

51

 

 

{цвет символа в Акк}

 

0022

D3

 

OUT 00

A =>PORT 00,PORT 00=51

 

0023

00

 

 

{цвет символа в порт монитора}

 

0024

3E

 

MVI A, 52

53 =>A, A=53

 

0025

53

 

 

{номер символа в Акк, S->A}

 

0026

D3

 

OUT 00

A =>PORT 00,PORT 00=52

 

0027

00

 

 

{номер символа в порт монитора}

 

0028

0029

002A

3E

61

D3

00

 

 

MVI A,61

 

OUT 00

 

61 => A, A=61

{цвет символа в Акк}

A =>PORT 00,PORT 00=61

{цвет символа в порт монитора}

 

002B

 

002C

002D

002E

3E

76

D3

00

 

MVI A,61

 

OUT 00

 

76 => A, A=76

{номер символа в Акк, v->A}

A =>PORT 00,PORT 00=61

{номер символа в порт монитора}

 

002F

 

0030

0031

0032

3E

31

D3

00

 

 

MVI A, 31

 

OUT 00

 

31 => A, A=31

{цвет символа в Акк}

A =>PORT 00,PORT 00=31

{цвет символа в порт монитора}

 

0033

 

0034

0035

0036

3E

69

D3

00

 

MVI A, 73

 

OUT 00

 

69 => A, A=69

{номер символа в Акк,i->A}

A->PORT 00,PORT 00=73

{номер символа в порт монитора}

 

0037

 

0038

0039

003A

3E

71

D3

00

 

 

MVI A,71

 

OUT 00

 

71 => A, A=71

{цвет символа в Акк}

A->PORT 00,PORT 00=71

{цвет символа в порт монитора}

 

003B

 

003C

003D

003E

3E

72

D3

00

 

MVI A,70

 

OUT 00

 

72 => A, A=72

{номер символа в Акк, r->A}

A =>PORT 00,PORT 00=70

{номер символа в порт монитора}

 

003F

 

0040

0041

0042

3E

21

D3

00

 

 

MVI A, 21

 

OUT 00

 

21 => A, A=21

{цвет символа в Акк}

A =>PORT 00,PORT 00=21

{цвет символа в порт монитора}

 

0043

 

0044

0045

0046

3E

69

D3

00

 

MVI A,75

 

OUT 00

 

69 =>A, A=69

{номерсимволавАкк, i->A}

A =>PORT 00,PORT 00=75

{номер символа в порт монитора}

 

0047

 

0048

0049

004A

3E

31

D3

00

 

 

MVI A, 31

 

OUT 00

 

31 => A, A=31

{цвет символа в Акк}

A =>PORT 00,PORT 00=31

{цвет символа в порт монитора}

 

004B

 

004C

004D

004E

3E

64

D3

00

 

MVI A, 74

 

OUT 00

 

64 =>A, A=64

{номер символа в Акк, d->A}

A =>PORT 00,PORT 00=74

{номер символа в порт монитора}

 

004F

 

0050

0051

0052

3E

41

D3

00

 

 

MVI A,41

 

OUT 00

 

41 => A, A=41

{цвет символа в Акк}

A->PORT 00,PORT 00=41

{цвет символа в порт монитора}

 

0053

 

0054

0055

0056

3E

6F

D3

00

 

MVI A,69

 

OUT 00

 

6F => A, A=6F

{номер символа в Акк, o->A}

A =>PORT 00,PORT 00=69

{номер символа в порт монитора}

 

0057

 

 

0058

0059

005A

005B

 

 

3E

6E

D3

00

 

MVI A,6E

OUT 00

76 => A, A=76

{номер символа в Акк, v->A}

A =>PORT 00,PORT 00=6E

{номер символа в порт монитора}

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа №14

Умножения целых чисел без знака

Цель: изучение возможностей МП для умножения целых чисел без знака

3210(2016)*1410(E16) = 44810(1C016)

Адрес

Код

команды

Метка

Мнемоника

Комментарий

0000

00

 

 

Не используется

0001

1E

 

MVI E,20h

Записать в регистр E число 20h (3210)

0002

20

0003

0E

 

MVI C,Eh

Записать в регистр C число Eh(1410)

0004

E

0005

AF

 

XRA A

Очистить аккумулятор

0006

67

 

MOV H,A

Очистить регистр Н

0007

6F

 

MOV L,A

Очистить регистр L

0008

57

 

MOV D,A

Очистить регистр D

0009

83

 

ADD E

A = A + E

000A

C8

 

RZ

Если А = 0, то выход

000B

AF

 

XRA A

Очистить аккумулятор

000C

81

 

ADD C

A – множитель

000D

C8

 

RZ

Если А = 0, то выход

000E

1F

С1:

RAR

Арифметический сдвиг аккумулятора вправо

000F

D2

 

JNС  С2

Флаг переноса не установлен(JUMPIFNOCARRY)

0010

13

0011

00

0012

19

 

DAD D

Сдвиг множимого влево

0013

EB

С2:

XCHG

Обменять пару регистров DE с парой HL (EXCHANGE)

0014

29

 

DAD H

Прибавить к паре регистров HL содержимое пары регистров H

0015

EB

 

XCHG

Обменять пару регистров DE с парой HL (EXCHANGE)

0016

B7

 

ORA A

Логическое сложение «ИЛИ» аккумулятора. В данном случае очистить флаг переноса

0017

C2

 

JNZ С1

Флаг нуля не установлен(JUMPIFNOTZERO)

0018

0E

0019

00

001A

FF

 

RST 7

Прервать выполнение программы

 

Рисунок 23Программа до выполнения

Рисунок 24 Программа после выполнения

 

 

Лабораторная работа №15

Деление целых чисел без знака

Цель: изучение алгоритмов деление двух однобайтных чисел, составление и выполнение программы деления двух однобайтных чисел без знака.

Десятичная: 240/16=15

Шестнадцатеричная: F0 / 10 = F

209/11=19

D1/B=13

 

        

0000

11

DIVB:

 LXI D, 14A0

; Загрузка делимого и делителя в пару DE

0001

А0

 

 

;

0002

14

 

 

;

0003

21

 

LXI H, 0008

;Загрузка счетчика в регистр Lи очистка регистра Н

0004

08

 

 

;

0005

00

 

 

;

0006

 

MVI C, 0

; Очистка регистра промежуточного остатка

0007

00

 

 

;

0008

F0

NXTB:

MOV A, E

; Загрузка делимого в аккумулятор

0009

17

 

RAL

; Смещение делимого влево на один бит

000А

5F

 

MOV E, A

; Пересылка делимого в регистр Е

000В

79

 

MOV A, C

; Загрузка промежуточного остатка в А

000С

17

 

RAL

; Смещение промежуточного остатка влево

000D

92

 

SUB D

; Вычитание делителя от А

000Е

D2

 

JNC NOADD

; Если С = 0 - переход на метку NOADD

000F

12

 

 

;

0010

00

 

 

;

0011

82

 

ADD D

; Восстановление остатка

0012

4F

NOADD:

MOV C, A

; Пересылка промежуточного остатка в регистр С

0013

3F

 

CMC

; Инверсия признака переполнения

0014

7C

 

MOV A, H

; Запись доли в А

0015

17

 

RAL

; Смещение доли

0016

67

 

MOV H, A

; Сохранение доли

0017

2D

 

DCR L

; Уменьшение регистра L

0018

C2

 

JNZ NXTB

; Организация цикла

0019

08

 

 

;

001А

00

 

 

;

001В

7C

 

MOV A, H

; Пересылка младшего байта результата в А

001С

32

 

STA 0050

; Сохранение содержимого А в памяти по адресу 0020

001D

30

 

 

;

001E

00

 

 

;

001F

79

 

MOV A, H

; Пересылка старшего байта результата в А

0020

32

 

STA 0051

; Сохранение содержимого А в памяти по адресу 0021

0021

31

 

 

;

0022

00

 

 

;

0023

CF

 

RST1

; Прекращение выполнения программы

 

Рисунок 25 До выполнения программы

 

Рисунок 26 После выполнения программы

 

 

Лабораторная работа № 16

Программирование арифметических задач на Ассемблере для микропроцессора К580

 

Цель лабораторной работы - рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на МП, познакомиться с программированием в машинных кодах и мнемокодах, научиться пользоваться средствами управления и клавиатурой устройств.

 

1.Команды логического умножения

Цель: исследование команд логического умножения.

Программа PRG 3логическое умножение

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A

Загрузка регистра А непосредственно

0001

FB

 

Загрузка числа

0002

06

MOV H, B

Передать из регистра В в регистр Н.

0003

2D

 

Загрузка числа

0004

A0

A0h

Аккумулятор &

0005

76

HLT

Остановка

 

Здесь выполняется операция логического умножения чисел:

Десятичная: 251&45

Шестнадцатеричная: FB&2D = 2D;

111110112(FB16) &001011012(2D16) = 001011012(2C16)

&

1

1

1

1

1

1

0

1

 

0

0

1

0

1

1

0

1

=

0

0

1

0

1

1

0

1

 

        

 

Рисунок 27 Перед выполнением программы

 

 

Рисунок 28 После выполнения программы

 

2Команды обнуления битов

 

Цель: исследование команд маскирования.

 

Программа PRG4маскирование

Адрес

Код 

Мнемоника

Комментарий

0000

21

LXI H

Загрузка регистровой пары

0001

20

MOV В, В

Из регистра В в В

0002

00

 

 

0003

3E

MVI А

Загрузка регистра А непосредственно

0004

43

 

Загрузка числа

0005

36

MVI M

Из регистра Е в Н

0006

51

 

Загрузка числа

0007

А6

ANA M

Аккумулятор | память

0008

76

HLT

Остановка процессора

 

С помощью байта-маски 10100012 (5116) сбрасывается 5-й биты байта 10000112 (4316). Здесь выполняется операция логического умножения чисел:

10100012 (5116) &10000112 (4316) = 101100012 (5116).

&

 

1

1

1

0

0

0

1

 

1

0

0

0

0

1

1

=

 

1

0

0

0

0

0

1

Рисунок 29 До выполнения программы

 

Рисунок 30 После выполнения программы

 

 

3 Команды логического сложения

 

Цель: исследование команд логического сложения.

Программа PRG 5логическое сложение чисел

Адрес

Код 

Мнемоника

Комментарий

0000

21

LXI H

Загрузка регистровой пары

0001

20

MVI В, В

Из регистра В в В

0002

00

 

 

0003

3E

MVIA

Загрузка регистра А непосредственно

0004

B3

 

Загрузка числа

0005

36

MVIM

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

0006

5B

 

Загрузка числа

0007

B6

ORA M

Аккумулятор | память

0008

76

HLT

Остановка процессора

 

Здесь выполняется операция логического сложения чисел:

 

101100112 (B316) +010110112 (5B16) = 100112 (1316)

+

1

0

1

1

0

0

1

1

0

1

0

1

1

0

1

1

=

0

0

0

1

0

0

1

1

 

Рисунок 31 Перед выполнением программы

 

Рисунок 32 После выполнения программы

 

 

4 Команды восстановления битов

 

Цель: исследование команд логического сложения.

Программа PRG 6маскирование

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A

Загрузка регистра А непосредственно

0001

 

Загрузка числа

0002

0E

MVI C

Загрузка регистра непосредственно

0003

 

Загрузка числа

0004

B1

ORA C

Аккумулятор | регистр С

0005

76

HLT

Остановка процессора

 

С помощью байта-маски 10010002 (4816) устанавливаются единицы в 5-омбайте11010002 (6816). Здесь выполняется операция логического сложения чисел:

11010002 (6816) +10010002 (4816)= 10010002 (4816)

 

+

 

1

0

0

1

0

0

0

 

1

1

0

1

1

0

0

=

 

1

0

0

1

0

0

0

Рисунок 33До выполнения программы

 

Рисунок 34 После выполнения программы

 

 

5 Инвертирование чисел

 

Цель: исследование команд инвертирования чисел.

Программа PRG 7инвертирование числа

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A

Загрузка регистра А непосредственно

0001

85

 

Число

0002

2F

MVI L

Загрузка регистра непосредственная

0003

76

HLT

Остановка процессора

 

Здесь выполняется операция инвертирования числа

 Не 100001012 (8516) = 001111012 (3D16)

не

 

 

1

0

0

0

0

1

0

1

 

 

0

1

1

1

1

0

1

0

 

           

 

Рисунок 35 До выполнения программы

 

Рисунок 36 После выполнения программы

 

6 Инвертирование флага переноса

 

Цель: исследование команд инвертирования.

Программа PRG 8 инвертирование флага переноса регистра F

Адрес

Код 

Мнемоника

Комментарий

0000

3F

СМС

Инверсия флага переноса

0001

76

HLT

Остановка

 

 

Рисунок 37До выполнения программы

 

Рисунок 38Вовремя выполнения программы

 

 

7 Инвертирование заданных битов числа

 

Цель: исследование команд инвертирования чисел.

Таблица 9 - Программа PRG 9инвертирование битов числа

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A

Загрузка регистра А непосредственно

0001

21

 

Число

0002

0E

MVI C

Загрузка регистра непосредственно

0003

8A

 

Число

0004

A9

XRA C

Аккумулятор ^ регистр C

0005

76

HLT

Остановка

 

Здесь выполняется операция инвертирования 2, 4 и 5 бита байта 1000012 (21) с помощью байта-маски 10001010 (8А). В результате получилось 10111111 = BF.

        

не

0

0

1

0

0

0

0

1

1

0

0

0

1

0

1

0

=

1

0

1

1

1

1

1

1

 

Рисунок 37До выполнения программы

 

 

Рисунок 38После выполнения программы

 

 

8Сравнение чисел

 

Цель: исследование команд поразрядного сравнения чисел (операция исключающая или).

Программа PRG 10поразрядное сравнение чисел

Адрес

Код 

Мнемоника

Комментарий

0000

3E

MVI A

Загрузка регистра А непосредственно

0001

21

 

Число

0002

EE

XRI

Аккумулятор ^ память непосредственно

0003

42

 

Число

0004

76

HLT

Остановка

 

Здесь выполняется операция поразрядного сравнения числа 1000012(2116) и 10000102(4216).

        

Å

0

0

1

0

0

0

0

1

0

1

0

0

0

0

1

0

=

0

1

0

0

1

0

1

1

В результате получается число 10010112 (4B16).

 

Рисунок 39До выполнения программы

 

           

Рисунок 40 После выполнения программы