사용자가 숫자를 입력하는 프로그램을 만들고 있는데, 0부터 숫자까지 모든 숫자를 인쇄합니다. 그것은 잘 컴파일, 링크 괜찮아요, 그리고 아무런 오류가 반환되면 실행하지만, 그것은 절대적으로 아무것도 인쇄하지 않습니다. 다음은 코드입니다.linux의 nasm 코드는 아무 것도 표시하지 않습니다.
SECTION .data
len EQU 32
SECTION .bss
other resd len
data resd len
SECTION .text
GLOBAL _start
_start:
nop
input: ; This section gets the integer from the user
mov eax, 3 ; }
mov ebx, 1 ; }
mov ecx, data ; } System_read call
mov edx, len ; }
int 80h ; }
mov ebp, 1
setup: ; This section sets up the registers ready for looping
mov [other], ebp
loop: ; This section loops, printing out from zero to the number given
mov eax, 4
mov ebx, 1
mov ecx, [other]
mov edx, len
int 80h
exit: ; Exits the program
mov eax, 1 ; }
mov ebx, 0 ; } System_exit call
int 80h ; }
KDBG에서 단계를 수행하면 몇 가지 오류가 반환됩니다. 비록 인터럽트 나 인터럽트를 받는다. 이유는 모르겠지만 Geany에서 실행할 때 마지막에 0 값을 반환하고 오류없이 실행되기 때문입니다. 왜 작동하지 않습니까?
미리 감사드립니다.
참고 :이 코드는 반복되지 않습니다. 아직 끝나지 않았습니다. 여기서해야 할 일은 숫자 1을 인쇄하는 것입니다.
레이블 이름에 명령어 이름을 사용하면 안됩니다. 나는 '반복'을 의미한다. 그것은 명령입니다. –
'mov ecx, [other]'문제입니다. ecx는 버퍼의 주소를 원합니다! 어쨌든 "1"을 인쇄하지 않으면 ASCII 코드 1 (smileyface)으로 문자를 인쇄합니다. itoa 봐 ... –