ГБОУ СПО СПб КИТ

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

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

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

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

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

2

Болгов Иван

2098+4512

1)2098+4512

2)перевожу в 16-ую систему счисления

3)832+11A0

Адрес

Код

Мнемоника

Комментарий

0000

3E

MVI A,8A

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

0001

32

0002

06

MVIB, d8

Записать в регистр B число d8

0003

A0

ANA B

Содержимое регистра В логически умножается с содержимым аккумулятора

0004

80

ADD B

Сложить числа

0005

32

STA adr

Содержимое аккумулятора засылается в ячейку

0006

20

-

0007

00

NOP

0008

3E

MVI A, d8

Записать в регистр A число d8

0009

08

-

000А

06

MVI B, d8

Записать в регистр B число d8

000В

10

-

000С

88

ADC B

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

000D

32

STA adr

Содержимое аккумулятора засылается в ячейку

000E

21

MOV D, C

Содержимое регистра С засылается в регистр В

000F

00

NOP

0010

76

HLT

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

До выполнения программы

НЕ нашли? Не то? Что вы ищете?

После выполнения программы

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

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

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

2

Болгов Иван

1)

2) Перевожу в 16-ую систему счисления

3) 807B-5B9B=24E0

Адрес

Код

Мнемоника

Комментарий

0000

3E

MVI A, d8

Содержимое второго байта команды засылается в регистр А

содержимое регистра Е засылается в регистр А

0001

7B

0002

D6

SUI d8

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

0003

9B

ORA E

Содержимое регистра Е вычитается из аккумулятора

0004

32

STA adr

Содержимое аккумулятора засылается в ячейку

0005

20

-

0006

00

NOP

0007

3E

MVI A, d8

Содержимое второго байта команды засылается в регистр А

0008

21

LXI H, d16

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

0009

DE

SBI d8

Содержимое второго байта команды вычитаем из аккумулятора

000А

10

-

000В

32

STA adr

Третий байт команды записывается в младший байт

000С

21

MOV D, C

Содержимое регистра В засылается в регистр D

000D

00

NOP

000E

76

HLT

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

До выполнения

После выполнения программы

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

2

Болгов Иван

99&123

1)99*123=99

2) Переводим в 16-ую систему счисления

63*7B=63

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

Адрес

Код

Мнемоника

Комментарий

0000

3E

MVI A, d8

Первое слагаемое заносится в аккумулятор

0001

63

MOV H, E

Содержимое регистра Е засылается в регистр H

0002

06

MVI B, d8

Содержимое второго байта команды засылается в регистр В

0003

7B

MOV A, E

Содержимое регистра Е засылается в регистр А

0004

A0

ANA B

Содержимое регистра В логически умножается с содержимым аккумулятора

0005

32

STA adr

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

0006

20

-

В ячейку 0020

0007

00

NOP

0008

76

HLT

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

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

11000112 (6316) & 11110112 (7В16) = 11000112 (6316)

&

1

1

0

0

0

1

1

1

1

1

1

0

1

1

=

1

1

0

0

0

1

1

До выполнения

После выполнения программы

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

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

Адрес

Код

Мнемоника

Комментарий

0000

21

0001

40

0002

00

0003

3E

0004

33

0005

36

0006

21

0007

А6

0008

32

0009

20

000A

00

000B

76

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

2

Болгов Иван

123+99

1)12310+9910=22210

2)+=

3)7B16+6316=DE16

Адрес

Код

Мнемоника

Комментарий

0000

21

LXI H, d16

0001

40

MOV B, B

0002

00

NOP

0003

3E

MVI A, d8

0004

7B

MOV A, E

0005

36

MVI M, d8

0006

63

MOV H, E

0007

B6

ORA M

0008

76

HLT