Re: [問題] 關於除法指令div的問題

看板ASM (組合語言)作者 (jason12308)時間14年前 (2010/11/04 21:24), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《ppttcc (ppttcc)》之銘言: : 關於除法指令div的問題 : 程式目的:將一數除以另一數後將商及餘數轉成ASCII的數字後輸出, : 發生一些問題: : 1.除數若在13以下顯示的結果就會變成divide overflow,但若超過就沒有此問題. : 2.轉成ASCII後完全不是該數字,如20/14後,應是1餘6,但轉成ASCII輸出後,會變成2b, : 30/14後,應是2餘2,但轉成ASCII輸出後,會變成字元 < l (L的小寫),整個都亂掉 : 3.若不呼叫 tochar, 則31/14沒有輸出任何字元.31/17輸出3行空白, 35/20輸出兩顆心號 : (ASCII數值為3) : 似乎找不到任何規則可debug? : 我在懷疑是否有暫存器的數值沒清乾淨歸零,但我用的指令是mov不是add阿? : 或者沒有初始化暫存器為0?但好像也沒效果... : 麻煩幫我看看哪裡錯了,感謝!感謝! : 程式碼: : mov dl,20 : mov ax,dx : mov cl,14 : div cl : mov dl,ah ;6 : call tochar : call show : mov dl,al ;1 : call tochar : call show : exit: mov ah,4ch : int 21h : ;-------------------------- : tochar proc near : mov bl,48 : add dl,bl : ret : tochar endp : show proc near : mov ah,2 : int 21h : ret : show endp .8086 .model small .stack 100h .data .code .startup mov al,20 mov ch,al mov cl,14 div cl mov ch,al ;商 mov cl,ah ;餘 add ch,30h add cl,30h mov ah,02h mov dl,ch int 21h mov ah,02h mov dl,cl int 21h .exit end 我打這樣…可執行 -- 十六年後,再此重會。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.131.164 ※ 編輯: jason12308 來自: 111.240.131.164 (11/04 21:28)

11/04 21:34, , 1F
不知道原po程式的dh是不是0
11/04 21:34, 1F

11/04 21:38, , 2F
叫原PO用CV *.EXE看啊
11/04 21:38, 2F

11/04 21:45, , 3F
看到前面他說用debug載入,應該知道怎麼看暫存器吧
11/04 21:45, 3F

11/04 22:10, , 4F
謝謝!我參考一下!
11/04 22:10, 4F
文章代碼(AID): #1CqhG1JX (ASM)
討論串 (同標題文章)
文章代碼(AID): #1CqhG1JX (ASM)