Нечетные (по значению) элементы массива поделить на 5, и вывести результат в консоль - Assembler
Формулировка задачи:
Есть код подсчитывающий кол-во нечетных чисел в массиве, прошу помочь переделать под задание в заголовке.Наверняка есть добрые люди)
.286
.model small
.data
MAS db 3,5,7,9,10,15,17,20,23,25,30,35,40,45
Num = $ - MAS
sum db 0
.code
org 100h
start: mov ax,@data
mov ds,ax
mov ax,3
int 10h;очищаем экран
mov si,offset MAS
mov cx,Num
@0: lodsb
shr al,1
adc sum,0
loop @0
mov al,sum
aam
add ax,'00'
ror ax,8
int 29h
ror ax,8
int 29h
mov ah,0; ждем нажатия на клавиатуру
int 16h
mov ah,4Ch; завершаем программу
int 21h
end startРешение задачи: «Нечетные (по значению) элементы массива поделить на 5, и вывести результат в консоль»
textual
Листинг программы
start: mov ax,a[si] test al,1 jz m1 idiv dl mov ah,0 add ax,48 mov b[di],ax m1: add si,2 add di,2 loop start
Объяснение кода листинга программы
В данном коде выполняется деление нечетных элементов массива на 5 и запись результата в другой массив. Список операций:
- Передача в AX регистра содержимого элемента массива, соответствующего индексу SI.
- Проверка бита 1 в AL (нечетность).
- Если бит 1 установлен, то переход к метке M1.
- Деление AX на DL (5).
- Передача в AX регистра результата деления.
- Добавление 48 к AX (для преобразования в ASCII).
- Запись результата в B[DI].
- Увеличение SI на 2.
- Увеличение DI на 2.
- Переход к метке Start. Примечание: В коде не указано, что происходит при делении на ноль, также не указаны размеры массивов и их начальные адреса.