Instrukcje procesorów rodziny 80x86 (M)

Dryobates

MOVMove Byte or Word
UżycieMOV dest, src
Modyfikowane flagiBrak
Kopiuje zawartość src do dest. Jeżeli dest=SS przerwania są wyłączane (za wyjątkiem wczesnych błędnych procesorów 808x). Niektóre procesory wyłączają przerwania, jeżeli dest jest którymkolwiek z rejestrów segmentowych.

Przykład:
mov ax, @data ;ładujemy segment danych do ax
mov ds, ax ;i ustawiamy go

 Liczba cykli zegaraRozmiar
Parametry808x286386486PentiumBajtów
reg, reg22211 UV2
mem, reg13+EA3211 UV2
reg, mem12+EA5411 UV2
mem, imm14+EA13311 UV*2
reg, imm42211 UV2
acc, mem145411 UV3
mem, acc143211 UV3
seg, r1622232-11 NP2
seg, m1612+EA5533-12 NP2
reg16, seg22231 NP2
mem16, seg13+EA3231 NP2
  • jeżeli specjalne rejestry 386 są użwane to wszystkie operandy są 32-bitowe
  • zestawienie nie uwzględnia operacji w trybie Protected oraz operacji na rejestrach specjalnych 386+ (control, debug, trap). Jeżeli brakuje Ci tego, to daj znać, a uzupełnię.
    • nieparowalne, jeżeli jest przesunięcie i natychmiastowe adresowanie na raz
      MOVSMove String (Byte or Word)
      UżycieMOVS dest, src
      MOVSB
      MOVSW
      MOVSD (386+)
      Modyfikowane flagiBrak

      Kopiuje dane spod adresu DS:SI (nawet, jeżeli podano operand) do ES:DI i zmienia SI i DI zależnie od rozmiaru operandu lub instrukcji. SI i DI są zwiększane, jeżeli DF=0 i zmniejszane gdy DF=. Używaj z prefiksem REP.

      Przykład:
      Lancuch db "Ala ma kota$"
      Kopia db 15 dup(?)
      ....
      push ds
      pop es ;zmienna docelowa w tym samym segmencie danych
      lea di, Kopia ;ładujemy indeks do łańcucha doktórego kopiujemy
      lea si, Lancuch ;ładujemy indeks do łańcucha z którego kopiujemy
      mov cx, 12 ;kopiujemy 12 znaków
      cld ;będziemy zwiększać indeksy
      rep movsb ;i kopiujemy po bajcie

       Liczba cykli zegaraRozmiar
      Parametry808x286386486PentiumBajtów
      movsb185774 NP1
      movsw265774 NP1
      movsd--774 NP1
      rep movsb9+17n5+4n7+4n12+3n*3+n NP2
      rep movsw9+25n5+4n7+4n12+3n*3+n NP

      2

      rep movsd--7 +4n12+3n*3+n NP2
  • = 5 jeżeli n=0, 13 jeżeli n=1
    (n = liczba bajtów, słów lub podwójnych słów)
    MOVSXMove with Sign Extend (386+)
    UżycieMOVSX dest,src
    Modyfikowane flagiBrak

    Kopije src do dest, rozszerzając znak.Rozmiar dest jest zawsze większy niż src.

    Przykład:
    mov al, FEh ;al = 1111 1110 b = -2 d
    movsx dx, al ; dx = 1111 1111 1111 1110 b = -2 d
    mov al, 0Eh ;al = 0000 1110 b = 15 d
    movsx dx, al ; dx = 0000 0000 0000 1110 b = 15 d

     Liczba cykli zegaraRozmiar
    Parametry808x286386486PentiumBajtów
    reg, reg--333 NP3
    reg, mem--633 NP3

    MOVZXMove with Zero Extend (386+)
    UżycieMOVZX dest,src
    Modyfikowane flagiBrak

    Kopiuje src do dest rozszerzając o 0. Rozmiar dest jest zawsze większy niż src.

    Przykład:
    mov al, FEh ;al = 1111 1110 b = -2 d
    movzx dx, al ; dx = 0000 0000 1111 1110 b = 254 d
    mov al, 0Eh ;al = 0000 1110 b = 15 d
    movzx dx, al ; dx = 0000 0000 0000 1110 b = 15 d

     Liczba cykli zegaraRozmiar
    Parametry808x286386486PentiumBajtów
    reg, reg--333 NP3
    reg, mem--633 NP3

    MULUnsigned Multiply
    UżycieMUL src
    Modyfikowane flagiCF OF (AF,PF,SF,ZF nieokreślone)

    Mnoży zawartość akumulatora (AL, AX lub EAX) przez src nie biorąc pod uwagę znaku (liczby w natrualnym kodzie binarnym NKB).

    Czynnik1Czynnik2 (rozmiar)Iloczyn
    ALByteAX
    AXWordDX:AX
    EAXDWordEDX:EAX

    Procesory 386+ używają algorytmu, który mnoży dowolną wartość z EAX tak samo szybko jak w rejestrach 8 czy 16 bitowych.

    Przykład:
    mov ax, 2F3h ; ax = 755 d
    mov cx, 0Eh ; cx = 15 d
    mul cx ;edx:eax = 11375 d = 2c3dh

     Liczba cykli zegaraRozmiar
    Parametry808x286386486Bajtów
    reg870-77139-1413-182
    reg16118-113219-2213-262
    reg32--9-3813-422-4
    mem8(76-83)+EA1612-1713-182-4
    mem16(124-139)+EA2412-2513-262-4
    mem32--12-2113-412-4

Autorzy:
Dryobates
LKS
Vogel
Wirek

4 komentarzy

This means that it remains the most fully featured and complete app in its class.http://goldstar-tmz.ru/Warez/[...]f-by-the-sea-ost-torrent.html Fixed Music Tab Layout Problem Fixed Location Update Error Message.

Weźmy jako przykład podaną w tabeli instrukcję 'MUL' ... wynika z tego, że na procesorze 386
wykonuje się szybciej niż na 486 ???? - byłem przekonany, że powinno być odwrotnie ....

brakuje mi jedynie obok opcod'ów :)

ale macie leb :-)