我正在處理college course的項目。裝配 - 驗證ISBN(某處出現邏輯錯誤)
首先,我並不是要求完整的解決方案。我很難找到我出錯的地方。當我輸入有效的ISBN 3201541974時,我的程序將打印「無效」代碼塊。我會很欣賞你可以看到的任何邏輯錯誤的提示,而且我也很想知道是否有更好的調試方法,而不是一次盯着我所有的代碼。我習慣依靠簡單的打印語句和斷點。
編輯:問題是在這裏
L1_top:
mov al, [esi] ; get a character
inc esi ; update source pointer
sub al, 0
add ah, al
cmp ah, 11
.......
我從人減去0的原因是因爲人是最初一個字符。從al中減去'0'會將其轉換爲int或w/e。我錯誤地減去0,而不是「0」
正確的路線是
sub al, '0'
作爲助教+1和正在:) +1 – Earlz 2013-02-18 04:26:09
哇,我已經upvoted這個答案不正確地讀了第一句話,兩次。現在,我已經閱讀正確,我想再次upvote ... – aib 2013-02-18 04:47:19
哇,謝謝。我要給教授發郵件一個鏈接,只是爲了給你一些榮譽。我有味精10和11的原因實際上是因爲我試圖通過複製/粘貼和編輯其他人工作的4行來確定插入打印語句是怎麼回事,但是這導致了錯誤分割或w/e錯誤。 – rcj 2013-02-18 06:35:39