Deitel C - Задачи - Глава 7

Материал из Информационная безопасностя
(перенаправлено с «Задачи - Дейтел (глава 7)»)
Перейти к навигации Перейти к поиску

Deitel C - Задачи

Группы и результаты

8 А 8 Б 8 В 8 Г

07.27

Создайте программу, которая симулирует работу компьютера (Simpletron).

Компьютер имеет оперативную память в 100 целых беззнаковых чисел. Каждое число представляет собой инструкцию машинного языка (SML - Simpletron Machine Language).

Последние 2 цифры числа в десятичной записи представляют собой адрес. Цифры перед ними инструкцию.

Инструкции вводятся либо путём инициализации массива, либо считываются из файла memory.txt

У процессора есть два регистра:

  • InstructionRegister - регистр инструкций. Он содержит адрес следующей инструкции в памяти компьютера, которую он будет исполнять.
  • Accumulator - аккумулятор. Целочисленный регистр используемый компьютером для совершения арифметических операций.

Пока наш компьютер будет оперировать только целыми числами.

Базовый набор инструкций SML:

Операции ввода/вывода:
READ 10 - ввести число с клавиатуры в определённый адрес памяти
WRITE 11 - вывести число из определённого адреса памяти на экран
Операции загрузки и выгрузки:
LOAD 20 - загрузить число из определённого адреса памяти в аккумулятор
STORE 21 - выгрузить число из аккумулятора в определённый адрес памяти
Арифметические операции:
ADD 30 - добавить к числу из аккумулятора число из определённого адреса в памяти (результат остаётся в аккумуляторе)
SUBTRACT 31 - отнять от числа из аккумулятора число из определённого адреса в памяти (результат остаётся в аккумуляторе)
DIVIDE 32 - разделить число из аккумулятора на число из определённого адреса в памяти (результат остаётся в аккумуляторе)
MULTIPLY 33 - умножить число из аккумулятора на число из определённого адреса в памяти (результат остаётся в аккумуляторе)
Операции передачи контроля:
BRANCH 40 - Безусловный переход к исполнению инструкции по указанному адресу
BRANCHNEG 41 - Переход к исполнению инструкции по указанному адресу в случае если аккумулятор содержит отрицательное число
BRANCHZERO 42 - Переход к исполнению инструкции по указанному адресу в случае если аккумулятор содержит ноль
HALT 43 - остановка компьютера