assembler86 6

assembler86 6



112 5. Rozkazy mikroprocesorów 808618088

0010

‘ 1111 |

Liczba taktów - 4.

Przykłady

AL

MOV AL, 12

12

0001 0010

SUB AL, 5

-5

0000 0101

(XXX) 1101 A < 3:0 > >9

DAS

-6

00000110

= 7

0000 0111 AL<9FH A CF = 0

MOV AL, 51H

51H

01010001

SUB AL, 8

-8

0000 1000

=

0100 1001 AF = 1

DAS

-6

00000110

0100 0011 AL <9FH A CF = 0

MOV AL, 6

6

0000 0110

SUB AL, 8

-8

(XXX) 1000

=

1111 1110A<3:0> >9

DAS

-6

(XXX) 0110

1111 1000 AL>9FH

-60H

0110 0000

= 98H

1001 1000

bo 106-8

= 98!

5J3.

Mnożenie

MUL (ang. multiply byle or word unsigned)    1

mnożenie bajtów lub słów bez znaku

Operacja: w = 0 => (AX<-AL‘prawy_argument else DXoAX<-AX*prawy_argume-nt); next (w = 0 a AH = 0 v w = 1 a DX = 0) => (CF = 0; OF = 0) elsc (CF = 1; OF = 1)

Znaczniki: OF DF IF TF SF ZF AF PF CF    1

x ---???? x    Ł\

Rozkaz realizuje mnożenie dwóch argumentów (z których lewy jest akumulatorem) bez znaku, będących bajtami lub słowami. Prawy argument może być rejestrem lub argumentem w pamięci operacyjnej. Jeżeli jednym z czynników jest rejestr AL, to drugi argument musi być bajtem, wynik zaś zostaje umieszczony w AX. Z kolei jeśli jednym z czynników jest AX, to drugi musi być słowem, a wynik mnożenia jest umieszczony w podwójnym rejestrze DXoAX. Jeżeli starsza część wyniku jest równa zero, to znaczniki CF i OF zostają wyzerowane. W przeciwnym wypadku przyjmują wartość równą 1.

Mnożenie akumulatora przez rejestr (bez znaku)

1111 Oliw    11100 reg |

Liczba taktów dla w = O - 70...77, dla w = 1 - 118... 133.

Przykłady

M()V AL, ZMIENNA BAJT MUL CL    ;wynikwAX

MOV AX, ZMIENNASLOWO MUL BX    ; wynik w DXoAX

• • •

MOV AL, ZMIENNABAJT MOV AH, 0

MUL SI    ; wynik w DXoAX    Ą

Mnożenie akumulatora przez argument w pamięci (bez znaku)

1111 Oliw    modlOOr/m addrjow    addr high

Liczba taktów dla w = 0 - 7Ó...83 + takty do obliczenia adresu efektywnego,dla w = 1 -124... 139 + takty do obliczenia adresu efektywnego.

Przykład

MOV AX, ZMIENNA SLOWO l

MUL ZMIENNA SŁOWO 2[DI]    ; wynik w DXoAX    +

IMUL (ang. integer mullipty byte or word) mnożenie całkowite bajtów lub słów ze znakiem

Operacja: w = 0 => (AX<-AL*prawy_argument_bajt else DXoAX«-AX*prawy argu-mcntslowo); nexl (częśćstarszawyniku = przenicsienie znakowc części młodszej) =* (CF = 0; OF = 0) else (CF = 1; OF = 1)    ^

Znaczniki: OF DFIF TF SF ZF AF PF CF

x ---???? x

Rozkaz realizuje mnożenie dwóch argumentów całkowitych ze znakiem (lewy argument jest akumulatorem), będących bajtami lub słowami. Prawy argument może być rejestrem lub argumentem w pamięci operacyjnej. Jeżeli jednym z czynników jest rejestr AL, to drugi argument musi być bajtem, wynik zaś zostaje umieszczony w AX. Jeśli jednym z czynników jest AX, to drugi musi być słowem, a wynik mnożenia jest ^mieszczony w podwójnym rejestrze DXoAX. Jeżeli bardziej znacząca część wyniku jest równa przeniesieniu znakowemu części mniej znaczącej, to znaczniki CF i OF zo-s*ają wyzerowane. W przeciwnym wypadku przyjmują wartość 1. Stan znaczników ŁF = 1 i OF=l świadczy o tym, że AH lub DX zawiera znaczącą cyfrę wyniku. Możliwe opcje


Wyszukiwarka

Podobne podstrony:
assembler?86? 6 92    5. Rozkazy mikroprocesorów 8086/8088 Zamiana miejscami zawart
assembler?86? 1 102 5. Rozkazy mikroprocesorów 808618088 Operacja: argument <- argument + 1 Zna
assembler?86? 3 126    5. Rozkazy mikroprocesorów 808618088 SHL DX, 1 SHL DI, 1 Arg
assembler?86? 6 132 5. Rozkazy mikroprocesorów 8086/8088Przykład y MOV CL, 12 ROL BX, CL ROL
assembler?86? 6 152 5. Rozkazy mikroprocesorów 8086/8088 next SP+-SP + datahighodatalow
assembler?86? 7 154 5. Rozkazy mikroprocesorów 808618088 Wskaźniki: bez zmian Jeżeli wskaźnik ZF =
assembler?86? 4 168 5. Rozkazy mikroprocesorów 808618088 przy czym .ca* - 3 bity nie dekodowane pr
assembler?86? 9 118 5. Rozkazy mikroprocesorów 8086/8088 MOV AL, 8FH CBW ???? ???? 1111 1111 1000
assembler?86? 2 164    5. Rozkazy mikroprocesorów 80S6/8088 STD - ustawienie znaczn
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? 5 W 90    5. Rozkazy mikroprocesorów 8086/8088 Przykłady PUSH ZMIENNA
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? 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

więcej podobnych podstron