Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Завдання на роботу. 1 Написати програму на Turbo Assembler для виконання завдання відповідно до заданого варіанту:





 

1 Написати програму на Turbo Assembler для виконання завдання відповідно до заданого варіанту:

Таблиця 16.1 – Варіанти завдань

Варіант Завдання
   
  Визначити об’єм розширеної та основної пам’яті
  Вивести кількість послідовних портів та їх базові адреси
  Вивести кількість паралельних портів та їх базові адреси
  Визначити тип відео адаптеру та режим його роботи
  Визначити наявність, кількість FDD пристроїв та їх об’єм
  Вивести на екран дані із СМОS–пам'яті (1:0Е і т.д.)
  Визначити основний та додатковий код моделі комп’ютера, версію та дату BIOS
  Записати слово “Password” у вільні байти СМОS. Вивести його на екран з СМОS - пам'яті

Продовження таблиці 16.1

  Вивести поточний час
  Вивести поточну дату
  Вивести розшифровку байту стану діагностики (0Eh)
  Визначити наявність та кількість математичних сопроцесорів
13* Написати програму, яка завершає свою роботу через 8сек.
14* Виконати ділення на нуль. Видати повідомлення про виявлення ділення на нуль (використати int 0)
15* Виконати сумування однобайтового чисел від 1 до 128. Перехопити момент виникнення переповнення. Вивести повідомлення про переповнення, число, при якому виникло переповнення, та суму до переповнення

* – завдання підвищеної складності.

 

2 Здійснити компіляцію програм.

3 Виконати трасування програми за допомогою Turbo Debugger.

4 Зробити висновки за результатами роботи.

 

16.4 Контрольні запитання

 

1 Вкажіть максимальну кількість базових регістрів паралельних та послідовних портів в комп’ютері.

2 Назвіть варіанти визначення коду моделі комп’ютера.

3 Скільки байт пам’яті зарезервовано в CMOS для довільного використання?


ЛАБОРАТОРНА РОБОТА №17

 

СЕГМЕНТИ ПАМ’ЯТІ ТА СПОСОБИ АДРЕСАЦІЇ. КОМАНДИ ПЕРЕДАЧІ УПРАВЛІННЯ

 

17.1 Мета роботи

 

Вивчити способи організації пам’яті в реальному режимі роботи процесора і8086. Ознайомитися з способами адресації та зміни порядку виконання команд програми.

 

17.2 Теоретичні відомості

 

Кожна програма чи дані займають деяку область оперативної пам’яті. Неперервні області оперативної пам’яті, зайняті деякими даними чи програмами називають сегментами. На рівні процесора розрізняються наступні види сегментів:

1 Сегмент коду. В сегментах даного типу повинні розміщуватися команди програм. Адреса комірки пам’яті, з якої розпочинається розміщення поточного сегменту коду (тобто адреса сегмента коду), зберігається в регістрі cs.

2 Сегмент даних. В сегментах даного типу повинні розміщуватися дані, що використовуються програмами. Адреса поточного сегмента даних розміщується в регістрі ds.

3 Сегмент стеку. Сегмент стеку – це область пам’яті, яка використовується для зберігання деякої службової (наприклад, адреси повернення з підпрограм) чи іншої інформації. Даний тип сегментів має ряд особливостей. По-перше, записувати в стек та зчитувати зі стеку можна тільки 16-розрядні дані. По-друге, дані з сегменту стеку зчитуються в порядку, протилежному запису, тобто елемент, записаний в стек найпершим, буде зчитаним останнім – після зчитування всіх решта елементів. Адреса поточного сегмента стека знаходиться в регістрі ss.

4 Додатковий сегмент даних. Використовується в якості допоміжного сегмента для зберігання даних. Адреса поточного додаткового сегмента даних знаходиться в регістрі es.

Максимальний розмір одного сегменту – 64 Кб.

Адреса кожної комірки оперативної пам’яті складається з двох частин – адреси сегмента в пам’яті та зміщення всередині сегмента. Тому адресу прийнято записувати так: адреса_сегмента:зміщення.

У всіх асемблерних командах, які працюють з даними в пам’яті, сегментна частина адреси задається неявно. Наприклад команда mov al,[100h] призводить до запису в регістр al числа з комірки пам’яті з адресою ds:[100h], тобто в самій команді задається тільки зміщення комірки пам’яті відносно початку сегмента даних. Зміщення комірки пам’яті в командах обробки даних може задаватися не тільки числовою константою (абсолютна адресація), а й значенням чи сумою значень деяких регістрів (відносна адресація).

Наприклад:

mov ax,[bx];зміщення комірки пам’яті визначається значенням в регістрі bx

sub dh,[bx+si];зміщення комірки пам’яті визначається сумою значень в регістрах bx та si

add cl,[bx+di+10h];зміщення комірки пам’яті визначається сумою значень в регістрах bx, si та числової константи 10h.

Для явного задання сегментної частини адреси в командах обро,ки даних використовують повний формат запису адреси. Наприклад:

xor ax,es:[200h]

test al,cs:[bx]

Для роботи з даними всередині сегмента стека використовується регістрова пара ss:sp, де регістр ss задає адресу сегмента, а регістр sp – зміщення поточного елемента стеку (вершини стеку).

Для запису даних в стек служить команда

push < операнд >,

де < операнд > – 16-розрядний регістр або адреса слова в пам’яті.

При виконанні даної команди процесор зменшує значення регістра sp на 2, і заносить по адресу ss:[sp] значення операнда.

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

pop < операнд >,

де < операнд > – 16-розрядний регістр або адреса слова в пам’яті.

При виконанні даної команди в операнд записується слово задане адресою ss:[sp], після чого значення регістра sp збільшується на 2.

Для адресації команд всередині сегмента коду, використовується регістрова пара cs:ip, де регістр cs задає адресу сегмента коду, а регістр ip – зміщення в сегменті. Після виконання кожної команди процесор автоматично змінює значення регістра ip таким чином, щоб той вказував на наступну команду для виконання.

Для зміни значення регістра ip, існують так звані команди переходу. Для безумовного переходу служить команда jmp:

jmp < адреса переходу >.

Виконання даної команди призводить до занесення в регістр ip значення < адреса переходу >, тобто після команди jmp виконається не команда, яка йде після команди jmp, а команда, розміщена по адресу cs:[ < адреса переходу > ] (відбудеться перехід).

Наприклад:

jmp [326h];наступною виконається команда, розташована по адресу cs:[326h]

Для задання адреси в командах переходу можна користуватися мітками.

Наприклад:

jmp mitka_1

mitka_1:

add ax,bx

При виконанні команди jmp mitka_1 відбудеться перехід на команду add ax,bx, але при цьому відпадає потреба рахувати адресу переходу вручну.

Переходи можуть бути умовними, тобто відбуватися або не відбуватися в залежності від стану прапорців. Деякі з команд умовного переходу наведені в таблиці 17.1.

 

Таблиця 17.1 – Команди умовного переходу

Команда переходу Умова переходу
jc Перехід відбувається при встановленому прапорці переносу CF
jnc Перехід відбувається при скинутому прапорці переносу CF
jz Перехід відбувається при встановленому прапорці нуля ZF
jnz Перехід відбувається при скинутому прапорці нуля ZF
js Перехід відбувається при встановленому прапорці знаку SF
jns Перехід відбувається при скинутому прапорці знаку SF
jp Перехід відбувається при встановленому прапорці парності PF
jnp Перехід відбувається при скинутому прапорці знаку PF
jcxz Перехід відбувається, якщо значення регістра cx рівне нулю

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

 

Date: 2015-12-12; view: 396; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию