Lectures / 10-11
.pdfПример сложения упакованных BCD-
чисел в сопроцессоре
.data |
|
|
b |
dt |
71 ; упакованное число 71 |
c |
dt |
54 ; упакованное число 54 |
sum dt |
? |
.code
…
fbld b ; загрузить в стек BCD-число из ячейки b fbld c ; загрузить в стек BCD-число из ячейки c fadd ; сложить два числа из стека
fstp sum ; сохр. результат в sum как BCD-число
...
Команды для коррекции BCD-результата
Команды логического преобразования
данных
Логические |
|
|
|
Обработки бит |
|
and |
|
|
|
|
|
|
|
|
Сканирования бит |
|
|
or |
|
|
|
bsf |
|
xor |
|
|
|
bsr |
|
not |
|
|
|
|
|
|
|
|
Проверки и |
|
|
test |
|
|
модификации бит |
|
|
|
|
|
bt |
|
|
|
|
|
|
|
|
|
|
|
|
btc |
|
|
|
|
|
btr |
|
|
|
|
|
bts |
|
Сдвига
Обычного
sar shr sal shld shl shrd
Циклического
rcl rol rcr ror
Логические команды
and оп1, оп2 or оп1, оп2 xor оп1, оп2 not оп1 test оп1, оп2
Команды обработки бит
Сканирование бит
bsf |
оп1, оп2 |
Bit Scanning Forward |
|
bsr |
оп1, оп2 |
Bit Scanning Reverse |
|
|
|
||
|
|
||
|
Проверка и модификация бит |
||
bt |
оп, смещение_бита |
Bit Test |
|
bts |
оп, смещение_бита |
Bit Test and Set |
|
btr |
оп, смещение_бита |
Bit Test and Reset |
|
btc |
оп, смещ_бита Bit Test and Complement |
||
|
|
|
|
Линейный сдвиг
shl dest, count влево
shr dest, count вправо
Линейный сдвиг: Пример
Преобразовать неупакованное BCD-число из слова bcd_dig в упакованное BCD-число в регистре al
… |
|
bcd_digdw |
0905h ; неупак. число 95 |
… |
|
mov |
ax, bcd_dig |
shl |
ah, 4 |
add |
al, ah ; al=95h |
Арифметический сдвиг
sal dest, count влево
sar dest, count вправо
Циклический сдвиг
rol dest, count влево
ror dest, count вправо
Циклический сдвиг через бит переноса
rcl dest, count влево
rcr dest, count вправо