|
Команди асемблера для Intel: MP, LAHF, 386р+ LAR, LDS, LEA,
ADO в Delphi AJAX Android C++ CakePHP CMS COM CSS Delphi Flash Flex HTML Internet Java JavaScript MySQL PHP RIA SCORM Silverlight SQL UML XML Бази даних Веб-розробка Генетичні алгоритми ГІС Гітара Дизайн Економіка Інтелектуальні СДН Колір Масаж Математика Медицина Музика Нечітка логіка ООП Патерни Подання знань Розкрутка сайту, SEO САПР Сесії в PHP Системне програмування Системний аналіз Тестологія Тестування ПЗ Фреймворки Штучний інтелект
|
Команди асемблера для Intel: MP, LAHF, 386р+ LAR, LDS, LEA,
MP Безумовний перехідКоманда jmp передає управління у вказану крапку того ж або іншого програмного сегменту. Адреса повернення не зберігається. Команда не впливає на прапори процесора. Команда jmp має п'ять різновидів:
Всі різновиди переходів мають одну і ту ж мнемоніку jmp, коди операцій, що хоча і розрізняються. У багатьох випадках транслятор може визначити вид переходу по контексту, в тих же випадках, коли це неможливо, слід використовувати атрибутних операторів:
short - прямий короткий перехід;
near ptr - прямий ближній перехід;
far ptr - прямий дальній перехід;
word ptr - непрямий ближній перехід;
dword ptr - непрямий дальній перехід.
Приклади прямого короткого переходу jmp short shpt ;Переход на мітку shpt ;у межах +127...-128 байтів jmp shpt ;To же саме, якщо shpt ;знаходиться вищим по тексту програми Приклади прямого ближнього переходу jmp pt ;Переход на мітку pt ;в межах поточного сегменту jmp near ptr pt ;To же саме Приклади непрямих ближніх переходів
mov Bx,offset pt ;ВХ=адрес точки переходу jmp BX ;Переход у точку pt Приклад 2 ;У полях даних: addr dw pt ;Ячейка з адресою точки переходу ;У програмному сегменті: jmp Ds:addr ;Переход у точку pt jmp word ptr addr ;To же саме Приклад 3 ; У полях даних: addr dw pt ;Ячейка з адресою точки переходу ;У програмному сегменті: mov Di,offset addr ;В1=адрес осередки з адресою ;точки переходу jmp [DI] ;Переход у точку pt Приклад 4 ;У полях даних: tbl dw ptl ;Ячейка з адресою 1 dw pt2 ;Ячейка з адресою 2 dw pt3 ;Ячейка з адресою 3 ;У програмному сегменті: mov Bx,offset tbl ;BX=aflpec таблиці адрес переходів mov SI, 4 ;31=смещение до адреси pt3 call [BX][SI] ;Переход у точку pt3 Приклади прямих дальніх переходів jmp far ptr farpt ;Переход на мітку farpt в ;іншому програмному сегменті jmp farpt ;Переход на мітку farpt в іншому ;програмному сегменті, якщо farpt ;объявлена дальньою міткою ;директивою farpt label far Приклади непрямих дальніх переходів Приклад 1 ; У полях даних: addr dd pt ;Поле з двухсловним ;адресою точки переходу ;В програмному сегменті: jmp Ds:addr ;Переход у точку pt jmp dword ptr addr ;To же саме Приклад 2 ; У полях даних: addr dd pt ;Поле з двухсловним ;адресою точки переходу ;В програмному сегменті: mov Di,offset addr ;DI =адрес поля з адресою ;точки переходу jmp [DI] ;Переход у точку pt
LAHF Завантаження прапорів в регістр АН
Команда lahf (спільно з командою sahf) дає можливість читати і змінювати значення прапорів процесора, зокрема прапорів SF, ZF, AF і PF, які не можна змінити безпосередньо. Проте слід мати на увазі, що команда lahf переносить в АН тільки молодший байт регістра прапорів. Тому не можна змінити з її допомогою, наприклад, стан прапора OF. Приклад 1 lahf ;Регистр АН відображає ;стан регістра прапорів or Ah,80h ;Установка бита 7 = SF sahf ;Загрузка АН в регістр ;прапорів, де тепер SF = 1 Приклад 2 lahf ;Регистр АН відображає ;стан регістра прапорів and Ah,0bfh ;Сброс бита 6 = ZF sahf ;Загрузка АН в регістр ;прапорів, де тепер ZF = О 386р+ LAR Завантаження прав доступу
LDS Завантаження покажчика з використанням регістра DS
Ids reg, mem еквівалентна наступній групі команд: mov reg,word ptr mem mov Ds,word ptr mem+2 Як перший операнд команди Ids указується регістр загального призначення; як другий - елемент пам'яті з двухсловним вмістом. Покажчик, що міститься в цьому осередку, може бути адресою як процедури, так і поля даних. Команда не впливає на прапори процесора. Приклад 1 ; У полях даних: addr dd myproc ;Двухсловный адреса процедури ;myproc ;В програмному сегменті: Ids Si,addr ;DS:SI -> myproc Приклад 2 ; У полях даних: mem dw 25 ;Ячейка пам'яті з ; довільним вмістом addr dd myproc ;Двухсловный адреса цій ;осередки ;В програмному сегменті: mov Bx,offset addr ;ВХ=адрес осередки addr Ids DX [BX] ;DХ=смещение осередки mem ;Ds=сегментний адреса осередку ;mem
; У полях даних: dptr dd procl ;Полный адреса процедури ; р грам про з 1 dd proc2 ;Полный адреса процедури ;ргос2 dd ргосз ;Полный адреса процедури ; р грам про з 3 ;В програмному сегменті: mov SI, 8 ; Зсув до адреси ргосз Ids Di,dptr[SI];DS:DI ® ргосз
LEA Завантаження виконавської адреси
lea reg,mem еквівалентна команді mov reg,offset mem але у першої команди більше можливостей опису адреси осередку, що цікавить нас. Команда не впливає на прапори процесора. Приклад 1 ; У полях даних: message db ; 'Йдуть вимірювання' ;У програмному сегменті: lea Si,message ;DS:SI -> message Приклад 2 ; У полях даних: nmb db '0123456789' ;В програмному сегменті: mov Si,7 ;Смещение символу '7' lea Dx,nmb[SI];ВХ=адрес символу '7' Приклад 3 ; У полях даних: nmb db '0123456789' ;В програмному сегменті: mov BX, off set msg mov SI, 9 ;Смещение символу '9' lea SI [BX] [SI] ;31=адрес символу '9'
Зверніть увагу на додаткові посиланняГоловний розділСторінки, близькі за змістомзагрузка...
|
Сторінки, близькі за змістом ![]() Асемблер (англ. assembler) — загальноприйнята назва транслятора з автокоду. Асемблер переводить початкову програму, написану на автокоді, в переміщувану програму на мові машинній. Оскільки асемблер здійснює трансляцію на мову завантажувача, при завантаженні програми необхідна налаштування умовних адрес, тобто адрес, значення яких залежать від розташування даної програми в пам'яті ЦВМ і від її зв'язків з іншими незалежно трансльованими програмами. |
|
Copyright © 2008—2026 Портал Знань.
При використанні матеріалів посилання, для інтернет-ресурсів — гіперпосилання, на Znannya.org обов'язкове.
Зв'язок
|
НТУУ "КПІ" Інженерія програмного забезпечення КПІ Лабораторія СЕТ |
|