Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






ВВЕДЕННЯ І ВИВЕДЕННЯ




Будь яка програма потребує засобів вводу і виводу. Команди Асемблера можуть це зробити єдиним способом – реалізувати переривання операційної системи або BIOS. В прикладі Розділу 4.1 було показано як виводити, наприклад, рядок. Проте ввведення і виведення чисел для програми Асемблера являє собою певну проблему. Причина в тому, що процесор не працює з числом чи символом –він працює з кодом числа або символа.

Команди Асемблера можуть використовувати як символьні константи так числові константи.

Найлегше користуватися десятковими значеннями (тобто з основою 10), оскільки ми звикли до них в повсякденному житті. Ясно, найпростіше ввести:

mov cx, 100; встановити лічильник в значення 100

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

Тоді логічно використовувати в програмах на Асемблері двійкове представлення. Ви можете вказати Турбо Асемблеру, що число виражене в двійковому виді, якщо просто помістите у кінці числа букву b (звичайно, при цьому число повинне складатися тільки з 0 і 1, оскільки це єдині дві цифри, допустимі в двійковому представленні). Наприклад, десяткове значення 5 двійковому виді, буде 101b.
Наприклад, перепишемо інструкцію з операндами в двійковому представленні

 

mov cx, 1100100b; встановити лічильник
; значення 100
Шістнадцяткові числа позначаються суфіксом h. Крім того, шістнадцяткові числа повинні починатися з однією з цифр 0-9, оскільки шістнадцяткове число типу BAD4h може помилково інтерпретуватися, як мітка. Наведемо приклад, до якому використовується як число 0BAD4h, так і мітка BAD4h:
.
.
.
.DATA
BAD4h DW 0; мітка BAD4h
.
.
.
.CODE
mov ax, 0BAD4h; завантажити в AX
; шістнадцяткову константу (перший 0 показує, що це константа)
.
.
.
mov ax, BAD4h; завантажити в AX із змінної в пам'яті
; BAD4h (відсутність 0 в першому символі показує, що це мітка

 

Щоб показати, що число є десятковим, в ролі суфікса можна використовувати букву d. Навіщо ж потрібний цей суфікс, якщо за умовчанням Турбо Асемблер і так припускає, що усі числа є десятковими? Як ви можете здогадатися, відповідь полягає в тому, що числа окрім десяткового можуть мати і інші представлення. Двійкові значення розміром в слово і подвійне слово ще важче читати і використовувати.

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

Директиви визначення даних DS, DW, DD, DF, DP, DQ і DT
дозволяють вам визначити змінні в пам'яті різного типу:

 

DВ 1 байт

DW 2 байта = 1 слово

DD 4 байта = 1 подвійне слово

DF, DP 6 байт = 1 вказівник дальнього типу (386)

DQ 8 байт = одно четвірне слово

DT 10 байт

 

Наприклад:

 

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

.DATA

ByteVar DB 'Z'; 1 байт

WordVar DW 101b; 2 байта (1 слово)

DwordVar DD 2BFh; 4 байта (1 подвійне слово)

QWordVar DQ 307o; 8 байт (1 четвірне слово)

TWordVar DT 100; 10 байт

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

 

Далі глянемо ще фрагмети коду

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

mov ah,2; функція DOS виводу на дисплей

mov dl,[ByteVar]; символ, який потрібно вивести на экран

int 21h

.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

 

add ax,[WordVar]

.

.

.

add WORD PTR [DwordVar],ax

adc WORD PTR [DwordVar+2],dx

.

.

.

 

Тут визначено, надано значення і використано п’ять змінних в пам’яті і далі у фрагментах коду показано, як деякі з них можна використати. Зокрема показано як на дисплей виводиться символ. Це досить просто. Набагато складніше ввести і вивести число. Власне вивести і вивести число від 0 до 9 можна, а всі інші так просто ні. Відтак доведеться використовувати допоміжні засоби. Таким засобом є модуль ІО.ASM. Цей модуль приведено в книзі В.Н.ПИЛЬЩИКОВА «Ассемблер».






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных