в следующем коде, показывающем вывод 0 вместо 8 - PullRequest
1 голос
/ 04 сентября 2010

.intel_syntax noprefix

.include "console.i"


.data
        ask1:   .long  0
        ask2:   .long  0
        ans :   .long  0

.text
        ask:    .asciz "Enter number: "
        ans1:   .asciz "multiplication= "

_entry:

        Prompt ask
        GetInt ask1
        Prompt ask
        GetInt ask2

        mov eax, ask1
        mov edx, ask2
        mul edx
        mov ans,edx

        Prompt ans1
        PutInt ans
        PutEol

 ret

.global _entry

.end



OUTPUT:
      Enter number: 2
      Enter number: 4
      multiplication= 0


In above code it gives output as 0.
why it is showing 0  instead of 8 ?

edit1: added mov ans, edx

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Вы умножаете EDX на EAX, поэтому ваш результат сохраняется в EAX, а не EDX.

ваш код:

mul edx
mov ans,edx

Вы присваиваете значение edx для ans. Вы должны хранить значение eax в ans.

mul edx
mov ans,eax
0 голосов
/ 04 сентября 2010

Вы используете довольно много макросов, которые я не понимаю, но основная проблема заключается в том, что вы ничего не делаете с результатами 'mul edx'.

Результат MUL EDX в edx: eax, и вы, кажется, выбрасываете эту информацию, не помещая ее в переменную ans.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...