Главная страница

практическая мемори. Практическая 8 желонкин максим. Арифметические операции с целыми числами


Скачать 38.79 Kb.
НазваниеАрифметические операции с целыми числами
Анкорпрактическая мемори
Дата28.12.2022
Размер38.79 Kb.
Формат файлаdocx
Имя файлаПрактическая 8 желонкин максим.docx
ТипДокументы
#867530

      1. Арифметические операции с целыми числами


К роме регистров общего назначения, с которыми мы уже работали, в процессоре есть служебные регистры. В этой работе мы будем использовать один из них – регистр состояния PS. Используются только три младших бита этого регистра (см. рисунок), которые показывают, какой результат был получен в результате последней операции:

  • бит C (от англ. carry – перенос) установлен (равен 1), если произошел перенос; в остальных случаях сброшен (равен 0);

  • бит Z (от англ. zero– ноль) установлен, если результат последней операции – ноль; в остальных случаях сброшен;

  • бит N (от англ. negative– отрицательный) установлен, если результат последней операции отрицательный; в остальных случаях сброшен.

  • бит O (от англ. overflow– переполнение) установлен, если в результате последней операции произошло переполнение и результат неверен; в остальных случаях сброшен.

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

JNZ метка

Если результат предыдущей операции НЕ равен нулю, то происходит переход на указанную метку. Вот пример программы, которая вычисляет сумму натуральных чисел от 1 до 5:

MOV 0, R0 ; начальное значение суммы

MOV 5, R1 ; количество шагов цикла

m: ; метка обозначает начало цикла

ADD R1, R0 ; R0:= R0 + R1

SUB 1, R1 ; уменьшить R1 – оставшееся число шагов

JNZ m ; переход, если получился не ноль

STOP

Здесь в каждой строчке после точки с запятой записан комментарий, объясняющий ее действие. Давайте проследим, как выполняется эта программа:

Команда

R0

R1

бит Z

переход

MOV 0,R0

0




1




MOV 5,R1




5

0




ADD R1,R0

5




0




SUB 1,R1




4

0




JNZ m







0

да

ADD R1,R0

9




0




SUB 1,R1




3

0




JNZ m







0

да

ADD R1,R0

12




0




SUB 1,R1




2

0




JNZ m







0

да

ADD R1,R0

14




0




SUB 1,R1




1

0




JNZ m







0

да

ADD R1,R0

15




0




SUB 1,R1




0

1




JNZ m







1

нет

STOP













Цикл заканчивается, потому что бит Z равен 1 (результат последней операции вычитания – ноль) и перехода по команде JNZ не происходит.

Задание на практическую работу

  1. Запустите тренажер «Лампанель». Вычислите приведенные выражения с помощью программы. Запишите в таблицу результаты, значение знакового бита и битов O, C, N и Z.
    Замечание: в программу нужно вводить числа в шестнадцатеричной системе счисления!

Выражение

Результат

Знаковый бит

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

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

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

O

C

Z

N

32760+32752

23

23

1

1

0

0

1

-32760-32752

65527

-9

1

0

1

1

0

256-256

65535

-1

1

0

0

0

0

Объясните полученные результаты:

Перевел числа в шестнадцатичеричную систему исчесления

Написал программу для сложения и вычитания

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

  1. 8FFF + 7FFF

  2. Определите, в каких случаях произошло переполнение. Выделите эти строки таблицы желтым фоном.

  3. С помощью программы, приведенной в теоретической части, вычислите сумму натуральных чисел от 1 до 100.

Программа:

MOV 0, R0

MOV 64, R1

m:

ADD R1, R0

SUB 1, R1

JNZ m

STOP

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

Ответ:

5050

  1. Напишите программу, которая вычисляет значение факториала – произведения всех натуральных чисел от 1 до заданного числа. Например, факториал числа 5 равен .

Для выполнения умножения используйте команду MUL (см. справочную систему, клавиша F1).

Программа:

mov 1, R0

mov 1,r2

mov n, r1

m:

mul r2,r0

add 1,r2

sub 1,r1

JNZ m

Stop

n- это любое натуральное число у которого хотите узнать факториал

С помощью программы заполните таблицу:

N

N!

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

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

5

120

120

6

720

720

7

5040

5040

8

40320

-25216

9

35200

-30336

Объясните результаты, полученные в последних двух строчках:


написать администратору сайта