Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Варіанти індивідуальних завдань

Работа добавлена на сайт samzan.net:


SM: Практична робота №1 до лекції №1. 

Практична робота № 1. Частина I.

Реалізація лінійних алгоритмів на мові машинних команд.  

Мета роботи:

Отримання|здобуття| практичних навичок|навиків| розробки програми на мові машинних команд (ММК).

При виконанні лабораторної роботи для кожного завдання вимагається написати програму на мові ММК. Введення даних здійснюється з клавіатури.

Варіанти індивідуальних завдань.

Див. додаток 1.

Теоретична частина.

Щоб навчитися програмувати, треба розуміти, як працює комп'ютер. А для цього зовсім не обов'язково вивчати проходження електричних сигналів по мікросхемах, але знати архітектуру комп'ютера - бажано.

Однозначно визначити поняття архітектури ЕОМ досить важко, тому що за бажання в нього можна включити усе, що пов'язано з комп'ютерами взагалі і якоюсь конкретною моделлю комп'ютера зокрема.

Архітектура ЕОМ - це комплексне поняття, деяке абстрактне представлення ЕОМ, яке відбиває її структурну, схемотехніку і логічну організацію.

Розглянемо структурну схему комп'ютера.

  Можна виділити чотири структурні компоненти комп'ютера.

Процесор. Виконує функцію обробки даних і здійснює контроль за діями комп'ютера, Якщо в системі є тільки один процесор, він часто називається центральним процесором (central process - ing unit - CPU).

Оперативна пам'ять. Тут зберігаються дані і програми. Як правило, ця пам'ять є тимчасовою.

Пристрої введення-виводу. Служать для передачі даних між комп’ютером і зовнішнім оточенням, що складається з різних периферійних пристроїв, в число яких входять вторинна пам'ять, комунікаційне обладнання і термінали.

Системна шина. Служить для взаємодії між процесором, основною пам'яттю і пристроями введення-виведення

Оперативна пам'ять.

Комірку комп'ютера можна розглядати як набір з декількох перемикачів, кожен з яких знаходиться в одному з двох станів : верхньому (його часто означають одиницею) або нижньому (його означають нулем). У комірці машини таких перемикачів, як правило, вісім (кожен перемикач називають бітом і говорять, що в осередку 8 біт або 1 байт). Положення перемикачів означають цифрами: 1 - вкл.; 0 - вимк. Т. ч. вміст комірки  може бути представлено у вигляді послідовності нулів і одиниць.  Наприклад

1 0 0 0 1 1 0 0

Спробуємо підрахувати, скільки різних чисел здатний вмістити така комірка. Для цього уявимо комірку, в якій не 8, а всього один перемикач c двома станами: 1 і 0 (ВЕРХ і НИЗ). Значить, в такій комірці можуть зберігатися два числа.

Якщо тепер додати до комірки ще один перемикач, число її станів подвоїться:

00  01  10  11

Для 8 перемикачів число можливих станів вже 28=256. Значить, в комірку  з восьми біт можна записати числа від 0 до 255 (всього 256).

Елементарною одиницею пам'яті усіх сучасних комп'ютерів є байт, що складається з восьми двійкових розрядів. Кожен байт має свою адресу. У найбільш поширеній 32-розрядній архітектурі адреси байтів змінюються від 0 до 232 - 1 з кроком 1. Пам'ять, з логічної точки зору, можна розглядати як масив байтів : можна прочитати або записати байт із заданою адресою.

Проте фізично при роботі з пам'яттю по шині передаються не окремі байти, а машинні слова. У 32-розрядній архітектурі машинне слово - це чотири що підряд йдуть байта, при цьому адреса молодшого байта кратна чотирьом. (У 64-розрядній архітектурі машинне слово складається з восьми байтів.)

Однією з найважливіших характеристик процесора  є розрядність адреси. Нею обумовлений об'єм пам'яті, що адресується - адресного простору. Системи з n - розрядною адресою здатні адресувати 2n елементів пам'яті. Наприклад, системи з 16-розрядною адресою - 64Кбайт (65536) комірок, з 32-розрядним - 4 Гбайта (4 294 964 296), 64 - 18 446 744 073 709 551 616  елементів пам'яті.   

Приклад.

Нехай оперативна пам'ять має розмір 256 байт і ділиться на осередки (машинні слова) розміром 4 байти.

Адреси байтів лежать в інтервалі від 0 до 255. Але це десяткові адреси. А в комп'ютері вони двійкові. Переведемо число 25510 в двійкову систему. Це можна зробити діленням на 2 або  іншим способом:

255 = 256-1 = 28-1 = (100000000-1)2 = 111111112.

Отже, діапазон адрес байтів змінюється від

0 до 111111112

У шістнадцятковій системі це відповідає діапазону від

0 до FF

(шістнадцяткова  система числення має наступний набір символів :

0,1,2, ... 9, A, B, C, D, E, F

Групи з 4 байтів утворюють осередки. Адреса осередку дорівнює адресі молодшого байта, що входить в неї (байта з меншим номером).

Схематично структуру оперативної  пам'яті учбового комп'ютера  можна представити так:

Адреси комірок

Адреси байтів

00

00

01

02

03

04

04

05

06

07

08

08

09

0A

0B

0C

0C

0D

0E

0F

10

10

11

12

13

14

14

15

16

17

...

...

F8

F8

F9

FA

FB

FC

FC

FD

FE

FF

Адреси комірок міняються з кроком 4. Перший осередок має адресу 00, остання - FC.

Адреси представляються двозначними шістнадцятковими числами, що відповідає восьмизначним двійковим числам. Отже, при зберіганні адреси в пам'яті вона займає 1 байт (8 біт).

Всього в пам'яті 64 комірок (256/4). У комірці може зберігатися або число, або команда програми.

Розрядність адреси (довжина адресного коду) дорівнює 8 біт, тому розмір адресного простору дорівнює 28=256 байт.

Учбовий комп'ютер (УК) працює тільки з цілими числами у форматі з фіксованою точкою.

Згідно з принципом Неймана - принципом програми, що зберігається в пам'яті, разом з даними в оперативну пам'ять комп'ютера поміщається програма управління його роботою ( у процесорів гарвардської архітектури пам'ять для зберігання команд і даних розділена). Спосіб представлення програми "зрозумілий" процесору ЕОМ називається мовою машинних команд - ММК. Програма на ММК реалізує алгоритм розв’язання обчислювальної задачі на комп'ютері-виконавцеві.

Машинна команда повинна містити в собі відповіді на наступні питання:

  1.  яку операцію виконати?
  2.  де знаходяться операнди?
  3.  куди помістити результат операції?
  4.  яку команду виконувати наступною?

Нехай машинні команди мають трьохадресну структуру (формат). Це означає, що комірка, в якій зберігатися команда,  містить три поля для зберігання адрес і одне поле для зберігання кода операції. Т.ч. комірка розміром 4 байти ділиться на 4 частини (по одному байту на кожну частину).

Їх позначимо таким чином:

КОП - код операції, А1 - адреса першого операнда, А2 - адреса другого операнда, А3 - адреса результату.

КОП

А1

А2

А3

Операндами називають дані, з якими проводиться операція. У арифметичних операціях це доданки, співмножники, зменшуване і таке, що віднімається, ділиме і дільник.

Приклад команди складання двох чисел :

КОП

А1

А2

А3

01

44

48

де

01 - це код операції складання;

44 - адреса комірки, в якій зберігається  перший доданок;

48 - адреса комірки, в якій зберігається  другий доданок;

4С - адреса комірки, в яку поміщається результат (сума).

Для усіх арифметичних операцій відповідь на питання: "Яку команду виконувати наступною"? завжди однаковий - наступною виконується команда, що знаходиться в наступному осередку.

Записувати команди будемо в шістнадцятковій формі. У пам'яті ЕОМ команда має двійковий вигляд. Використовуючи зв'язок між двійковою і шістнадцятковою системами, можна отримати внутрішнє представлення приведеної команди.

КОП

А1

А2

А3

00000001

01000100

01001000

01001100

У таблиці.1 знаходиться система команд нашого УК .

Запис(A2) ==> A3 потрібно розуміти так: вміст осередку з адресою A1 скласти з вмістом осередки з адресою A2 і результат записати в осередок A3; (A1) ==> A3 - вміст осередку A1 занести (скопіювати) в осередок A3.

Таблиця 1.

КОП

Операція

Пояснення

00

Пересилка

((A1) ==> A3

01

Складання

((A1) + (A2) ==> A3

02

Віднімання

((A1) - (A2) ==> A3

03

Множення

((A1) x (A2) ==> A3

04

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

((A1) div (A2) ==> A3 ціла частина від ділення

0A

Умовний перехід

Перехід до комірки з адресою A3 по регістру-ознаці результату W=1

0B

Безумовний перехід

Безумовний перехід до комірки з адресою  A3

77

Останов

Припинення виконання програми

Кожне число, що бере участь в розрахунках, займає елемент пам'яті, розміром 4 байти. Програміст повинен сам розподіляти пам'ять під дані.  Команди програми теж займають пам'ять.


Приклад розв’язання задачі.

Постановка задачі.

Обчислити цілочисельний вираз

( А + B ) x C

де А, В, С - цілі числа.

Під величини А, В, С виділимо елементи пам'яті з адресами:

Ідентифікатор

А

В

С

Адреса комірки

20

24

28

Результат обчислення вираження помістимо в комірку 2С.

Фрагмент програми, що вирішує цю задачу :

Адреса

КОП

А1

А2

А3

Пояснення

0C

01

20

24

2C

(20) + (24) ==> 2C

A+B

10

03

2C

28

2C

(2C) x (28) => 2C

(A+B) x C

У графі "Адреса" вказуються номери комірок, в яких розташовуються команди. Команди цієї програми виконуються в "природньому порядку" зростання адрес : спочатку 0С, потім 10.

Комірці з адресою 2С значення присвоюється двічі: спочатку результат підсумовування, потім - множення. Перший результат - проміжний, другий - остаточний.

Проте ця програма не може бути виконана тому, що:

  1.  не визначені значення початкових даних А, В, С.
  2.  користувач не зможе упізнати результати обчислень, оскільки вони залишаться усередині пам'яті, в осередку 2С, а в неї не заглянеш.

Початкові дані задаються введенням.

Введення - це занесення даних в оперативну пам'ять через пристрої введення. Пристроєм введення на УК є клавіатура.

Результати обчислень мають бути виведені. Виведення - це віддзеркалення інформації з оперативної пам'яті на пристроях виводу.

Пристроєм виведення УК  є дисплей.

Домовимося про наступний спосіб організації введення-виводу. З клавіатурою і дисплеєм пов'язаний останній елемент пам'яті - комірка FC. Називатимемо її буферною коміркою введення-виводу.

При введенні,  значення набиране на клавіатурі, потрапляє в комірку FC. На дисплеї постійно відбивається вміст осередку FC в шістнадцятковому виді. Тому для виведення значення з будь-якого елементу пам'яті його потрібно переслати в комірку з адресою  FC.

Комірка FC грає роль своєрідної відеопам'яті. На індикаторі користувач завжди бачить вміст комірки FC.

Структура команди пересилки наступна:

00

А1

- -

А3

Ця команда, фактично, двоадресна. Вміст другої адреси (А2) не впливає на її виконання (надалі на місці другої адреси писатимемо нулі). В результаті виконання команди пересилки значення в комірці А3 стає рівним (А1). При цьому значення в комірці А1 не міняється. Інакше це називається так: комірці А3 присвоюється  значення комірки  А1.

Пояснимо це на прикладі.

Нехай в комірці з адресою 10 знаходиться число 5, а з адресою  20 - число 7:

Розмістимо двійкове представлення числа 5 в одному байті:

Розмістимо двійкове представлення числа 7 в одному байті:

Система числення

Тетради

Двійкова

0000

0101

Шістнадцяткова

0

5

Система числення

Тетради

Двійкова

0000

0111

Шістнадцяткова

0

7

Розмістимо числа 5 і 7 в чотирьох байтах:

Адреси байтів

10

00

00

00

05

20

00

00

00

07

Після виконання команди

00 10 00 20

їх значення стануть однаковими

Адреси байтів

10

00

00

00

05

20

00

00

00

05

Повернемося до нашої програми. На дисплей треба вивести результат обчислень, отриманий в комірці з адресою 2С. Для цього його слід присвоїти комірці FC. Значить, команда виводу буде такою:

00 2С 00 FC.

Тепер  запрограмуємо  введення значення А в комірку з адресою 20.

00 FC 00 20.

Процесор, виявивши команду, у якої код операції дорівнює 00 і А1=FC, перериває роботу і чекає дій користувача. Користувач набирає на клавіатурі число. Це число заноситься в комірку з адресою  FC і, одночасно, висвічується на дисплеї. Потім користувач натискає клавішу <ВВЕДЕННЯ>. Процесор виконує команду пересилки з комірки з адресою  FC в комірку з адресою  20. Введення завершилося, процесор переходить до виконання наступної команди.

Запишемо команди введення і виводу в загальному вигляді:

00 FC 00 A3

- введення числа в комірку з адресою  А3

00 А1 00 FC

-  виведення числа з комірку з адресою   А1

А тепер запишемо програму обчислення виразу (А+В)*С в остаточному виді.

Домовимося, що будь-яка програма займатиме комірки на початку пам'яті. Перша команда завжди знаходиться в комірці з адресою  00.

Адреса комірки

КОП

А1

А2

A3

Пояснення

00

00

FC

00

20

введення А

04

00

FC

00

24

введення В

08

00

FC

00

28

введення С

0C

01

20

24

2C

A+B

10

03

2C

28

2C

((A+B)*C

14

00

2C

00

FC

виведення результату

18

77

00

00

00

Стоп

20

00

00

00

00

А

24

00

00

00

00

В

28

00

00

00

00

С

00

00

00

00

результат

У комірці з адресою  18 знаходиться команда останову з кодом операції 77. Результат її виконання - зупинка роботи машини. Вміст адресної частини в цій команді не має значення.

Припустимо, що за цією програмою ми хочемо обчислити вираз при  значеннях А=26, В=74, С=3.

Процесор починає виконувати програму з команди, що знаходиться в осередку 00. У нашій програмі це команда введення А. ЕОМ зупиняється і чекає дій користувача. Користувач набирає на клавіатурі шістнадцятковий код числа 26:

00 00 00 1А <ВВОД>

Після натиснення клавіші <ВВЕДЕННЯ> число 26 введено в комірку з адресою 20.

Наступна команда вимагає введення значення В. Користувач вводить:

00 00 00 4А <ВВОД>

Останнім вводиться значення С:

00 00 00 03 <ВВОД>

Наступні команди програми виконуються автоматично. Після виконання команди виводу (комірка з адресою 14) відбувається зупинка. Вона потрібна для того, щоб користувач встиг розгледіти результат на дисплеї, якщо в програмі декілька команд виводу. Для введених значень початкових даних результат на дисплеї буде таким:

00 00 01 2С

Програма продовжить виконання після натиснення клавіші <ВВЕДЕННЯ>. Робота програми завершиться по команді останову.

Отриманий результат - це шістнадцяткова форма внутрішнього представлення. Щоб отримати відповідь в десятковій системі, треба виконати переведення: 12С16 = 30010

Ми бачимо, що числа вводяться і виводяться в шістнадцятковому виді. Виконуючи розрахунки на сучасних ЕОМ, користувач має справу з десятковими числами. Про двійкову і шістнадцяткову системи він може взагалі нічого не знати. Але не потрібно забувати, що наш комп'ютер - учбовий. На його прикладі ми прагнемо зрозуміти, як працює ЕОМ. Рідна мова комп'ютера - це мова машинних команд і двійкових чисел. Автоматичне переведення чисел з двійкової в десяткову систему і назад проводиться за допомогою спеціальних програм переведення, а це вже програмний сервіс. Але ми зараз розглядаємо ЕОМ, позбавлену всякого програмного забезпечення. З такою машиною можна спілкуватися тільки на мові двійково-шістнадцяткових кодів.

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

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

Процесор управляє роботою ЕОМ за заданою програмою і виконує операції обробки даних.

Для виконання першого завдання до складу процесора входить пристрій управління (ПУ). Обчислювальним інструментом процесора є арифметико-логічний пристрій (АЛП). Третьою складовою процесора є регістрова пам'ять. Схема складу процесора показана на мал. 1.

АЛП процесора зазвичай не може оперувати даними, безпосередньо розміщеними в оперативній пам'яті.  Для виконання арифметичної операції потрібний доступ одночасно до трьох елементів пам'яті, що зберігають операнди і результат.

Для вирішення цієї проблеми процесор має регістри - спеціалізовані комірки пам’яті, які мають невеликий розмір. В них можна зберігати число або адресу. Для доступу до регістрів процесору не треба займати зовнішню шину даних. Отже, чим більше у процесорів регістрів, тим швидше він може працювати з оперативними даними.

З усіх регістрів процесора, програмісту доступні далеко не усі. Під доступністю програмістові ми маємо на увазі можливість вказувати регістри як операнди команд. Регістри, доступні програмістові для зберігання даних, називаються регістрами загального призначення.

Для доступу до регістрів процесору не треба займати зовнішню шину даних, та і цикл доступу до регістрів дуже короткий. Отже, чим більше у процесора регістрів, тим швидше він може працювати з оперативними даними. У сучасних процесорів кількість регістрів вимірюється сотнями, а іноді і тисячами.

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

АЛП

арифметико-логічний пристрій

ПУ

Пристрій управління

Регістри процесора

РК - регістр команд

РР - регістр результату

РЗП1 - регістр загального призначення

РЗП2 - регістр загального призначення

ЛчК

W

  

ЛчК

-

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

РК

-

регістр команд, в який при виконанні програми поміщається поточна виконувана команда;

РР

-

регістр результату, в нього спочатку поміщається результат виконаної операції;

РЗП1 і

РЗП2

-

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

W

-

регістр-ознака знаку результату. Фіксує знак результату чергової операції : якщо результат операції позитивний ( > 0 ), то W=1, інакше W=0.

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

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

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

Розглянемо детальніше цей процес на прикладі виконання арифметичних операцій в складеній нами програмі. До моменту виконання команди складання  Лічильник Команд (ЛчК) містить адресу  0C.

1 крок.

Адрес

Содержимое ячеек памяти

Регистры

Содержимое регистров

Комментарий

01

20

24

СчК

OC

10

03

28

РК

01

20

24

Текущая команда

РОН1

20

00

00

00

1A

РОН1

24

00

00

00

4A

PP

28

00

00

00

03

W

2C

2 шаг.

Адрес

Память

Регистры

Комментарий

01

20

24

СчК

10

10

03

28

РК

01

20

24

РОН1

00

00

00

1A

26 (десят.)

20

00

00

00

1A

РОН1

00

00

00

4A

74 (десят.)

24

00

00

00

4A

PP

00

00

01

2C

300(десят.)

28

00

00

00

03

W

01

Результат>0

2C

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

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


Додаток 1.

Варіанти індивідуальних завдань|задавань|.

  1.  2*с|із| - d + 23
  2.  -2*с|із| + d*82|
  3.  с/4 - d*62|
  4.  2*с|із| - d/4
  5.  2*с|із| - d/3
  6.  2*c-d*42|
  7.  с|із| — d/2 + 33
  8.  c*d| + 23
  9.  2*с|із| + d*51|
  10.  2*с|із| — d/2 +l
  11.  12/с|із| - d*4| +73
  12.  -53/а + d -4*a
  13.  -25/а +c-b*a
  14.  8*b + 1 - с|із|
  15.  b/c-l
  16.  а + c/b - 28
  17.  2*b - а + b*c|
  18.  а - b*4| - l
  19.  21 - a*c/4
  20.  2*b - 38*c|
  21.  a*b/4 - l
  22.  a*b| + 2*c|
  23.  2*с|із| + а - 21
  24.  8*b - 1 - с|із|
  25.  4*b/c + l
  26.  а - c*b| + 28
  27.  2*b - а + (4*b/c)
  28.  а + b/4- l)
  29.  25 + 2*a/c
  30.  b/2 - 53/c
  31.  с|із| + 4*d| - 123
  32.  25/с|із| - d + 2
  33.  4*с|із| - d/2 + 23
  34.  c/d + 3*а/2
  35.  2*с|із| + d/4 + 23


Додаток 2.

Вимоги до звіту.

Звіт по лабораторній роботі повинен відповідати наступній структурі.

  1.  Титульний аркуш.
  2.  Словесна постановка завдання. У цьому підрозділі проводиться повний опис завдання. Описується суть завдання, аналіз фізичних величин, що входять в неї, область їх допустимих значень, одиниці їх виміру, можливі обмеження, аналіз умов при яких завдання має рішення (не має рішення), аналіз очікуваних результатів.
  3.  Алгоритм розв’язання задачі. У підрозділі описується розробка структури алгоритму. Блок-схема алгоритму.
  4.  Лістинг програми. .
  5.  Контрольний тест. Підрозділ містить набори початкових даних і отримані в ході виконання програми результати.
  6.  Висновки по лабораторній роботі.
  7.  Відповіді на контрольні питання.

PAGE  1

FILENAME \p C:\TEXNICUM_2012\ASM_2012\Lesson_ASM_01_MMK\Lab\ASM_01_MMK_I_lineynye_LAB_ukr.doc  DATE \@ "M/d/yyyy" 9/25/2012




1. На тему- Нормативная база учета затрат на производство
2. модульною системоюорганізації навчального процесу Полтава 2011 Автори
3. ТЕОРЕТИЧЕСКИЕ ВОПРОСЫ Понятие первообразной функции.html
4. а военные действия велись на территории 40 государств
5. Йорк Роберту А. Манделлу за анализ кредитноденежной и финансовой политикив условиях различных режимов валю
6. Как быстро заработать деньги в Интернет Джо Витале Джиллиан Коулмен УиллерКак быстро зарабо
7. ГИ ОСАДЧАЯ СТИЛЬ ЖИЗНИ МОЛОДЫХ ГОРОЖАН- ТРАНСФОРМАЦИЯ И РЕГИОНАЛЬНАЯ ДИФФЕРЕНЦИАЦИЯ ОСАДЧ
8. Индивидуальные особенности и нарушения памяти
9. ЛАБОРАТОРНАЯ РАБОТА 2 ОПРЕДЕЛЕНИЕ УСКОРЕНИЯ СИЛЫ ТЯЖЕСТИ С ПОМОЩЬЮ УНИВЕРСАЛЬНОГО МАЯТНИКА
10. Архитектура Руси в 16 веке
11. Попурри 2007 336 с
12. Реферат на тему- Классические системы гадания Студентки гр
13. Лекция 1. Краткая история ИИ
14. курсовой проект [1] 1 Опалубочные работы [1
15. Бизнес-план торгового предприятия
16. Концепция Москва-Третий Рим
17. Самарский муниципальный институт управления Кафедра Государственного и муниципального управления
18. ма Я проснулась Скорей вытаскивай меня из кроватки Чего ты капаешься с этой пижамой Где мой кот Где А где к
19. Введение В рыночных условиях залогом выживаемости и основой стабильности положения предприятия служит
20. ре ~ вновь и анимаре ~ оживлять ~ комплекс мероприятий направленных на восстановление утраченных или уг