0

我写了下面的代码,但它得到的答案是错误的。它应该做 x^2 但似乎它比需要的迭代次数多一次:

1 的结果是 2 // 1+1=2 2
的结果是 8 // 2+2+2=8

我相信它将 CX 与 ZeroFlag 进行比较,而不是第一个语句中的 1。是对的吗?

pos:
     MOV CX,Number   
    again:  Add Number,AX
            Dec cx
            cmp cx,1
            jg again ; statement no. 1
    JMP DONE  
4

1 回答 1

1

只要您确定 AX 已初始化为零,代码就应该可以工作。尝试:

MOV Number, AX

在循环开始之前,还要在循环开始之前检查你的数字是否大于 1,这样它就不会在 < 1 上产生错误的结果。

于 2013-03-12T12:14:41.417 回答