assembler�86� 5

assembler�86� 5



170


5. Rozkazy mikroprocesorów 8086/8088

Mikroprocesor 80286

W (rybie adresacji rzeczywistej mikroprocesor 80286 akceptuje wszystkie rozkazy procesora 80186. Zbiór rozkazów 80286 obejmuje również dalsze, nowe rozkazy związane z pracą w trybie adresacji wirtualnej. Większość z nich nie jest realizowalna w trybie adresacji rzeczywistej. Rozkazy inicjujące pracę w trybie adresacji wirtualnej, muszą być wykonane w trybie adresacji rzeczywistej (np. po wyzerowaniu mikroprocesora). Nowe rozkazy

ARPL - ustawienie z rejestru (pamięci) żądanego poziomu przywileju,

CTS - wyzerowanie znacznika przełączania zadań,

LAR - ładowanie z rejestru (pamięci) prawa dostępu (zob. rys. 3.4)

LGDT - ładowanie rejestru GDTR (zob. rys. 3.2),

LIDT - ładowanie rejestru IDTR (zob. rys. 3.2),

LLDT - ładowanie rejestru LDTR (zob. rys. 3.2),

LMSW - ładowanie z rejestru (pamięci) rejestru stanu MSW (zob. rys. 3.3)

LSL - ładowanie długości (ang. limit) segmentu (zob. rys. 3.4),

LTR - ładowanie rejestru zadania TR z pamięci (zob. rys. 3.2),

SGDT - zapamiętanie w pamięci zawartości rejestru GDTR,

SIDT - zapamiętanie w pamięci zawartości rejestru IDTR,

SLDT - zapamiętanie w pamięci zawartości rejestru LDTR,

SMSW - zapamiętanie w pamięci zawartości rejestru stanu MSW,

STR - zapamiętanie w pamięci zawartości rejestru zadania TR,

VERR - sprawdzenie prawa odczytu,

VERW - sprawdzenie prawa zapisu.

Spośród wymienionych powyżej rozkazów jedynie ARPL, LAR, LSL, VERR i VERW zmieniają jeden ze znaczników, a mianowicie znacznik zera ZF. W obu trybach adresowania są realizowalne rozkazy LGDT, SGDT, LIDT, SIDT, LMSW oraz SMSW. Pozostałe są dostępne jedynie w trybie adresacji wirtualnej. W związku z mechanizmami zabezpieczającymi tryb adresacji wirtualnej, (rozdz. 3.2), niektóre rozkazy zgodne z rozkazami procesorów 8086/8088 wykonują w procesorze 80286 pracującym w tym trybie znacznie więcej czynności. Przykładowo wykonanie rozkazów JMP, GALL, RET, IRET jest związane z koniecznością kontroli poziomów przywilejów programu wywołującego i wywoływanego.

Ipowered by

Mi sio!

6. Makrojęzyk asemblera MASM

Makroinstrukcje umożliwiają wykonywanie pewnych działań na tekście programu źródłowego w czasie jego tłumaczenia za pomocą asemblera. W szczególności umożliwiają zdefiniowanie nowej instrukcji, która w programie źródłowym będzie generowała ciąg rozkazów maszynowych, dyrektyw, komentarzy itp. (ogólnie wierszy programu). Definicje makroinstrukcji mogą znajdować się na początku modułu programu, mogą też być w czasie asemblacji dołączane za pomocą dyrektywy 1NCLUDE (zob. p. 4.3.3). Można wymienić następujące (dyskusyjne) zalety i wady stosowania makroinstrukcji w programie

Zalety

-    rozszerzenie możliwości języka,

-    zaoszczędzenie czasu przeznaczonego na pisanie programu,

-    większa czytelność programu źródłowego,

-    mniejsza liczba błędów (powtarzający się ciąg wierszy programu jest kodowany jednokrotnie),

-    możliwość modyfikowania postaci źródłowej i wyboru różnych wariantów (w przeciwieństwie do techniki stosowania podprogramów);

Wady

-    wydłużenie programu źródłowego (w przeciwieństwie do techniki stosowania podprogramów),

-    oddalenie się" od poziomu sprzętu (podobnie jak przy użyciu języków wysokiego poziomu),

‘ ograniczenie swobody w znajdowaniu interesujących rozwiązań programowych ze względu na logikę makroinstrukcji.

Język MASM dopuszcza następujące rodzaje makroinstrukcji nie wymagające definiowania REPT/ĘNDM, 1RP/ENDM, IRPC/ENDM wymagające zdefiniowania MACRO/ENDM

Z makroinstrukcjami są związane ponadto


Wyszukiwarka

Podobne podstrony:
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 Przykłady PUSH ZMIENNA
assembler?86? 5 130 5. Rozkazy mikroprocesorów 8086/8088 Przykłady SAR ZMIENNA, 1 SAR BAJT[BP +1],
assembler?86? 5 150 5. Rozkazy mikroprocesorów 8086/8088 RET (ang. return from procedurę) powrót z
assembler?86? 5 110 5. Rozkazy mikroprocesorów H0H6/H08S Przykład CMP ZMIENNA, AX CMP ZMIENNA[BX],
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 2 84 5. Rozkazy mikroprocesorów 8086/8088 Pośrednio przez rejestr bazowy i indeksowy
assembler?86? 3 86 5. Rozkazy mikroprocesorów 8086/8088 LES - załadowanie adresu logicznego do wsk
assembler?86? 4 88 5. Rozkazy mikroprocesorów 8086/8088 MOV ZMIENNAfSI], ES MOV X[BP + DI + 1], SS
assembler?86? 6 92    5. Rozkazy mikroprocesorów 8086/8088 Zamiana miejscami zawart
assembler?86? 9 98 5. Rozkazy mikroprocesorów 8086/8088 Pojęcie rozpakowanego i normalnego kodu BC
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 4 108 5. Rozkazy mikroprocesorów 8086/8088 Przykłady DEC SI DEC AX    
assembler?86? 7 114    5. Rozkazy mikroprocesorów 8086/8088 Mnożenie zawartości aku
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 1 122 5. Rozkazy mikroprocesorów 8086/8088 OR DX, STALA_EQU OR CL, 8   &nb
assembler?86? 2 124 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje logiczne mnożenie odpowi
assembler?86? 4 128 5. Rozkazy mikroprocesorów 8086/8088 Przesunięcie logiczne w prawo o 1 bit Ope
assembler?86? 7 134 5. Rozkazy mikroprocesorów 8086/8088 Przykłady MOVCL, 11 ROR ZMIENNA[BP], CL

więcej podobnych podstron