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

UptoLike

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

33
xor al, 00010100b
4. Перейти на метку LAB, если установлен 4 бит регистра al, в против-
ном случае продолжить выполнение программы.
test al, 00010000b
jnz LAB
продолжаем
. . .
LAB:
5. Посчитать число единиц в регистре al, рассматривая байт, как набор
бит.
mov cx, b ; число сдвигов
xor bl, bl ; обнуление BL
LL: shl al, 1 ; сдвиг влево на один разряд
jnc NO ; переход, если нет переноса
inc bl ; иначе увеличить BL
NO: loop LL ; возврат, если cx 0
4.3. Пример выполнения работы
Дан массив из 10 байт. Все байты имеют нулевые старшие биты.
Необходимо каждый байт содержащий единицу в нулевом бите допол-
нить до четного числа единиц установкой седьмого бита.
Текст программы:
data segment
NB db 04h, 07h, 14h, 23h, 04h,38h, 3Fh, 2Ah0Dh, 34h
data ends
code segment
assume cs: code. ds:data
START: mov ax, data
xor al, 00010100b
4.      Перейти на метку LAB, если установлен 4 бит регистра al, в против-
ном случае продолжить выполнение программы.
  test al, 00010000b
  jnz LAB
  продолжаем
        ...
LAB:
5.      Посчитать число единиц в регистре al, рассматривая байт, как набор
бит.
  mov cx, b              ; число сдвигов
  xor bl, bl             ; обнуление BL
LL:     shl al, 1        ; сдвиг влево на один разряд
  jnc NO                 ; переход, если нет переноса
  inc bl                 ; иначе увеличить BL
NO: loop LL              ; возврат, если cx ≠0

                              4.3. Пример выполнения работы

           Дан массив из 10 байт. Все байты имеют нулевые старшие биты.
       Необходимо каждый байт содержащий единицу в нулевом бите допол-
       нить до четного числа единиц установкой седьмого бита.

           Текст программы:

       data segment
       NB db 04h, 07h, 14h, 23h, 04h,38h, 3Fh, 2Ah0Dh, 34h
       data ends
       code segment
       assume cs: code. ds:data
START:         mov ax, data
                                                                       33