Составители:
Рубрика:
34
mov ds, ax ; Загрузить сегментный адрес данных
lea bx, NB ; bx-текущий адрес массива NB
mov cx, 10 ; cx-счетчик числа интераций
BEG: mov al, [bx] ; считать очередной байт массива
test al, 1b ; установлен ли бит 0?
jz BITOCLR ; нет, бит 0 сброшен
; бит 0 установлен
test al, 0ffh ; четное число единиц?
jp OK ; да, больше ничего делать не надо
or al, 80h ; нечетное дополнить до четного?
jmp short OK
; бит 0 сброшен
BITOCLR: test al, 0ffh ; четное число единиц?
jnp OK ; нет, больше ничего
делать не нужно
or al,80h ; нечетное, дополнить до нечетного
OK: mov [bx], al ; записать измененный байт массива
loop BEG
QUIT: mov ax, 4c00h ; Код завершения 0
Int 21h ; Выход в DOS
code ends
end START
4.4. Варианты заданий
1. Дан массив из 10 байт. Посчитать количество байт, в которых сбро-
шены 6 и 4 биты.
2. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчи-
тать количество единиц.
mov ds, ax ; Загрузить сегментный адрес данных lea bx, NB ; bx-текущий адрес массива NB mov cx, 10 ; cx-счетчик числа интераций BEG: mov al, [bx] ; считать очередной байт массива test al, 1b ; установлен ли бит 0? jz BITOCLR ; нет, бит 0 сброшен ; бит 0 установлен test al, 0ffh ; четное число единиц? jp OK ; да, больше ничего делать не надо or al, 80h ; нечетное дополнить до четного? jmp short OK ; бит 0 сброшен BITOCLR: test al, 0ffh ; четное число единиц? jnp OK ; нет, больше ничего делать не нужно or al,80h ; нечетное, дополнить до нечетного OK: mov [bx], al ; записать измененный байт массива loop BEG QUIT: mov ax, 4c00h ; Код завершения 0 Int 21h ; Выход в DOS code ends end START 4.4. Варианты заданий 1. Дан массив из 10 байт. Посчитать количество байт, в которых сбро- шены 6 и 4 биты. 2. Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчи- тать количество единиц. 34
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »