Я составил код для определения всех факториалов заданного числа на ассемблере 8086. Но проблема в том, что я ошибаюсь. Например: когда ввод равен 54, я получаю результат как 6, но результат должен быть 8. Он также дает ошибки для некоторых других входов. Но я не могу узнать проблему в своем коде.Ошибка при поиске всех факторов заданного числа
Вот мой код:
.MODEL SMALL
.STACK 100
.DATA
NUMBER DW 54
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AX,NUMBER
MOV BX,1
MOV CX,0
WHILE_:
DIV BX
CMP DX,0
JE CHECK
MOV AX,NUMBER
INC BX
CMP BX,AX
JL WHILE_
JMP END_
CHECK:
CMP AX,BX
JG INC_
JE INC2_
JMP END_
INC_:
ADD CX,2
MOV AX,NUMBER
INC BX
CMP BX,AX
JL WHILE_:
JMP END_
INC2_:
INC CX
JMP END_
END_:
ADD CX,48
MOV AH,2
MOV DX,CX
INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
RET
Какие изменения я должен сделать, чтобы получить правильный вывод (как 8 для 54)
Я не знаю, в какой среде вы работаете. Но в любом случае, первое, что вы должны сделать, это отладить вашу программу. Для сборки 8086 вы можете использовать Borland Turbo Debuger и идти шаг за шагом. Кроме того, вы можете увидеть [этот пост] (http://stackoverflow.com/questions/2844703/algorithm-to-find-the-factors-of-a-given-number-shortest-method) об алгоритмическом подходе для решения проблемы проблема, но находится в C. – JosEduSol
Кроме того, вы должны прокомментировать свой код, для других и для себя. Легче следовать логике. – JosEduSol