Определить количество нулей в матрице - Assembler
Формулировка задачи:
Надо написать программу в языке ассемблера 8086 которая определяет количество нулей в матрице и размер матрицы даётся с клавиатуры и числа тоже с клавиатуры
Решение задачи: «Определить количество нулей в матрице»
textual
Листинг программы
- array db 9,5,10,16,80,103 ; массив
- len = $ - array ; его длина
- start: ;
- mov si,array ; адрес массива в SI
- mov bp,len ; BP - длина
- xor bx,bx ; здесь будет результат
- begin: ;
- lodsb ; берём байт из SI
- mov cx,8 ; сколько раз выдвигать
- @1: shl al,1 ; сдвиг влево на 1
- jc @2 ; пропуск, если CF=1
- inc bx ; считаем нули
- @2: loop @1 ; следующий бит..
- dec bp ; весь массив проверили?
- jnz begin ; нет - берём сл.байт с массива
- ; да - результат в BX!
Объяснение кода листинга программы
- В начале кода определен массив, его длина вычисляется как разность между символом '$' и адресом массива в переменной
array
. - Затем, используя метку
start
, создаются начальные условия: регистр SI содержит адрес первого элемента массива, а BP - его длину. - Переменная BX инициализируется нулем.
- Используя метку
begin
, происходит основная часть работы:- Забирается байт из массива с помощью команды
lodsb
. - Байт сдвигается влево на 1 позицию с помощью команды
shl al,1
. - Если после сдвига в старшем бите остаётся единица (это проверяется с помощью команды
jc @2
), то этот байт не считается нулём, и мы переходим к следующему биту с помощью командыinc bx
. - Если после сдвига в старшем бите остаётся ноль, то этот байт считается нулём, и мы увеличиваем значение переменной BX на единицу.
- Забирается байт из массива с помощью команды
- Если весь массив проверен (это проверяется с помощью команды
dec bp
), и в нём ещё остались нули (это проверяется с помощью командыjnz begin
), то мы возвращаемся к началу цикла. - Если весь массив проверен и не содержит нулей, то результат (количество нулей) сохраняется в переменной BX.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д