|
|||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
MP Безумовний перехід
Команда jmp передає управління у вказану крапку того ж або іншого програмного
сегменту. Адреса повернення не зберігається. Команда не впливає на прапори процесора.
Приклади прямого короткого переходу 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 Завантаження прапорів в регістр АН
Приклад 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 еквівалентна наступній групі команд:
Як перший операнд команди 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 Приклад 3
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
|
|
|||||||||||||||||||||||||||||||||||||||||||||
|