Я пытаюсь отладить код на ассемблере, который берет 2 целых числа: x и y и помещает его через функцию x ^ y. Но, кажется, есть проблема, когда я укажу значение y больше 2. Когда я укажу X = 3, пример Y = 3, я получу 9 результатов, что неверно (3 ^ 3 = 27)
Я использую Keli uVision 5 с платой разработки NXP LPC2833
Я новичок в этом сообществе. Так что, извините всех продвинутых программистов, если я сделал ошибки новичка.
https://i.stack.imgur.com/rEi6S.png
AREA EXPONENT, CODE, READONLY
ENTRY
start
MOV a1, #3 ; X value
MOV a2, #3 ; Y value
BL X_POWER_Y ; Go to X_POWER_Y function
B loop
X_POWER_Y
CMP a2, #0 ;Checks if Y equals 0
BEQ ZERO_COND
CMP a2,#1 ;Checks if Y equals 1
BEQ POWER_1
MOV a3, a2
MOV v1, a1
while CMP a3, a2
BLT BREAK
SUB a3, a3, #1
MUL a4, a1, v1
MOV v1, a4
B while
POWER_1
MOV a4, a1
B BREAK
ZERO_COND
MOV a4, #1
B BREAK
BREAK
MOV a1, a4
loop B loop
END