24
2. Mikroprocesory 8086/8088
Rodzaj operacji realizowanej przez BIL' |
Rejestr segmentowy standardowy alternatywny |
Offset | |
Pobranie rozkazu |
CS |
• |
IP |
Operacja na stosie |
ss |
- |
SP |
Komunikacja ze zmiennymi |
DS |
CS.ES.SS |
adres efektywny |
Źródło łańcuchów |
DS |
CS.KS.SS |
SI |
Przeznaczenie dla łańcuchów |
ES |
- |
DI |
Operacje wykorzystujÄ…ce BP jako rejestr bazowy |
SS |
CS.DS.ES |
adres efektywny |
Adres logiczny
Rys. 2.10. Sposób obliczania adresu fizycznego
Adres efetywny wynika z wykorzystywanego trybu adresowania, co jest omówione w następnym punkcie.
Rozkazy procesorów 8086/8088 mogą być bezargumentowe, mogą też zawierać jeden lub dwa argumenty. Argumentami mogą być
Rejestry
Rozkazy działające jedynie na rejestrach są szczególnie szybkie oraz krótkie (mała liczba bajtów kodu maszynowego). Wynika to z niewielkiej liczby bitów potrzebnych do zaadresowania wybranego rejestru oraz braku komunikacji z pamięcią operacyjną. Rejestry mogą zawierać argument źródłowy - przeznaczony do przetwarzania, argument docelowy - wynik przetwarzania lub też oba z nich. Przykładem tego ostatniego przypadku może być rozkaz S
ADD AX,BX ; dodaj zawartość rejestrów AX i BX, wynik
; umieść w rejestrze AX
Argumenty bezpośrednie
Są to stałe zawarte bezpośrednio w rozkazie mikroprocesora. Mogą mieć długość bajtu lub słowa i podobnie jak w przypadku rejestrów' nie wymagają dodatkowych cykli pamięci - są bowiem pobrane do układu wykonawczego EU w' cyklu pobrania rozkazu. Argumenty bezpośrednie mogą być tylko argumentami źródłowymi o stałej wartości.
2.6. Sposoby adresowania pamięci
powered by
Mi sto!
; dodaj do akumlatora AX wartość ; szesnastkową 5555, wynik umieść w' AX
przykład
ADD AX,5555H
.CM r) C
Argumenty w pamięci operacyjnej
W tym przypadku argumenty muszą być pobierane do układu wykonawczego EU w dodatkowych cyklach pamięci. Układ sterowania magistral BIU oblicza 20-bitowy adres fizyczny argumentu na podstawie zawartości odpowiedniego rejestru segmentowego oraz adresu względem początku segmentu (offset) przygotowanego w EU i nazywanego adresem efektywnym (ang. effective address ). Adres efektywny to 16-bitowa liczba bez znaku, określająca odległość w bajtach od początku segmentu. Może on być obliczony na wiele różnych sposobów. Informacja o tym jest zakodowana w drugim bajcie rozkazu. Na rysunku 2.11 przedstawiono sposoby generowania adresu fizycznego.
Rejestr bazowy lub indeksowy
Rejestr bazowy i indeksowy
Zakodowane w rozkazie
Dodatkowo określone w rozkazie
Przyjmowane
standardowo
lub
określone przez przedrostek
Rys. 2.11. Generowanie adresu fizycznego
Adresowanie bezpośrednie
Adresowanie bezpośrednie jest najprostszą formą adresowania argumentów'. Adres efektywny jest zawarty bezpośrednio w rozkazie jako 8-bitowa lub 16-bitowa wartość Avana przemieszczeniem (ang. displacement). Adresowanie bezpośrednie jest używa-ne zazwyczaj w przypadku działania na prostych zmiennych (skalarach), kiedy jako argument występuje wyrażenie numeryczne bądź nazwa zmiennej.
15 0 15 0
19 =0
; i
Adres fizyczny