Определить произведение четных цифр числа, стоящих в нечетных позициях - Assembler

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

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

Создание программ неленейной структуры с использыванием команд условного перехода и цыкла Задано натуральное число, диапазон значений слово. Определить произведение четных цифр числа стоящих в нечетных позициях. Помогите написанием программы на языке асемблер. С ним очень туго...

Решение задачи: «Определить произведение четных цифр числа, стоящих в нечетных позициях»

textual
Листинг программы
.model small
.8086
 
.data
num dw 1238
res dw 0 
 
.stack
db 255 dup(?)
 
.code
start:
mov ax,@data
mov ds,ax
 
mov ax,num
mov bx,10
xor cx,cx
get:
xor dx,dx
div bx
push dx
inc cx
or ax,ax
jnz get
 
xor bx,bx
mov dx,1
mult:
pop ax
 
test bx,1
jz skip
 
test ax,1
jnz skip
 
imul dx
 
mov res,ax
mov dx,res
 
skip:
inc bx
loop mult
 
mov ah,4Ch
mov al,00h
int 21h
end start

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

Выполняемый код на языке ассемблера обычно имеет несколько целей:

  1. Подключение сегмента данных к сегменту кода для обращения к общим переменным.
  2. Начало работы программы. Переменная num содержит число 1238, которое будет использоваться в дальнейшем.
  3. Определение цикла, который будет перебирать все нечетные позиции числа.
  4. Начальная инициализация счетчика для цикла.
  5. Начало цикла. На каждой итерации значение в регистрах AX и DX будет делиться на 10, приводящее к остатку в регистре DX.
  6. Регистр CX инициализируется как 0. Он будет использоваться для отслеживания количества итераций цикла.
  7. Регистры AX и BX инициализируются как 0. Регистр BX будет использоваться для хранения степени двойки, которая будет использоваться в операции умножения.
  8. Начало цикла умножения. Этот цикл будет выполняться до тех пор, пока значение регистра BX больше или равно 1.
  9. Перед выполнением операции умножения необходимо убедиться, что значение регистра AX не равно 0, иначе операция будет ошибочной.
  10. Выполнение операции умножения.
  11. Запись результата операции умножения в переменную res.
  12. Увеличение значения регистра BX на 1.
  13. Повторение цикла до тех пор, пока значение регистра BX больше или равно 1.
  14. Завершение работы программы. Следует отметить, что этот код может быть не совсем точным для определения произведения четных цифр в нечетных позициях, так как он просто делит число на 10 до тех пор, пока нечетные цифры не станут равными нулю.

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

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