나는 ASM에서 초보자입니다. 간단한 작업을 수행하려고합니다. 1에서 100 사이의 숫자의 합계가 eax
입니다.
예컨대 : 1 + 2 + 3 + .. + 100
1에서 100 사이의 숫자의 합
그래서 여기에 관련 코드 : I가 exe 파일을 디버깅 할 때
XOR eax, eax ;; Set eax to 0
MOV ecx, 100 ;; We will loop 100 times
my_loop:
ADD eax, ecx ;; We add the ecx register value to eax, ecx decreses by 1 every iteration untill he reaches 0
LOOP my_loop
;;Exit the program, eax is the exit code
push eax
call ExitProcess
, eax
이 0되고있는 것은 어떻게 가능합니까?
사실, 값을 확인하기 위해 Windbg를 열지 않고 콘솔에 EAX
의 값을 인쇄하는 쉬운 방법이 있습니까?
당신은 당신의 코드를 많이 표시되지하고 있지만 ss' 나는 당신이 Windows API와 연결되어 있다고 가정합니다. 그래서, 당신은 어떤 정보를 가지고 창을 띄우는 수단으로'MessageBox'에 접근해야합니다. 'invoke'를 사용할 수도 있습니다. – lurker
@mbratch 필자는 masm32와 kernel32를 연결하고 있습니다. 어쨌든 프로그램은 작동해야하고 eax는 실제로 1 + 2 + 3 + .. + 100의 합계를 가져야합니까? – idish
당신은 디버거없이 값을 표시하는 방법에 대한 귀하의 게시물에 물어 보았습니다, 그래서 제 제안이었습니다. 콘솔을 사용한다면'int 21h'를 찾아 볼 수도 있습니다. 왜 디버거가 그 위치 ('push '의 직전이나 직후)에 그것을 보여주지 않는 한'eax'가'0'이 될지 모르겠습니다. – lurker