我想讓我的Squares程序正常工作,但是,我不斷收到運行時錯誤或編譯時錯誤(我一直在不同的計算機btw上使用visual studio 2010)爲什麼我有我的計算器
運行時錯誤=「堆棧溢出」
編譯時錯誤=警告A4011:多個.MODEL指令發現:.MODEL忽略4 1項目
但我只有一個.model
指令。
爲什麼我的堆棧溢出?即使沒有分配堆棧,我仍然會得到錯誤。
這裏是我的代碼(只是忽略fibbonacci和總理的程序):
Include Irvine32.inc
.386
.model flat,stdcall
.stack 4096
.data
welcomeMsg BYTE "welcome",0dh, 0ah,0
menu BYTE "Please choose from:", 0dh, 0ah,0
num dword ?
;CHOICES:
choice BYTE "Prime == 0",0dh,0ah,
"fibonachi == 1",0dh,0ah, "Calculate Squares == 2",0dh,0ah,0
.code
main PROC
mov edx, OFFSET welcomeMsg ;prints welcome message
call WriteString
mov edx, OFFSET menu ;prints message
call WriteString
mov edx, OFFSET choice ;prints choices
call WriteString
call ReadInt ;recieves int from keyboard
mov num, eax ;mov eax into num
mov cx,0
mov eax,10
JCXZ L1 ;jump to L1
Prime:
mov cx,0
JCXZ THEEND ; jumps to end of program
Fibo:
mov cx,0
JCXZ THEEND ; jumps to end of program
Squares:
;Squares PROTO
call Squares
mov cx,0
JCXZ THEEND ; jumps to end of program
L1:
cmp num,2
JE Squares ;if num == 2 jump to label ; jump to squares
L2:
cmp num,1
JE Fibo ;if num == 1 jump to label ; jump to fibonacci procedure
L3:
cmp num,0
JE Prime ;if num == 0 jump to label ; jump to prime procedure
THEEND:
INVOKE ExitProcess,0
main ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;fibb PROC ;begin fibonacci
;var word 0
;var2 word 0
;mov ecx,eax
;mov eax,1
;mov var2,1
;Loop1:
; mov var, eax
; mov eax,var2
; add var2,var
;JCXZ Loop1
;mov eax var2
;ret
;fibbo ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Prime PROC ;begin Prime
;ret
我會復出並清理它,g2g – CBRG20 2015-02-24 18:24:17
您應該嘗試通過調試器運行它。這將幫助你捕捉@Mike發現的錯誤。 – Degustaf 2015-02-24 21:29:41