Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / 4 / Лабораторная работа №4

.docx
Скачиваний:
30
Добавлен:
02.10.2024
Размер:
29.56 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

Кафедра «Математическая Кибернетика и Информационные технологии»

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

Язык ассемблера

Выполнил: Студент группы

Москва

2024

Цель работы:

Изучение языка ассемблера.

Задание:

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

Ход работы:

    1. Код программы:

MOV F000, R0

MOV FF00, R1

MOV FFF0, R2

MOV FFFF, R3

STOP

Регистр

Десятичные значения

без учета знака

с учетом знака

R0

61440

-4096

R1

65280

-256

R2

65520

-16

R3

65535

-1

    1. Код программы:

MOV 5, R0

SUB 1, R0

NOT R0

MOV A, R1

SUB 1, R1

NOT R1

MOV 19, R2

SUB 1, R2

NOT R2

STOP

До

После

без учета знака

с учетом знака

5

65531

-5

10

65526

-10

25

65511

-25

Алгоритм выполняет операцию умножения на -1

    1. Код программы:

MOV FFFA, R0

ADD 9, R0

MOV 7FF8, R1

ADD 9, R1

MOV 8, R2

SUB A, R2

STOP

Выражение

Результат

без учета знака

с учетом знака

65 530 + 9

3

3

32 760 + 9

32769

-32767

8 - 10

65534

-2

В первом случае, число 65 530 считается отрицательным (-6), так как старший бит = 1, поэтому получается выражение -6+9=3.

Во втором случае после сложения положительных чисел, бит N=1 и бит O=1, происходит переполнение, и из-за него результат с учётом знака является неверным. Результат без учёта знака является верным.

В третьем случае из меньшего вычитаем большее, получаем отрицательный результат (бит N=1).

    1. Код программы:

MOV 7FF8, R0

ADD 7FF0, R0

MOV 8008, R1

SUB 7FF0, R1

MOV 0100, R2

SUB 0100, R2

STOP

Выражение

Результат

Знаковый бит

Биты состояния

без учета знака

с учетом знака

O

C

Z

N

32 760 + 32 752

65512

-24

1

1

0

0

1

-32 760 - 32 752

24

24

0

1

0

0

0

256 - 256

0

0

0

0

0

1

0

    1. Код программы:

MOV 0, R0

MOV 64, R1

m:

ADD R1, R0

SUB 1, R1

JNZ m

STOP

    1. Код программы:

MOV 1, R0

MOV N, R1

m:

MUL R1, R0

SUB 1, R1

JNZ m

STOP

N

N!

без учета знака

с учетом знака

5

120

120

6

720

720

7

5040

5040

8

40320

-25216

9

35200

-30336

Старший бит чисел ≥ 32768 (800016) равен 1, поэтому результат с учётом знака не равен результату без учёта знака при N=8.

В регистре помещается положительное число ≤ 65535 (FFFF16), 9! = 362880. При N=9 происходит переполнение, поэтому результат неверный.

2.1. Код программы: MOV 31, R1 MOV 32, R2 MOV 33, R3 AND F, R1 MUL 64, R1 MOV R1, R0 AND F, R2 MUL A, R2 ADD R2, R0 AND F, R3 ADD R3, R0 STOP

2.2.

Команда

R0

1

MOV 1234, R0

1234

2

XOR ABCD, R0

B9F9

3

XOR ABCD, R0

1234

  • Результат будет равен числу, записанному в R0.

  • Результат также будет равен, числу записанному в R0.

  • Результат не будет равен, числу записанному в R0.

2.3.

Начальное

значение

255 (FF16)

254

(FE16)

252

(FC16)

-255

(FF0116)

-254

(FF0216)

-252

(FF0416)

SHR 2, R0

63

63

63

16320

16320

16321

SHL 2, R0

252

252

252

-256

-256

-252

Данные не изменяются, когда два младших бита равны 0.

2.4. Код программы: MOV A, R1 MOV B, R2 MOV C, R3 SHL 8, R1 MOV R1, R0 SHL 4, R2 OR R2, R0 OR R3, R0 STOP

2.5. , — логический сдвиг влево на 1 бит, — логический сдвиг влево на 3 бита.

Код программы: MOV 2, R0 MOV R0, R1 SHL 1, R0 SHL 3, R1 ADD R1, R0 STOP

Вывод: Мы научились работать с регистрами, используя арифметические и логические операции.