Модель арифметико-логічного пристрою

Автор: Пользователь скрыл имя, 29 Декабря 2010 в 01:44, курсовая работа

Описание работы

Мета роботи: навчитися складати програму на мові асемблеру, яка використовує арифметичні та логічні операції.

Завдання:

Скласти програму моделювання операції додавання, віднімання і множення чисел з фіксованою крапкою з заданою кількістю розрядів.

Введення операндів виконувати з клавіатури.

Результати виводити на екран.

Содержание

Вступ 3
1.ЗАГАЛЬНІ ВІДОМОСТІ 4
1.1.Формати числових даних 4
1.2. Виконання арифметичних операцій 5
2. Блок-схема програми 9
2.1.Головна програма 9
2.2. Блок-схеми підпрограм 10
3. Опис роботи програми 14
3.1. Опис роботи головної програм 14

3.2. Опис виконання арифметичних операцій 14

4. Лістинг програми 16

5. Результати виконання програми 26

Висновки 28

Використані джерела 29

Работа содержит 1 файл

Курсова робота варіант_8_неупак.doc

— 353.00 Кб (Скачать)

МІНІСТЕРСТВО  ОСВІТИ І НАУКИ УКРАЇНИ

ЧЕРКАСЬКИЙ  ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ

Кафедра системного проектування 
 
 
 
 
 

Курсова робота

з дисципліни «Системне програмування та операційні системи» 
 
 
 
 
 
 
 

Перевірив          Виконав

ст. викладач       студент групи ІТПС-908

Бабенко В.Г.       Шевчук І.М.

_______________       _______________ 
 
 
 
 
 
 
 
 

Черкаси, 2010 р. 
Зміст

Вступ            3

1.ЗАГАЛЬНІ ВІДОМОСТІ          4

1.1.Формати числових даних         4

1.2. Виконання арифметичних операцій       5

2. Блок-схема програми         9

2.1.Головна програма          9

2.2. Блок-схеми  підпрограм         10

3. Опис роботи  програми         14

3.1. Опис роботи  головної програм        14

3.2. Опис виконання  арифметичних операцій      14

4. Лістинг програми          16

5. Результати виконання програми        26

Висновки            28

Використані джерела          29

 

Вступ

 

     Тема: модель арифметико-логічного пристрою.

     Мета  роботи: навчитися складати програму на мові асемблеру, яка використовує арифметичні та логічні операції.

     Завдання:

     Скласти програму моделювання операції додавання, віднімання і множення чисел з фіксованою крапкою з заданою кількістю розрядів.

     Введення  операндів виконувати з клавіатури.

     Результати  виводити на екран.

     Програма  повинна задовольняти таким умовам:

     1 рівень - програма виконує операції підсумовування і віднімання цілих чисел.

     2 рівень - програма виконує операції підсумовування і віднімання чисел з фіксованою крапкою і виконує перевірку правильності вводу чисел.

     3 рівень - програма виконує операції підсумовування, віднімання і множення чисел з фіксованою крапкою, виконує перевірку правильності вводу чисел і має "дружній" інтерфейс. Рівень виконання програми вибирається студентом. 
 

Варіант - 8

Кількість байтів в цілій  та дробовій частині  – 3

Спосіб зберігання числа в пам’яті - не упакований

 

1.   ЗАГАЛЬНІ ВІДОМОСТІ.

1.1.Формати числових даних.

    Числа, які вводяться з клавіатури, надходять  в процесор в ASCII-кодах. ASCII-код кожної десяткової цифри числа дорівнює значенню цієї цифри, збільшеному на 30h.

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

    а) Число в двійковому форматі зберігається в пам'яті у вигляді одно- чи двохбайтового числа в доповняльному  коді.

    б) Число в двійково-десятковому  упакованому форматі зберігається в пам'яті у вигляді послідовності  байт. Послідовність цифр в байтах природна : в молодших байтах зберігаються старші цифри.

    В кожному байті зберігаються дві  двійково-кодовані десяткові цифри  в коді BCD(Binary-Coded Decimal)

Цифра Двійковий код Цифра Двійковий код
0

1

2

3

4

0000

0001

0010

0011

0100

5

6

7

8

9

0101

0110

0111

1000

1001

    Приклад запису 6-розрядного десяткового числа 653201 в пам'яті в коді BCD: 

1 байт 2 байт 3 байт  
6       5 3       2 0      1 десяткове представлення
0110 0101 0011 0010 0000 0001 двійкове представлення
 

    в) Число в двійково-десятковому неупакованому форматі зберігається у вигляді послідовності байтів. В кожному байті зберігається одна двійково-кодована десяткова цифра. ±ї значення міститься в чотирьох молодших бітах байта.

    Перед виконанням операції множення таких чисел в старших чотирьох бітах повинні бути записані нулі. Для операції додавання і віднімання зміст цих біт не є суттєвим.

    Приклад запису 3-розрядного десяткового числа 653 в пам`яті в двійково-десятковому  неупакованому форматі: 

1 байт 2 байт 3 байт  
0      6 0     5 0     3 десяткове представлення
0000 0110 0000 0101 0000 0011 двійкове представлення

1.2. Виконання арифметичних операцій.

    Процесори IBM PC мають в системі команд такі команди, які дозволяють виконувати арифметичні операції додавання, віднімання, множення і ділення над цілими числами в двійковому форматі, а також в двійково-десятковому упакованому і неупакованому форматах.

1.2.1. Арифметичні команди над двійковими цілими числами.

1.2.1.1. Для виконання додавання цілих двійкових чисел можуть використовуватись команди:

      ADD a,b - Додавання без урахування  перенесення. Команда додає значення  двох операндів а та b, і розміщує  результат замість першого операнда. Операнд може знаходитися в пам'яті, в регістрі, або бути безпосереднім параметром в команді. Не допускається додавання двох операндів, які находяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапори AF,CF,OF,FF,SF,ZF.

      ADC a,b - Додавання з перенесенням. Команда  додає значення двох операндів,  а також значення прапора перенесення CF (a+b+CF), і розміщує результат замість першого операнда. Обмеження на операнді такі ж, як і в команді ADD. Установлюються прапори AF,CF,OF,FF,SF,ZF. Ця команда використовується для програмування арифметичних операцій над довгими цілими числами.

    INC a - Збільшення на 1. Команда додає  1 до значення операнда а. Операнд  може находитися в пам'яті або в

      регістрі. Установлюються прапори AF,OF,PF,SF,ZF.

1.2.1.2. Для виконання віднімання можуть бути використані команди:

      SUB a,b - Віднімання. Команда віднімає із значення першого операнда а значення другого операнда b і розміщує результат замість першого операнда. Операнд може находитися в пам'яті, в регістрі, або бути безпосереднім параметром в команді. Не допускається віднімання, коли обидва операнда находяться в пам'яті. Першим операндом не може бути безпосередній параметр. Установлюються прапори AF,CF,OF,PF,SF,ZF.

      SBB a,b - Віднімання з позикою. Команда  віднімає із значення першого  операнда а значення другого  операнда b, зменшує результат на значення прапора CF (a-b-CF) і розміщує результат замість першого операнда. Обмеження операндів такі ж, як і в команді SUB. Установлюються прапори AF,CF,OF,PF,SF,ZF.

    DEC a - Зменшування на 1. Команда зменшує  значення операнда а на 1. Операнд  може находитися в пам'яті

      або в регістрі. Установлюються прапори AF,OF,PF,SF,ZF.

1.2.1.3.Для виконання множення цілих двійкових чисел можуть бути використані команди:

    MUL a - Множення. Команда виконує множення  вмісту акумулятора (AL або AX) на  значення операнда а.

      Результат розміщується, відповідно, в акумуляторі AX, або в парі регістрів DX:AX. Множники розглядаються як числа без знаків. Установлюються прапори CF і OF. Прапори AF,PF,SF і ZF не визначені.

      IMUL a - Множення із знаком. Команда  виконує множення вмісту акумулятора (AL або AX) на значення операнда а. Результат розміщується, відповідно, в акумуляторі AX, або в парі регістрів DX:AX. Множники розглядаються як числа із знаками.

       Прапори CF і OF скидаються в 0, коли старша частина  добутку (регістр AH або DX) є поширенням знака, який находиться в молодшій частині добутку (AL або AX), інакше ці прапори установлюються в 1.

1.2.1.4.Для виконання ділення цілих двійкових чисел можуть використовуватися команди:

      DIV a - Ділення. Команда виконує ділення  вмісту акумулятора на операнд a. Коли операнд а - байт, тоді ділене розміщується в AX, ціла частина розміщується в AL, а залишок - в AH. Коли операнд а - слово, тоді ділене розміщується в парі DX:AX (подвійне слово), ціла частина розміщується в AX, а залишок в DX. Операнд розглядаються як цілі числа без знака. При діленні на 0 виконується переривання типа 0.

      IDIV a - Ділення із знаком. Команда  виконує ділення операндів також,  як в команді DIV. Операнди розглядаються  як числа із знаками. Прапори  не визначені. При діленні на 0 виконується переривання типа 0.

1.2.2. Арифметичні команди над двійково-десятковими неупакованими числами

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

     Слід  нагадати, що для зберігання однієї цифри такого числа треба один байт.

     Виконання операції над черговими розрядами  операндів, тобто над черговими  байтами, починається з того, що над  цими байтами виконується відповідна двійкова команда додавання (ADD, ADC), віднімання (SUB, SBB), множення (MUL) або ділення (DIV).

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

    ААА - Корекція результату додавання. Команда коригує результат операції ADD. В чотирьох молодших бітах регістра AL записується значення десяткової цифри, а в чотирьох старших бітах записуються нулі. Коли в AL результат попередньої операції перевищує 9, тоді CF=1 і AH=AH+1.

    AAS - Корекція результату віднімання. Команда коригує результат операції SUB. В чотирьох молодших бітах регістра AL записується значення десяткової цифри, а в чотирьох старших бітах записуються нулі. Коли потрібно мати позику із старшого розряду, тоді CF=1 і AH=AH+1.

    AAM - Корекція в AX результату множення. Команда коригує результат операції MUL. В регістрі AH записується старша цифра добутку, а в AL - молодша цифра.

    AAD - Корекція ділення. Команда коригує ділене в регістрі AL перед виконанням ділення, так що наступне ділення DIV дає неупаковану десяткову частку: в AL - результат, в AH - нуль.

Информация о работе Модель арифметико-логічного пристрою