assembler86 8

assembler86 8



116


5. Rozkazy mikroprocesorów 8086088

IDIV (ang. integer divide byte or word )

dzielenie argumentów całkowitych ze znakiem    _

Operacja: {w = 0 => (dzielna: = AX; dzielnik: = arg bajt; max: = 7FH)    ł

elsc (dzielna: = DXoAX; dzielnik: = arg_slowo; max: =7FFFH)};    1

next ((dziel na/dzielnik > = 0 A dzielna/dziclnik > max) V (dzielna/dzielnik < 0 A dzielna/dzielnik < 0-max-l)) => INTO

elsc (w = 0=> AX/dzielnik; AH«-AX mod dzielnik    1

clse AX<—DXoAX/dziclnik; DX«-DXoAX mod dzielnik)

Znaczniki: OF DFIF TF SF ZF AF PF CF    1

9.    .    .    99999

• • • • • •

Rozkaz realizuje dzielenie argumentów całkowitych ze znakiem. Możliwe argumenty rozkazu określono w tabl. 5.0. Jeżeli wynik dzielenia zniszczy bil znaku (nastąpi przepełnienie), to jest generowane przerwanie INT 0. Dla znaków obowiązują przy tym reguły podane w tabl. 5.10.


Tablica 5.10. Znaki argumentów i wyniku dla rozkazu IDIV Dzielna    Dzielnik    Iloraz    Reszta

+    +    +    +

+    -    -    +

+

+

Możliwe opcje

Dzielenie zawartości akumulatora przez rejestr (ze znakiem) 1111 Oliw 11111 reg

Liczba taktów dla w = 0 - 101...112, dla w = 1 - 165... 184.

Przykłady

MOVAX, ZMIENNA SŁOWO


IDIV BL

• • •

MOV AL, ZMIENNA BAJT

CBW

IDIYCL


; iloraz w AL, reszta w AH

; dzielenie bajtu przez bajt ; konwersja bajt-słowo ; iloraz w AL, reszta w AH


Dzielenie zawartości akumulatora przez argument w pamięci (ze znakiem)

1111 Oliw mod 111 r/m addr low addr high

Liczba taktów dla w = 0 - 107... 118 4* takty do obliczenia adresu efektywnego, dla w = 1 - 171... 190 + takty na obliczenie adresu efektywnego.

Przykłady

MOV DX, STARSZA CZESC

5.3. Rozkazy operacji arytmetycznych i logicznych


MOV AX, M LODSZA CZESC

DI V BX    ; iloraz w AX, reszla w DX    4

ĄĄD (ang. ASCII adjust for division )

poprawka przed dzieleniem w rozpakowanym kodzie BCD    _

Operacja: AL <— AL + AH * 10; AH <— 0 Znaczniki: OF DFIF TF SF ZF AF PF CF ?    -    -    - x x ? x ?

Rozkaz umożliwia wprowadzenie poprawki przed dwójkowym dzieleniem dwóch argumentów w rozpakowanym kodzie BCD. Iloraz uzyskany w wyniku dzielenia jest wyrażony także w rozpakowanym kodzie BC D. Wprowadzenie poprawki polega na dodaniu do rejestru AL zawartości rejestru AH, pomnożonej przez 10, a następnie

wyzerowanie rejestru AH.

| uoi 0101 00001010

Liczba taktów - 60.

Przykład

MOV AH, 3 ;

AH

AL

M()V AL, 1 ;

3 0000 0011

1

0000 0001

AAD ; MOV BL, 8

0000 0000

31

(XXII 1111

DIV BL ;

7 0000 0111

3

0000 0011

1

(reszta)

(iloraz)

CBW (ang. convert byle to word ) zamiana bajtu na słowo

Operacja: AL< 7> = 1 => (AH «- OFFH else AH «-0)

Znaczniki: bez zmian

Rozkaz zamienia liczbę 8-bitową ze znakiem zawarlą w rejestrze AL na liczbę 16-bitową ze znakiem w AX. Konwersja sprowadza się do załadowania odpowiednio wartości OH lub OFFH do rejestru AH, w zależności od tego, czy liczba w rejestrze AL była dodatnia czy ujemna.

UX)11000

Liczba taktów - 2.

Przykłady

AH    AL

MOV AL, 59H CBW


???? ????    0101 1001

0000 0000    0101 1001


Wyszukiwarka

Podobne podstrony:
assembler?86? 8 156 5. Rozkazy mikroprocesorów 8086/8088 JNC (ang.jump if no carry ) skok względny
assembler?86? 8 136 5. Rozkazy mikroprocesorów 8086/8088 Rozkaz realizuje przesunięcie cykliczne w
assembler?86? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 Przykłady PUSH ZMIENNA
assembler?86? 1 82 5. Rozkazy mikroprocesorów 8086/8088 kod rozkazu (ang. opcode ) - definiuje ope
assembler?86? 3 106 5. Rozkazy1 mikroprocesorów 8086/8088 SBB (ang. subtract byle or word with bor
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 1 142 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, STD ; DF«-1 SCASB JE STOP CM
assembler?86? 5 150 5. Rozkazy mikroprocesorów 8086/8088 RET (ang. return from procedurę) powrót z
assembler?86? 3 166 5. Rozkazy mikroprocesorów 8086/8088 STI (ang. set intemipt enable flag) ustaw
assembler?86? 2 164    5. Rozkazy mikroprocesorów 80S6/8088 STD - ustawienie znaczn
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? 0 100 5. Rozkazy mikroprocesorów 8086/80X8 ADD SI, 0F0D2H ADD BL, 1   &nbs
assembler?86? 1 102 5. Rozkazy mikroprocesorów 808618088 Operacja: argument <- argument + 1 Zna
assembler?86? 2 104 5. Rozkazy mikroprocesorów 8086/8088 Przykłady 104 5. Rozkazy mikroprocesorów

więcej podobnych podstron