본문 바로가기
코스웨어/12년 내장형하드웨어

오늘 수업 한 First.asm 주석 과 소스

by 알 수 없는 사용자 2012. 8. 24.
728x90
반응형

===========================원본=========================== 

.386
.MODEL FLAT


ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE IO.h

cr EQU 0Dh
Lf EQU 0Ah


.STACk 4096

.DATA

number1 DWORD ?
number2 DWORD ?
prompt1 BYTE "Enter First Number :", 0
prompt2 BYTE "Enter Second Number :", 0
string  BYTE    40 DUP (?)
labe1 BYTE cr, Lf,  "The Sum is "
SUM BYTE 11 DUP (?)
 BYTE cr, Lf, 0
.CODE
_start:
 output  prompt1
 input   string, 40
 atod string
 mov number1, eax

 output  prompt2
 input string, 40
 atod string
 mov number2, eax 
 
 mov eax, number1
 add eax, number2
 dtoa  sum, eax
 output labe1
 
 INVOKE ExitProcess, 0

PUBLIC  _start

END

 

===========================주석=========================== 

 

 

.386   // 386컴퓨터  이상 eax 를 쓰기 위해서는 최소 386 이상 을 써야함
.MODEL FLAT     // 메모리를 segment 말고 메모리 주소자체로 접근하기 위해 사용


ExitProcess//함수의 이름반환형 설명 초기(프로토타입)=> PROTO NEAR32 stdcall, //반환형 => dwExitCode:DWORD // 함수선언

INCLUDE IO.h // io.h 불러드임 매크로 함수르 씀

cr EQU<-동기헥사값 디파인 #define  0Dh <- 아스키 코드값
Lf EQU   0Ah


.STACk 4096

.DATA

number1 DWORD ?<- 초기값없다
number2 DWORD ?
prompt1 BYTE<-1byit "Enter First Number :", 0 <-1byit 씩 각각 넣는다
prompt2 BYTE "Enter Second Number :", 0
string  BYTE    40 <- 40byit  DUP<-복사 (?) <- 40바이트를 확보 한다
labe1 BYTE<-엔터 치지고 시작  cr, Lf,  "The Sum is "
SUM BYTE 11 DUP (?)
 BYTE cr, Lf, 0 //이름 없는 cr/Lf/0 <- 해서 3바이트 합친 단락
.CODE
_start: //_ <ㅡ이거 실제로사라짐  start 만 남음 
 output  prompt1
 input   string, 40 // 호출 해주는거임 40바이트에 저장
 atod string
 mov number1, eax

 output  prompt2
 input string, 40
 atod string
 mov number2, eax 
 
 mov eax, number1//맨처음 eax 들어감
 add eax, number2//두번쨰 eax 들어감
 dtoa  sum, eax //DBGU 에 dtoa eax 문자열로 바꾸면 sum 에 들어 간다 그럼 sum 에 바코드 숫자가 들어감
 output labe1
 
 INVOKE ExitProcess, 0// 원래 레지스터  돌려주는 파일 주석 처리하면 에러남 엑시터 제로 함수를 호출 exit(0); 이랑 똑같은기능

PUBLIC  _start//외부에서 start 스타트를 하는걸 보이기 위해서 써놓은거

END //어셈 블리를 꺼내겠다는 말임

728x90