をしながら、私は番号を記入手順を書いたので、私はMASM32の手順で作業する方法を学んでいる:SIGSEGV、セグメンテーションフォールト「RET」
.386
.model flat, stdcall
option casemap : none
include \masm32\include\masm32.inc
include \masm32\include\kernel32.inc
include \masm32\macros\macros.asm
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
.data
number dw 397
temp db 10
symbol dw ?
i dw ?
.code
printnumber proc num:WORD
mov ecx, 0
mov ax, num
@@:
mov edx, 0
div temp
mov bh, 0
mov bl, ah
push bx
inc cx
cmp al, 0
mov bl, al
mov ax, bx
jnz @B
mov i, cx
@@:
pop symbol
add symbol, 48
mov ax, symbol
print ADDR symbol
dec i
cmp i, 0
jnz @B
ret
printnumber endp
start:
push number
call printnumber
ret ;here program fails
end start
プログラム版画「397」に成功し、これにしようとした後に"ret"には問題があります: "Program received signal SIGSEGV、Segmentation fault。"私は何をすべきか?
スタックをアンバランスにしました。あなたはあなたが押した '数字'を削除したい。 – Jester