블로그 이미지
송시혁

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive





.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dxExitCode:DWORD

INCLUDE io.h     ;io.h를 include 대문자로 사용해야함.

cr    EQU    0dh ;엔터, 왼쪽 아래끝으로 이동하는것. 
Lf    EQU    0ah ;줄바꿈기능.

.STACK 4096 ;STACK영역, 4096은 4바이트. 

.DATA  ;;;;;;;;;;전역변수 ,데이터 영역. 
       
label1      BYTE      "The value is "  ;;;;;;   label1은 변수이름, BYTE는 1byte, word는 4byte형.     
   
                                            ;;;;;;   " "안에 있는 수 만큼 메모리 할당.    

iNumber   BYTE      11    DUP  (?)  ;;;;;마찬가지로 1바이트형 변수 iNumber선언. 11byte를  뒤에 (?)를 아무거나 
                                               ;;;;;;iNumber에 복사한다.      
             BYTE      cr,    Lf,     0    ;;;;;변수이름은 없으나, 3바이트의 메모리를 사용한다.
                                               ;;;;;0을 밑에 code영역을 보면 알겠지만, 
                                               ;;;;;0을 만날때까지 실행된다.     

;;;;;;;여기까지 전역변수 DATA  영역
        

.CODE ;;코드영역
_smart:
        mov      eax, 100        ;;;오늘 배운것중에 핵심부분. 명령어 mov operland eax와 100 여기서는 100을 eax에 대입.
        dtoa     iNumber, eax   ;;;정수를 아스키코드로 바꾸는 명령어 eax가 가지고 있는 값100을 iNumber에 대입.
        output   label1            ;;;laber1을 출력    

        INVOKE   ExitProcess, 0 ;;;종료
        
PUBLIC  _smart ;;;실행파일 이름.



아래는 실행결과.

빨간색 100을 제외한 네모친 부분이 전역변수 iNumnber에 공간이다. 

100까지 포함하여 11개까지 차지한 것. 


이 실행결과는 아래 코드를 추가하여 실행한 모습이다.

label1     BYTE      "The value is "        
iNumber  BYTE      11    DUP  (?)
        BYTE      "ssongsi       "  이부분을 추가한 것.
            BYTE      cr,    Lf,     0












posted by 송시혁