Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты - Assembler

Узнай цену своей работы

Формулировка задачи:

Дан массив из 10 байт. Посчитать количество байт,в которых сброшены 6 и 4 биты. Массив байтов размещается начиная с DS:0000h. Ответ должен быть записан в регистре DX Вот, по моему мнению наиболее близкий к правильному решению код. В ассемблере полный профан,третий раз в жизни имею с ним дело,так что пожалуйста добавьте к своему решению комментарий.
mov SI,0000h
mov CX,10
xor  BX,BX
MET1: lodsb
test al,01010000b ; все что идет после этой строки скорее всего полнейший бред
jnz MET2
inc SI
loop MET1
MET2: inc BX
loop MET1
mov DX,BX

Решение задачи: «Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты»

textual
Листинг программы
mov cx,10 
xor ax,ax
xor dx,dx
MET1:lodsb
    test al,01010000b
    setp al
    add  dx,ax
loop MET1

Объяснение кода листинга программы

  1. mov cx,10 - устанавливает счётчик циклов на 10
  2. xor ax,ax - обнуляет значение аккумулятора
  3. xor dx,dx - обнуляет значение регистра dx
  4. MET1:lodsb - заносит в регистр ax значение байта из массива (счёт начинается с 0)
  5. test al,01010000b - проверяет, что в байте, занесённом в ax, сброшены шестой и четвёртый биты (01010000b в двоичной системе равно 26 в десятичной)
  6. setp al - если условие из пункта 5 выполняется, то переводит в 1 младший бит регистра al (это будет 0 для первого байта, 1 для второго и так далее)
  7. add dx,ax - складывает значение регистра dx и аккумулятора (регистр dx содержит сумму, начиная с 0)
  8. loop MET1 - повторяет шаги с 4 по 7 для каждого байта в массиве В итоге, после выполнения программы, в регистре dx будет содержаться количество байтов, в которых сброшены шестой и четвёртый биты.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы