Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
01_C_Vvedenie_student_2011-2012.ukr.doc
Скачиваний:
1
Добавлен:
09.07.2019
Размер:
225.28 Кб
Скачать

Робота процесора

До складу процесора входить пристрій управління (ПУ), арифметико-логічний пристрій (АЛП) і регістрова пам'ять.

ПУ управляє роботою комп'ютера за заданою програмою. АЛУ виконує обчислення.

Нехай процесор містить 5 регістрів.

ЛчК

-

лічильник команд. У ньому послідовно міняються адреси виконуваних команд;

РК

-

регістр команд - поточна виконувана команда;

РР

-

регістр результату - результат виконаної операції;

РЗП1 і РЗП2

-

регістри загального призначення - поміщаються операнди (доданки, співмножники і так далі);

Розмір регістрів РК, РР, РЗП1 і РЗП2 дорівнює розміру машинного слова (32 біта). ЛчК має розмір в 1 байт.

Виконання програми починається з того, що в ЛчК заноситься 00 - адреса першої команди. Потім вступає в роботу ПУ. Він організовує запис в РК вміст комірки, адреса якого вказана в ЛчК. За кодом операції ПУ визначає, чи не останов це. Якщо "ні", то робота вміст ЛчК збільшується на 4, тим самим готується виконання наступної команди.

ПУ продовжує аналізувати код операції, залежно від якого вибирається той або інший варіант дії. АЛП працює при виконанні арифметичних операції, після занесення операндів в РЗП1 і РЗП2. Результат операції заноситься в РР (регістр результату). Потім УУ переписує результат в елемент пам'яті і переходить до виконання наступної команди.

Програма закінчує роботу, коли УУ виявить код останову 77.

Автокод

Автокод - машинний - орієнтована мова програмування, опреатори якої по своїй структурі подібні до команд і даних конкретної машинної мови. Кожній команді ММК відповідає команда Автокода.

Формат будь-якої тримісної команди наступний:

<мнемокод> <1-й операнд>, <2-й операнд>, <результат>

Операнди можуть бути змінними або константами, результат - завжди змінна.

Замість адрес вхідних даних використовуються символічні імена - ідентифікатори.

Дані - константи записуються у вигляді десяткових чисел, наприклад:

5 , -12 , 3245.

Мнемокод - це мнемонічне (буквене) відображення коду операції.

КОП

Мнемокод

Операція

00

MOV

Пересилка

move

01

ADD

Складання

add

02

SUB

Віднімання

subtract

03

MUL

Множення

multiply

04

DIV

Ділення без остачі

divide

77

STOP

Останов програми

stop

INPUT A

INPUT A

ADD A,B,C ; C:=A + B

MUL C,3,D ; D:=3*C

MOV D,X ; X:=D;

OUTPUT X

Тут визначимо спеціальні команди введення і виводу :

INPUT і OUTPUT X.

Заміст адрес вказано символічні імена.

Етапи роботи програми на Автокоді наступні:

  1. Складання програми

  2. Трансляція і синтаксична відладка

  3. Тестування і відладка алгоритму

Приклад: Визначити, до якого віку (V) відноситься вказанний рік (G).

Дано:

Розрахункова формула:

Знайти:

V = (G + 99) / 100

Автокод

Результат трансляції

Команди

Пояснення

Адреса

КОП

A1

A2

A3

INPUT G

введення G

00

00

FC

00

14

ADD G, 99, G

G:=G+99

04

01

14

18

14

DIV G,100,V

V:=G div 100

08

04

14

1C

20

OUTPUT V

виведення V

0C

00

20

00

FC

STOP

останов

10

77

00

00

00

14

змінна G

18

константа 99

константа 100

20

змінна V

Для перетворення команд на автокоді в машині команди існує програми, що називається транслятором.

Початковими даними для цієї програми є текст на Автокоді.

Алгоритм, по якому працює транслятор з Автокода після завершення синтаксичної відладки.

  1. Розподіл пам'яті під програму.

  2. Розподіл пам'яті під дані. Відразу услід за останньою командою програми поміщаються змінні і константи в тій послідовності, в якій вони зустрічаються в програмі на Автокоді.

  3. Перекодувала команд. Кожна команда на Автокоді переводиться у відповідну команду на машинній мові. Мнемонічний код замінюється на код операції, а змінні і константи - на їх машинні адреси. Константи переводяться в двійкову систему і записуються у відведені для них комірки.

Виконання програми, отриманої в результаті трансляції, відбуватиметься так само, як і раніше при роботі на ММК.

Для того, щоб при роботі на Автокоді числа вводилися і виводилися в десятковій системі числення, треба щоб була написана процедура переведення введеного числа з десяткової системи в двійкову і навпаки.

Пам'ять розподіляється транслятором "щільно". Комірки під дані виділяються відразу ж після останньої команди програми.

А тепер розглянемо програму, написану на мові високого рівня, наприклад Сі.

int main ()

{

int v, g;

cin >>g;

v=(g+99)/100.;

cout << v:

}

6