Основи роботи в internet



бет47/54
Дата18.09.2022
өлшемі3,18 Mb.
#149849
түріЛабораторна робота
1   ...   43   44   45   46   47   48   49   50   ...   54
Байланысты:
Архітектура ПК - Крупельницький (практикум)

Синтаксис Асемблера


Програма мовою Асемблер є послідовністю операторів, що описують виконувані дії. Оператором (рядком) початкової програми може бути або команда, або псевдооператор (директива) Асемблера.


Команди – це, насправді, (запис) системи команд. У деякому керівництві вони називаються машинними командами, оскільки саме вони повідомляють процесор, які дії необхідно виконувати. На відміну від команд псевдооператори повідомляють транслятору, що йому робити з командами і даними, які вводяться в програму.
Команда може містити до 4-х полів такого вигляду: [мітка:] мнемокод [операнд] [; коментарій].
Приклад команди з усіма полями:
exit: MOV CX, DX ; помістити вміст регістра DX в регістр CX.
Оскільки в [ ] вказуються необов’язкові поля, отже, команда обов’язково має містити мнемокод виконуваної дії. Поля можуть набиратися у будь-якому місці рядка, але відділяйте поля один від одного хоч би одним пропуском і, якщо з часом хочете розібратися у своїй програмі, потурбуйтеся про читабельність, що найчастіше забезпечується за рахунок позиціонування полів.
Мітка, команда та операнд відокремлюються один від одного символом пропуску або табуляції, коментар починається від символа «;» і до кінця рядка. Коментар не належить до машиного коду і ігнорується транслятором. Мітка може містити: літери латинської абетки, цифри (не можуть бути першим символом), спеціальні символи: ? @ _ $. Мітки використовують, в основному, для команд передачі керування і вони не є обов’язковими.
Мова Асемблер може містити змінні, які визначаються за допомогою директив: DB – визначає байт, DW – слово, DD – подвійне слово.
Вимоги до імені змінної такі ж, як і для мітки. Значення може бути: числовим (14, 4Вh, 1000112b), декілька чисел, рядковим («рядок») та масивом, елементи якого розділяються комою, оператор «?» (який задає невизначену змінну) та DUP (дублювання даних вказану кількість раз). Змінна являє собою область пам’яті, яка помічена певним ім’ям. Зазвичай всі змінні розміщують в сегменті даних (табл. 4.2).

Таблиця 4.2 – Вимоги до імені змінної



text_string

db

‘Dobrogo dnya!’

; задавання рядку символів

number

dw

7

; number розміром 2 байти та значенням 7

tab

db

1,2,3,4,5,6,7,8,9

; визначення табличних даних (масиву)

null

db

?

; задавання невизначеної змінної

table_512

dw

512 dup(0)

; масив з 512 слів, заповнених нулями.

mas

db

8 dup (‘a’, ‘b’)

; масив: 8 разів повторюється ‘ab’

Як операнд в команді може фігурувати константа, яка може вводитися в наведених нижче формах:



  • двійкова, як послідовність цифр 0 і 1, що закінчуються буквою В, наприклад, 10111010В;

  • десяткова, в звичній десятковій системі числення з необов’язковою буквою D на кінці, наприклад, 129d або просто 129;

  • шістнадцяткова, як послідовність цифр від 0 до 9 і букв від A до F, що закінчується буквою H. Якщо шістнадцяткова константа розпочинається з букви, то така константа доповнюється першим символом – цифрою від 0 до 9, наприклад, 0Е23h (в даному випадку перша цифра інформує Асемблер про те, що Е23 число, а не ідентифікатор або змінна);

  • літерал, у вигляді рядка букв, цифр і інших символів, поміщеного в лапки або апострофи.

Мнемокоди можуть мати від 2 до 6 букв, при трансляції мнемокод перетвориться в числове значення за тією таблицею, що перекодувала (усередині транслятора). Мнемокоди мають жорсткий формат, що передбачає 1, 2 або відсутність операндів. Якщо операндів 2, вони відділяються один від одного комою.
Не можна використовувати як мітки імена регістрів і мнемокоди, крім того мітка має починатися з букви, але може містити цифри і спеціальні символи : ?, @, /, _, $, також точку, проте точка може бути тільки першим символом мітки.
Важливою особливістю машинних команд є те, що вони не можуть маніпулювати одночасно 2-ма операндами, що знаходяться в оперативній пам’яті (ОЗП). Це означає, що в команді тільки 1 операнд може вказувати на осередок ОЗП, інший операнд має бути або регістром, або безпосереднім значенням. З цієї причини можливі такі поєднання операндів в команді:
регістр – регістр; регістр – пам’ять; пам’ять – регістр;
регістр – безпосередній операнд; пам’ять – безпосередній операнд; сегментний регістр – регістр.
Для команд характерно, що за наявності двох операндів перший з них є приймачем, а другий – джерелом. Результат операції зберігається за першою адресою, ось чому перший операнд ніколи не може бути безпосереднім операндом або, інакше кажучи, константою.
Команда MOV – команда пересилання даних. Команда записується таким чином:
MOV приймач, джерело
Дія: копіює вміст джерела в приймач, джерело не змінюється.
Приймач може бути регістром, пам’ятью. Джерело – регістром, пам’ятью, безпосереднім значенням.
MOV AX, 7 ; в регістр AX буде занесене число 7.
MOV AX, ABC ; в регістр AX буде занесене значення за адресою АВС.
MOV АВС, 82 ; за адресою АВС буде занесене число 82. MOV DS, BX ; регістр DS матиме значення регістра BX.
Стек – це структура пам’яті, яка використовується для тимчасового зберігання інформації. Програма може помістити дані в стек (PUSH) або забрати їх звідти (POP). Наприклад:
PUSH AX ; у стек розмістити вміст регістра АХ; PUSH abc ; у стек розмістити значення змінної abc; PUSH 1234h ; у стек розмістити число 1234h;
POP BX ; значення зі стека розмістити у ВХ;
POP [1234h] ; значення зі стека розмістити за адресою 1234h; POP qwerty ; значення зі стека розмістити у змінну qwerty.

При наборі програм мовою Асемблер дотримуйтеся таких правил:



  1. директиви набирайте великими літерами, інструкції – малими;

  2. пишіть текст широко – не скупіться;

  3. не виходьте за край екрана, тобто не робіть текст ширше 80 знаків –

його незручно буде редагувати і друкувати;

  1. для відступів користуйтеся табуляцією (клавіша TAB);

  2. блоки коментарів задавайте з однаковим відступом. Оптимальним вважається такий рядок:

Mov ax, <пропуск> bx <(1-3) TAB>; <пропуск> текст коментаря
Кількість табуляцій перед коментарем визначається довжиною аргументів команди і може бути від 1 до 3. Після знайомства з синтаксисом мови будуть наводитися додаткові правила.




    1. Достарыңызбен бөлісу:
1   ...   43   44   45   46   47   48   49   50   ...   54




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет