Tuuna Computer Science

배열 포인터 본문

Assembly

배열 포인터

GuTTe 2018. 6. 11. 19:01
    @pointer1_00401500:                                     ;<= Procedure Start
        PUSH EBP
        MOV EBP,ESP
        AND ESP,0FFFFFFF0h
        SUB ESP,030h
        CALL @pointer1_00401EB0                        ;<= Jump/Call Address Not Resolved
        MOV BYTE PTR SS:[ESP+02Fh],0Ah
        MOV BYTE PTR SS:[ESP+02Eh],014h
        MOV DWORD PTR SS:[ESP+018h],1      ;1,2,3,4를 차례대로 생성한 공간에 값을 넣는다.
        MOV DWORD PTR SS:[ESP+01Ch],2
        MOV DWORD PTR SS:[ESP+020h],3
        MOV DWORD PTR SS:[ESP+024h],4
        LEA EAX,DWORD PTR SS:[ESP+018h]    ; 이차원배열의 시작주소를 잡는것인가(뇌피셜) 그리고 EAX레지스터에 넣는다.
        MOV DWORD PTR SS:[ESP+028h],EAX      ; 값을 메모리에 넣어서 저장 
        MOV EAX,DWORD PTR SS:[ESP+028h]      ;
        ADD EAX,0Ch                                           ; *(parr[1]+1)이라서 그크기만큼 12를 더함 총 변수 크기 16.
        MOV EAX,DWORD PTR DS:[EAX]
        MOV DWORD PTR SS:[ESP+4],EAX            ;
        MOV DWORD PTR SS:[ESP],pointer1_00404000 ; ASCII "%d
"
        CALL printf                                                  ;<= Jump/Call Address Not Resolved
        MOV EAX,0
        LEAVE
 
        RETN                                                           ;<= Procedure End 
Comments