Студопедия  
Главная страница | Контакты | Случайная страница

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

Дослідження програмного управління курсором через вкладені асемблерні цикли

Читайте также:
  1. A) Схватив окно за заголовок левой кнопкой мыши или через системное меню
  2. Lt;variant>циклическим
  3. quot;Истинное, благотворное познание Бога достижимо только через
  4. SURFER 7.04 В АРХЕОЛОГІЧНИХ ДОСЛІДЖЕННЯХ СЕРЕДНЬОВІЧЧЯ
  5. А. Полициклические антидепрессанты
  6. А37. В обществе с рыночной экономикой государство воздействует на экономическую жизнь через
  7. Адміністративні методи -це сукупність прийомів, впливів, за­снованих на використанні об'єктивних організаційних відносин між людьми та загальноорганізаційних принципів управління.
  8. Актуальність дослідження і ступінь наукової розробки проблеми
  9. Алгебраическая структура циклических кодов
  10. Аналіз показників ефективності управління виробничими запасами на підприємстві

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

Функції DOS підтримують обробку код, що управляють. Це означає, що при виведенні символів з цими кодами на екран замість


 

безпосередньо виведення символів проводяться певні дії, що управляють:

07h (BEL) — звуковий сигнал (із стандартного звукового пристрою);

08h (BS) — Backspace (курсор зрушується на 1 позицію вліво);

09h (НТ) — горизонтальна табуляція (курсор зрушується до найближчої правої межі табуляції);

10 = OAh (LF) — переклад рядка (курсор зрушується на рядок вниз, залишаючись в тій же позиції);

13 = ODh (CR) — повернення каретки (курсор зрушується в початок поточного рядка).

Коди, що управляють, дають можливість виводити на екран форматований текст в режимі телетайпу. Текстовий екран при цьому зазвичай складається з 25 рядків по 80 символів. Рядки нумеруються з 1-ою (верхня) по 25-у (нижняя). Якщо курсор знаходиться в останній позиції рядка, виведення символу приводить до автоматичного перекладу курсора в початок нового рядка. Якщо курсор знаходиться в передостанньому (25-й) рядку, то його переклад на наступний рядок приводить до зрушення зображення на рядок вгору.

При перенаправленні виводу інтерпретація код, що управляють, може мінятися.

Вкладені цикли. Нерідко при програмуванні (зокрема, при обробці двовимірних масивів) доводиться повторювати виконання деякого циклу в зовнішньому циклі. Внутрішній цикл при цьому називається вкладеним. Зовнішній цикл організовується відповідно до тих же принципів, що і цикли взагалі. Проте необхідно стежити затим, щоб не порушувалася зміна змінних вкладеного і зовнішнього циклів. Один з варіантів: використання двох різних осередків як змінні цикли, наприклад:

шоу аі, 0;

змінної зовнішнього циклу теїкаї:; початок зовнішнього циклу

шоу аїі, 0;

змінної внутрішнього циклу | п^ка2:; початок внутрішнього циклу іпс аЬ; зі

зміна АН

сшр ah, N jb metka2

внутрішнього циклу іпс аі cmp al, М

ініціалізація

ініціалізація

кінець

зміна A


 

jb metkal зовнішнього циклу

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

; Зовнішній цикл, N разів, що повторюється mov сх, N

metkal:

push сх; збереження

лічильника зовнішнього циклу в стеку

; Внутрішній цикл, М разів, що повторюється mov сх, М

metka2:

...; (тіло внутрішнього циклу)

loop metka2

...; (тіло зовнішнього циклу)

pop сх; відновлення

лічильника зовнішнього циклу loop metkal

Запис в стек проводиться за відносною адресою з покажчика стека SP (сегментна адреса при цьому витягується з регістра SS). Цей регістр постійно зберігає адресу наступного вільного осередку стека. При використанні стека зазвичай немає потреби стежити, по яких саме адресам відбувається запис в пам'ять і змінювати ці адреси, оскільки команди PUSH і POP автоматично модифікують значення покажчика стека. У стек можна записувати тільки словные (двобайтові) значення з регістрів або елементів пам'яті.

Завдання

Використовуючи вкладені цикли, сформувати і вивести на екран таблицю ASCII-символов з кодами у вказаному діапазоні. Для формування і виводу скористатися одним з 3-х вказаних способів:

14.формування і виведення одного символу у вкладеному циклі (використовується осередок для одного символу);

15.формування і виведення одного рядка виводу в зовнішньому циклі (використовується область пам'яті для одного рядка виводу);


 

3) формування всієї таблиці виводу в пам'яті у вкладених циклах, потім її вивід (використовується область пам'яті для всієї таблиці виводу, включаючи коди, що управляють).

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

Рекомендується розділяти символи в одному рядку пропусками для поліпшення зорового сприйняття таблиці.

Варіанти:

          Спосіб
діапазон напрям і довжина (п) фомув.
вар. код символів послідовності  
          виводу
1.   -   рядки по 15 символів  
2.   -   стовпці по 10 символів  
3.   -   рядки по 20 символів  
4.   -   рядки по 25 символів  
5.   -   стовпці по 16 символів  
б.   -   рядки по ЗО символів 3
7.   -   стовпці по 8 символів  
8.   -   рядки по 16 символів  
9.   -   стовпці по 15 символіз  
10.   -   рядки по 24 символів  
11.   -   стовпці по 12 символів  
12.   -   рядки по 28 символів  
13. ЗО -   рядки по 35 символів  
14.   -   стовпці по 20 символів  

Приклад завдання: діапазон код — 35 - 179; напрям послідовності — по стовпцях; довжина послідовності п=14 (по 14 символів в стовпці).

Перший стовпець матиме позиції для код з 2*14=28 до 3*141=41. Перший символ з кодом 35 (грати) займатиме 8-у позицію першого стовпця. Другий стовпець почнеться з коди З * 14 = 42 (зірочка); третій — з коди 4* 14 = 56 ('8') і т. д. Всього буде потрібно (179 35) /14 + 1 = 11 стовпців (орієнтовний підрахунок), причому останній стовпець буде неповним (без символів з кодами 180 і 181).


 

Результат:




Дата добавления: 2014-12-19; просмотров: 31 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав