Instrukcje procesorów rodziny 80x86 (B)
Dryobates
| 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 |
Instrukcje procesorów rodziny 80x86 (B)
GoMovies