看板 ASM 關於我們 聯絡資訊
小弟這次加上了,辨識負號的功能, 可是結果只有輸入正的才會對,輸入負的(一正一負OR兩個都負數)就會錯, 或是無法繼續執行。 拜託各位大大解惑 TITLE MASM Template (main.asm) ; Description: ; ; Revision date: INCLUDE Irvine32.inc .data I1 DWORD ? I2 DWORD ? Str1 Byte "Input the first value",0 Str2 Byte "Input the second value",0 .code main PROC MOV EDX,OFFSET str1 CALL WriteString CALL ReadDec MOV I1,EAX CMP I1,0 // <-------比較是否為負數 JG L3 NEG I1 // <-------如果是就換為正的 L3: MOV EDX,OFFSET str2 CALL WriteString CALL ReadDec MOV I2,EAX CMP I2,0 // <-------比較是否為負數 JG L4 NEG I2 // <-------如果是就會為正的 L4: PUSH I1 PUSH I2 CALL gcdrecursive CALL WriteDec EXIT main ENDP gcdrecursive PROC PUSH EBP MOV EBP,ESP SUB ESP,4 MOV EBX,[EBP+8] MOV EAX,[EBP+12] MOV EDX,0 DIV EBX MOV EAX,EBX MOV EBX,EDX CMP EBX,0 JE L2 JMP L1 L1:PUSH EAX PUSH EBX CALL gcdrecursive L2:MOV ESP,EBP POP EBP RET 8 gcdrecursive ENDP END main -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.218.13
buganini:被除數是64bit 如果是負的 EDX就不是擺0囉 01/09 18:47
buganini:厄.. 我沒看清楚XD 01/09 18:50
buganini:irvine32裡面的ReadDec好像是讀無號數= = 01/09 19:07
buganini:改ReadInt? 01/09 19:09
tna612:恩 可以了!!感謝大大指點! 01/09 20:46
qqqlow:除了NEG之外 有沒有辦法讓負號變成正號@@? 01/09 21:39
Ross0916:有另外一個指令叫 IDIV 吧 01/10 00:29