Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем количество нулей. - Assembler

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

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

Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем количество нулей Помогите решить пожалуйста

Решение задачи: «Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем количество нулей.»

textual
Листинг программы
lea si,var
xor dx,dx
mov cx,6
count:
lodsb
 
push cx
 
mov cx,8
bit:
shl al,1
jc skip
 
inc dx
 
skip:
loop bit
 
pop cx
 
loop count

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

  1. lea si,var — в качестве var используется адрес в памяти, где хранится массив.
  2. xor dx,dx — начальное значение dx устанавливается в ноль.
  3. mov cx,6 — в качестве cx используется счётчик, и его начальное значение равно 6 (размер массива).
  4. count: — начало цикла, который будет выполняться 6 раз (размер массива).
  5. lodsb — в качестве al используется первый элемент массива (в данном случае это 0), а dx инкрементируется на 1.
  6. push cx — значение cx сохраняется на стеке для последующего использования.
  7. mov cx,8 — счётчик устанавливается равным 8 (чтобы перебрать все 48 бит).
  8. bit: — начало внутреннего цикла, который будет выполняться 8 раз (чтобы перебрать все 48 бит).
  9. shl al,1 — значение al сдвигается на 1 вправо (чтобы получить следующий бит).
  10. jc skip — если бит был 1, то переход на следующую итерацию внутреннего цикла.
  11. inc dx — значение dx инкрементируется на 1.
  12. skip: — начало условного блока, который выполняется, если бит был 0.
  13. loop bit — переход к следующей итерации внутреннего цикла.
  14. pop cx — значение cx восстанавливается из стека.
  15. loop count — переход к следующей итерации внешнего цикла.
  16. Код выполняется 6 раз (размер массива), перебирая все 48 бит.
  17. Если бит был 0, то значение dx инкрементируется на 1.
  18. После выполнения всех итераций, в dx будет содержаться количество нулей в массиве.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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