2013-03-12 60 views
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 
+0

您要添加錯誤的結果(添加數字,AX),而不是相乘。 – m0skit0 2013-03-12 12:03:19

+0

不應該使用乘法或除法.. – geekybedouin 2013-03-12 12:04:37

+0

「AX」包含什麼?此外,您的邏輯有點不合適:即使在進入循環之前「CX」<= 1,您總是進行一次加法。 – Michael 2013-03-12 12:12:13

回答

1

只要您確定AX初始化爲零,代碼應該可以工作。 嘗試:

MOV Number, AX 

在循環開始之前,還要檢查你的數字大於1,在循環開始之前只所以它不會產生對< 1.

+1

AX應該包含數字的值..但它實際上是holdin(數字* 2)改變't並且工作得很好 – geekybedouin 2013-03-12 12:23:46