看板 ASM 關於我們 聯絡資訊
※ 引述《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)
loveflames:不知道原po程式的dh是不是0 11/04 21:34
jason12308:叫原PO用CV *.EXE看啊 11/04 21:38
loveflames:看到前面他說用debug載入,應該知道怎麼看暫存器吧 11/04 21:45
ppttcc:謝謝!我參考一下! 11/04 22:10