Мова програмування Assembler

Методическое пособие - Компьютеры, программирование

Другие методички по предмету Компьютеры, программирование

?оманди: ADC, ADD, SBB, SUB.

Команди зрушення: RCL, RCR, ROL, ROR, SHL, SAR, SHR.

Логічні команди: AND, OR, TEST, XOR.

У наступних лекціях будуть пояснені команди арифметичного переносу, зрушення і логічні команди. Оскільки зараз дані приклади не призначені для виконання, у них опущене визначення стека й ініціалізація сегментних регістрів. Для створення елементів, довше ніж два байти, можна використовувати цикл чи строкові команди.

ДИРЕКТИВА EQU

Директива EQU не визначає елемент даних, але визначає значення, що може бути використане для постановки в інших командах. Припустимо, що в сегменті даних закодовано наступна директиву EQU:

 

TIMES EQU 10

 

Імя, у даному випадку TIMES, може бути представлено будь-яким припустимим в асемблері імям. Тепер, в якій-би команді чи директиві не використовувалося слово TIMES асемблер підставить значення 10. Наприклад, асемблер перетворить директиву - FIELDA DB TIMES DUP (?) у FIELDA DB 10 DUP (?).

Імя, звязане з деяким значенням за допомогою директиви EQU, може використовуватися в командах, наприклад:

 

COUNTR EQU 05

MOV CX,COUNTR

 

Асемблер заміняє імя COUNTR у команді MOV на значення 05, створюючи операнд із безпосереднім значенням, так, нібито він закодований.

 

MOV CX,05; Асемблер підставляє 05

 

Тут перевага директиви EQU полягає в тому, що багато команд можуть використовувати значення, визначене по імені COUNTR. Якщо це значення повинне бути змінене, то зміні підлягає лише одна директива EQU. Природньо, що використання директиви EQU розумне лише там, де підстановка має сенс для асемблера. У директиві EQU можна використо- вувати символічні імена:

1. TP EQU TOTALPAY

2. MPY EQU MUL

Перший приклад припускає, що в сегменті даної програми визначено імя TOTALPAY. Для будь-якої команди, що містить операнд TP, асемблер замінить його на адресу TOTALPAY. Другий приклад показує можливість використання в програмі слова MPY замість звичайного мнемокоду MUL.

 

Лекція 6 Транслятори мови Assembler

 

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

TASM

то на екран виведеться довідкова інформація, (на англійській мові) яка описує безліч параметрів командного рядка і синтаксис для специфікації асемблюваних файлів. На Рис. 3.1 показано, як вона виглядає.

Turbo Assembler Version 2.0 Copyright (C) 1990

by Borland International, Inc

Usage:

TASM [параметри] исх_файл [,обєкт_файл] [,лістинг] [,пер_посилання]

/a,/s Упорядкованість сегментів за алфавітним порядком чи порядку вихідного коду /c Генерація в лістингу перехресних посилань

/dSYM[=VAL] Визначається SYM = 0 чи SYM = VAL

/e,/r Эмулируемые чи дійсні інструкції з плавающей крапкою

/h,/? Виводиться дана довідкова інформація

/lPATH файли, що включаються, шукаються по маршруті, обумовленому PATH

/jCMD Визначає початкову директиву Асемблера (напримір, jIDEAL)

/kh#,/ks# Потужність хеш-таблицы #, потужність обсягу рядка #

/l,/la Генерація лістинга: l=звичайний лістинг, la=розширенаный

/ml,/mx,/mu Розрізнення в регістрі букв ідентифікаторів: ml=усі, mx=глобальні, mu=не розрізняються

/mv# Задає максимальну довжину ідентифікаторів

/m# Дозволяє виконання декількох проходів для зодоволення випереджальних посилань

/n Придушення в лістингах таблиці символів (ідентифікаторів)

/p Перевірка перекриття сегмента коду в захищеному режимі

/q Придушення записів .OBJ, що не вимагаються при компоновке

/t Придушення повідомлень при успішному асемблировании

/w0,/w1,/w2 Завдання рівня попередження: w0=немає попереджень, w1=w2=є попередження

/w-xxx,/w+xxx чи Заборона дозвіл попередження типу xxx

/x Включення в лістинги блоків умовного асемблирования

/zi,/zd Інформація про ідентифікатори для налагодження: zi=підлоганая, zd=тільки про номери рядків.

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

Загальний вид командного рядка виглядає в такий спосіб:

 

TASM файли [; файли]...

 

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

 

TASM /E FILE1; /A FILE2

 

У загальному випадку група файлів у командному рядку може мати вигляд:

 

[параметр]...исх_файл [[+] вихідний_файл]...

[,[обєктний_файл] [, [файл_лістинга],

[, [файл_перехресних_посилань]]

 

Цей синтаксис показує, що група файлів може починатися з будь-якого параметра, що ви хочете застосувати до цих файлів а потім можуть випливати файли, що ви хочете асемблировать. Імям файлу може бути одне імя файлу, або ви можете використовувати звичайні трафаретні символи DOS * і ? для завдання групи ассемблируемых файлів. Якщо розширення імені файлу не зазначено, Турбо Асемблер використовує за замовчуванням розширення ".ASM".

 

TASM MYFILE,,,MYXREF

 

По цій команді файл MYFILE.ASM асемблируется у файл MYFILE.OBJ, лістинг виводиться у файл з імям MYFILE.LST, а перекрестные посилання - у файл MYXREF.XRF.

Якщо при специфікації асемблируемых вихідних файлів ви используете трафаретні символи, їх можна використовувати також для завдання імен файлу лістинга й обєктного файлу. Наприклад, якщо в поточному каталозі містяться файли XX1.ASM і XX2.ASM, то командний рядок:

 

TASM XX*,YY*

 

асемблює усі файли, що починаються з букв XX, генерує обєктні файли, імена ?/p>