Programowanie w języku Assembler

Instrukcje procesorów rodziny 80x86 (B)


BOUND Array Index Bound Check (80188+)
Użycie BOUND src,limit
Modyfikowane flagi Brak
Instrukjca sprawdza, czy indeks tablicy podany w src mieści się w przedziale wyznaczanym przez wartości typu word (lub dword) znajdujące się w pamięci pod adresami limit oraz limit+2 (lub + 4). Jeżeli indeks jest spoza przedziału wywoływane jest przerwanie nr 5. (np. przy tablicy array [10..200] of Byte ułatwia sprawdzenie, czy indeks jest w prawidłowym zakresie. Zwykle zakres umieszczany jest tuż przed tablicą)
nj = no jump taken Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg16,mem32 - nj=13 nj=10 7 2
reg32,mem64 - nj=13 nj=10 7 2


BSF Bit Scan Forward (386+)
Użycie BSF dest,src
Modyfikowane flagi ZF
Skanuje src w poszukiwaniu pierwszego bitu równego 1. Uzstawia Zero Flag (ZF=1) jeżeli znajdzie taki bit oraz zapisuje w dest nr pierwszego znalezionego bitu. Czyści ZF (ZF=0) jeżeli żaden bit nie jest ustawiony. BSF skanuje od najmniej znaczącego bitu (0-n), podczas gdy BSR skanuje odwrotnie(n-0).
  Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg,reg - - 10+3n 6-42 3
mem, reg - - 10+3n 7-42 3-7
reg32,reg32 - - 10+3n 6-42 3-7
reg32,mem32 - - 10+3n 7-43 3-7


BSR Bit Scan Reverse (386+)
Użycie BSR dest,src
Modyfikowane flagi ZF
Skanuje src w poszukiwaniu pierwszego bitu równego 1. Uzstawia Zero Flag (ZF=1) jeżeli znajdzie taki bit oraz zapisuje w dest nr pierwszego znalezionego bitu. Czyści ZF (ZF=0) jeżeli żaden bit nie jest ustawiony. BSF skanuje od najmniej znaczącego bitu (0-n), podczas gdy BSR skanuje odwrotnie(n-0).
Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg,reg - - 10+3n 6-103 3
mem, reg - - 10+3n 7-104 3-7
reg32,reg32 - - 10+3n 6-103 3-7
reg32,mem32 - - 10+3n 7-104 3-7


BSWAP Byte Swap (486+)
Użycie BSWAP reg32
Modyfikowane flagi Brak
Zamienia ważniejsze 16 bitów rejestrów 32-bitowych z mniej znaczącymi i odwrotnie. Jeżeli wartość jest 16 bitowa, to wynik jest nieokreślony
  Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg32 - - - 1 2


BT Bit Test (386+)
Użycie BT dest,src
Modyfikowane flagi CF
Bit z dest o numerze wskazywanym przez src jest kopiowany do Carry Flag (CF = dest[src]).
Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg16,immed8 - - 3 3 4-8
mem16,immed8 - - 6 6 4-8
reg16,immed8 - - 3 3 3-7
mem16,reg16 - - 12 12 3-7


BTC Bit Test with Compliment (386+)
Użycie BTC dest,src
Modyfikowane flagi CF
Zanegowany bit z dest o numerze wskazywanym przez src jest kopiowany do Carry Flag (CF = not dest[src]).
Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg16,immed8 - - 6 6 4-8
mem16,immed8 - - 8 8 4-8
reg16,reg16 - - 6 3 3-7
mem16,reg16 - - 13 13 3-7


BTR Bit Test with Reset (386+)
Użycie BTR dest,src
Modyfikowane flagi CF
Bit z dest o numerze wskazywanym przez src jest kopiowany do Carry Flag (CF = dest[src]) i ustawiany na 0 w dest (dest[src] = 0)
Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg16,immed8 - - 6 6 4-8
mem16,immed8 - - 8 8 4-8
reg16,reg16 - - 6 3 3-7
mem16,reg16 - - 13 13 3-7


BTS Bit Test and Set (386+)
Użycie BTS dest,src
Modyfikowane flagi CF
Bit z dest o numerze wskazywanym przez src jest kopiowany do Carry Flag (CF = dest[src]) i ustawiany na 1 w dest (dest[src] = 1)
  Liczba cykli zegara Rozmiar
Parametry 808x 286 386 486 Bajtów
reg16,immed8 - - 6 6 4-8
mem16,immed8 - - 8 8 4-8
reg16,reg16 - - 6 3 3-7
mem16,reg16 - - 13 13 3-7


Autorzy:
Dryobates
LKS
Vogel
Wirek