В каждом элементе массива А[10] подсчитать количество единичных битов среди разрядов с номерами от 3 до 6 - Assembler

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

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

В каждом элементе массива А[10] подсчитать количество единичных битов среди разрядов с номерами от 3 до 6.

Решение задачи: «В каждом элементе массива А[10] подсчитать количество единичных битов среди разрядов с номерами от 3 до 6»

textual
Листинг программы
COUNT   equ 10
 
model   tiny
    .386
    .data
A   db  03h, 0ah, 80h, 60h, 40h, 0ffh, 18h, 0f0h, 00fh, 10h
 
    .code
    .startup
 
    lea si, A
    mov cx, COUNT
    mov ah, 0
main_loop:
    lodsb
    call    calc_bits
    loop    main_loop
    
    mov al, ah  ;найденная сумма битов
            ;которую осталось вывести
    .exit   0
 
calc_bits   proc near
bit_3:
    test    al, 08h
    je  bit_4
    inc ah
bit_4:
    test    al, 10h
    je  bit_5
    inc ah
bit_5:
    test    al, 20h
    je  bit_6
    inc ah
bit_6:
    test    al, 40h
    je  bit_ret
    inc ah
bit_ret:
    ret
calc_bits   endp
    
    end

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

  1. В начале кода объявлена переменная COUNT, которая равна 10.
  2. Затем идет объявление сегментов данных и кода, а также определение начала работы программы в сегменте кода.
  3. Далее идет объявление массива A, в котором будут храниться значения для проверки.
  4. После этого идет цикл, который будет перебирать все элементы массива A.
  5. Внутри цикла вызывается функция calc_bits, которая будет подсчитывать количество единичных битов среди разрядов с номерами от 3 до 6.
  6. После выполнения всех итераций цикла, в переменной al будет храниться найденная сумма битов.
  7. В конце программы выводится значение переменной al.
  8. Функция calc_bits выполняет проверку каждого бита от 3 до 6 и увеличивает значение переменной ah на 1 при обнаружении единицы.
  9. Если встречается бит 7, то происходит возврат в основную программу.
  10. В конце программы идет выход из программы с кодом 0.

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

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