Программирование на Ассемблере для персональных компьютеров. Садовой Н.Н - 34 стр.

UptoLike

Составители: 

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