我想让我的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