|
Легатом называли завещательный отказ, или безвозмездное завещательное распоряжение о выдаче наследником определенных денежных сумм или вещей определенному лицу. В своем классическом варианте легат тотчас по открытии наследства становился собственником легатария и мог быть истребован из любого владения с помощью виндикационного иска. Для того, чтобы гарантировать интересы наследника, размер легата не должен был превышать ¾ наследственной массы.
Фидеикомиссы (обращение к чести другого) – неформальные легаты, заключавшие в себе устную или письменную просьбу умирающего, дать или сделать что-либо для другого лица, не упомянутого в завещании, под честное слово.
DT (10 байт).
- Вираз може містити константу, наприклад: FLD1 DB 25,
- або знак питання для невизначеного значення, наприклад: FLDB DB?
Вираз може містити кілька констант, розділених комами й обмеженими тільки довжиною рядка:
FLD3 DB 11, 12, 13, 14, 15, 16,...
Асемблер визначає ці константи у вигляді послідовності сусідніх байт. Звертання за FLD3 вказує на першу константу 11, за FLD3+1 - на другу 12. (FLD3 можна представити як FLD3+0).
Наприклад команда MOV AL,FLD3+3 завантажує в регістр AL значення 14 (0Eh).
Вираз допускає також повторення константи в наступному форматі:
[ім’я] Dn кількість повторень DUP (вираз)...
Символьні рядки
Символьний рядок використаються для опису даних, таких як, наприклад, імена людей або заголовки сторінок. Вміст рядка виділяється одинарними лапками, наприклад, ‘PC’ або подвійними лапками - "PC". Асемблер переводить символьні рядки в об’єктний код у звичайному форматі ASCII.
Символьний рядок визначається тільки директивою DB, в якій вказується більше двох символів у нормальній послідовності зліва направо. Отже, директива DB є єдиним можливим форматом для визначення символьних даних.
Числові константи
Числові константи використаються для арифметичних величин і для aдрес пам’яті. Для опису константи лапки не ставляться. Асемблер перетворить всі числові константи в шістнадцятковий формат і записує байти в об’єктному коді в зворотної послідовності - справа наліво
Формат з рухомою комою. Числові константи з рухомою комою задаються у форматі ціла_частина.дробова_частина Е степінь. Де Е – основа системи лічби (10). Стандарт IEEE 754-2008 визначає кілька форматів представлень чисел з рухомою комою. Розглянемо 3 з них:
· одинарної точності (32 біти): біт 31 – знак мантиси, біти 30-23 – 8-ми бітна зміщена на +127 експонента (порядок), біти 22-0 – 23-бітна мантиса без першої цифри. Для представлення у 10-тковій системі лічби використовується формула: , де S–знак, E – зміщена експонента, М – нормалізована мантиса.
· подвійної точності (64 біти): біт 63 – знак мантиси, біти 62-52 – 11-ти бітна зміщена на +1023 експонента (порядок), біти 51-0 – 52-бітна мантиса без першої цифри (нормалізована мантиса). Для представлення у 10-тковій системі лічби використовується формула: , де S–знак, E – зміщена експонента, М – нормалізована мантиса.
· розширеної точності (80 біт): біт 79 – знак мантиси, біти 78-64 – 15-ти бітна зміщена на +16383 експонента (порядок), біти 63-0 – 64-бітна мантиса з першою цифрою (біт 63 рівний 1). Для представлення у 10-тковій системі лічби використовується формула: , де S–знак, E – зміщена експонента, М – мантиса.
Беззнакові й знакові дані.
Числові поля можуть трактуватися як знакові, або як беззнакові. Це контролюється при написанні програми самостійно. Для беззнакових величин всі біти є бітами даних Для знакових величин лівий біт є знаковим.
Директива визначення байта (DB)
Один байт виражається двома шістнадцятковими цифрами. Для беззнакових величин за допомогою цієї директиви можна представити числа від 0 до 255 (FFh). Для знакових даних найбільше додатне число в одному байті це 7F, всі "більші" числа від 80 до FF представляють від’ємні значення. У десятковому виразі ці межі визначаються числами +127 і -128.
Директива визначення слова (DW)
Директива DW визначає елементи, які мають довжину в одне слово (два байти).. Два байти представляються чотирма шістнадцятковими цифрами. Для беззнакових величин за допомогою цієї директиви можна представити числа від 0 до 65535 (FFh). Для знакових даних найбільше додатне шістнадцяткове число у двох байтах це 7FFF; всі "більші" числа від 8000 до FFFF представляють від’ємні значення. У десятковому форматі ці межі визначаються числами +32767 і -32768.
Символьний вираз в DW обмежений двома символами, які асемблер представляє в об’єктному коді так, що, наприклад, ‘PC’ стає ‘CP’. Для визначення символьних рядків директива DW має обмежене застосування.
Директиви визначення DD,DQ та DТ є аналогічними до DW з відповідними довжинами даних.
Директива EQU
Директива EQU не визначає елемент даних, але визначає значення, що може бути використане для підстановки в інших командах. Припустимо, що в сегменті даних закодовано наступну директиву EQU:
TIMES EQU 10
Ім’я, у цьому випадку TIMES, може бути представлено будь-яким припустимим в асемблері ім’ям. Тепер, у якій би команді або директиві не використалося слово TIMES асемблер підставить значення 10. Наприклад, асемблер перетворить директиву
FIELDA DB TIMES DUP (?)
в директиву
FIELDA DB 10 DUP (?)
Директива LABEL
Директива LABEL створює мітку, яка не займає місця в пам’яті, а просто вказує на адресу команди або дані, що слідують за нею. Має наступний формат:
мітка LABEL тип
Мітка – це назва містки, параметр тип може приймати одне з значень: BYTE (1 байт), WORD (2 байти), DWORD (4 байти), FWORD (6 байт), QWORD (8 байт), TBYTE (10 байт), NEAR (ближня мітка), FAR (дальня мітка). Мітка отримує значення рівне зміщенню в сегменті адрес наступної за нею команди або зміщенню в сегменті даних наступного за нею операнду і тип вказаний явно. За допомогою міток з різними типами зручно організовувати доступ до одних і тих самих даних, що інтерпретуватимуться по різному в залежності від типу мітки. Наприклад, як байти чи як слова. Або здійснювати ближні чи дальні перерходи.
Вирівнювання сегментів
Оголошення сегменту має наступну структуру:
ім’я_сегменту segment readonly вирівнювання тип розрядність ’клас’
.....
ім’я_сегменту ends
П’ять операндів директиви segment, що відображені курсивом є необов’язковими. Для того, щоб задати вирівнювання сегментів в адресному просторі необхідно задати параметру вирівнювання одне з значень:
· BYTE – адреса сегменту може починатися з будь-якої адреси;
· WORD – адреса сегменту може починатися з парної адреси;
· DWORD – адреса сегменту може починатися з адреси, кратної 4;
· PARA – адреса сегменту може починатися з адреси, кратної 16 (границя параграфа);
· PAGE – адреса сегменту може починатися з адреси, кратної 256 (границя сторінки).
По замовчуванню вирівнювання відбувається по границі параграфу.
Задавши ’клас’ сегменту можна забезпечити послідовне розташування сегментів у пам’яті. Клас сегменту – це будь-яка мітка, що розташована в лапках. Всі сегменти з однаковим класом розташовуються в пам’яті один за одним.
АРИФМЕТИЧНІ ОПЕРАЦІЇ
Арифметичні операції в Асемблері
Для виконання даної роботи слід розглянути наступні команди арифметики: ADD ADC INC SUB SBB DEC CMP NEG MUL DIV
Команди ADD і SUB виконують додавання й віднімання байтів або слів, що містять двійкові дані. Віднімання виконується у комп’ютері по методу додавання із двійковим доповненням: для другого операнда встановлюються зворотні значення бітів і додається 1, а потім відбувається додавання з першим операндом. У всьому, крім першого кроку, операції додавання й віднімання ідентичні. Можливі п’ять ситуацій:
ADD / SUB регістр-регістр;
ADD / SUB пам'ять-регістр;
ADD / SUB регістр-пам'ять;
ADD / SUB регістр-безпосереднє значення;
Дата добавления: 2014-12-19; просмотров: 71 | Поможем написать вашу работу | Нарушение авторских прав |