· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
IntroductionMASM32



#red 문서 작성 요령: @문서작성요령.hwp (28.5 KB)



1. Introduction to MASM32


1.1. Intro


Many remember assembler as a complex and tedious necessity when a high level language failed to deliver in terms of capacity or performance yet it has always been capable of writing full size applications in elegant and efficient ways.

MASM has the capacity to write proper modular code which becomes a necessity as a project becomes larger.

많은 사람들은 어셈블러가 고 수준 프로그래밍 언어가 파일 사이즈와 성능 면에서 제 역할을 하지 못할 때 사용하는 복잡하고 뒤얽힌 필수품 정도로 생각하곤 한다. (하지만) 여전히 이것은 우아하고 효과적인 방법으로 풀 사이즈 어플리케이션 프로그래밍에 사용되어지고 있다.MASM은 프로젝트가 커져가는 상황에서 필수요소인 고유 단위 코드(proper modular code) 작성이 가능하다.

많은 사람들이 어셈블러를 하이 레벨 프로그래밍 언어로 불가능한 파일 사이즈와 성능을 필요로 할 때만 사용되는 어렵고 지루하고 어쩔 수 없이 써야 하는 것으로 생각한다. 하지만 어셈블러는 편리하고 효과적인 방법으로 어플리케이션 프로그램 전체를 프로그래밍하기 위해 사용되고 있다. MASM은 프로젝트가 커질 때 필수적인 proper modular code (적당한 단위로 모듈화한 코드)를 작성할 수 있도록 해준다.
#blue 어셈블러라는 주어가 반복되더라도 다시 써주는 것이 좋다고 합니다. #red 영어의 시제는 한글에서 무시될 때가 많습니다. -- 김기오

Assembler has the freedom to write code ranging from the self imposed structural approach to unrestrained freestyle code, each having their respective advantages. Self imposed modular coding has the advantage of organization, particularly with larger projects where freestyle has its advantages in close range loop optimization code.

자가 구성모듈 코딩은 특히 (freestyle의)대규모 프로젝트에서 큰 루프 내에서의 최적화와 같은 구조적인 이점을 제공한다.

어셈블러는 스스로의 구조를 바꾸는? 형태의 코드부터 제한이 없는 자유로운 스타일의 코드까지 다양한 코드를 작성할 수 있는 자유로움을 가지고 있다. 이러한 코드 형태들은 각각 고유한 장점들이 있다. -- 김기오

Performance to size ratio assembler code uses both approaches which takes advantage of many of the higher level language's efficiency techniques such as code reuse while being able to specifically target speed critical code where it is necessary.

어셈블러 코드는 다른 많은 고 수준 언어의 코드 재사용과 같은 효과적인 기술과 처리속도에 초점을 맞춘 양쪽 모두가 가능하다.

32 bit assembler is both clearer and simpler than the DOS and 16 bit Windows code and is not cursed with the complexity of segment arithmetic. You no longer have to deal with AX:DX pairs for long integers and there is no 64k boundary imposed by the segmented structure of 16 bit software.

32 Bit기반의 assembler 는 MS-DOS와 16 Bit 윈도우 코드보다 쉽고 명확하다. 덕분에 저주받은 세그먼트 연산에서 벗어날 수 있습니다. 더 이상 long integers를 할당하기 위해 AX:DX 쌍과 실랑이를 벌이지 않아도 되며, 16비트 소프트웨어의 64k 메모리 제한도 더 이상 없다.

The complexity of writing 32 bit Windows software is related to the structure of Windows and the sheer range of functions in the API set. It differs from DOS code only in so far as the parameters are passed on the stack rather than in registers as in the DOS interrupts.

(MASM에서) 32비트 윈도우 프로그래밍이 복잡한 이유는 윈도우O/S의 구조가 복잡하고 API집합의 범위가 방대할 뿐이지 DOS와 비교해보면 단지 파라미터를 전달할 때 레지스터 대신에 스택에 파라미터를 전달한다는 것만 다를 뿐이다.

While the sheer range of functions in Window can be a bit intimidating, it also puts in the hands of the assembler language programmer, a massive set of capacities that were never available in DOS.

윈도우 환경에서 제공되는 방대한 기능은 다소 부담이 될 수도 있는 반면, DOS환경에서는 생각하기 힘든 방대한 기능을 제공한다.

One of the advantages of writing in assembler is that it comfortably handles the "C" format of the Windows APIs with no difficulty. Zero terminated strings, structures, pointers, data sizes etc... are all part of writing assembler.

어셈블리 프로그래밍의 장점 중 한가지는 별 어려움 없이 윈도우 API의 “C” 포멧과 별 어려움 없이 핸들링할수 있다는 것이다.


1.2. How does MASM32 work?


It is designed to plug into a computer that has other programming environments set up on it and this places some restrictions on the format. To avoid the problems associated with picking up the wrong link versions and wrong library directory, MASM32 works with specified paths to all of the binary files it needs to build the files.

이것은 다른 개발언어 환경이 설정되어 있는 컴퓨터에 설정되어 있으므로 포맷에 있어서 약간의 제약을 갖는다. 잘못된 링크 버전 지정 오류와 잘못된 라이브러리 오류와 관련된 문제를 피하기 위해, MASM32는 파일빌드에 필요한 모든 이진파일에 대해여 특정경로를 정하여 작업하게 된다.

In the source code, the paths to the library files are specified and in the batch files that are used by the editor to drive the build options, the paths of each binary file is specified as well.

소스들에는 라이브러리파일이 지정된 경로와 빌드옵션을 제어하기 위해서 에디터에서 사용되는 배치파일 그리고 각각의 이진파일의 경로들이 잘 지정되어 있다.

Files from other sources usually do not build from MASM32 without some modification, usually placing the following MASM specific directives at the beginning of the source file will solve most of the problems. The other is to use the "include" & "includelib" syntax for the INCLUDE file and LIBRARIES so that their paths can be found.

다른 소스의 파일들은 보통 MASM32로 어느 정도의 수정 없이는 빌드하지 않는다. 보통 소스파일의 초반부에 다음과 같은 MASM 지시어들을 적어주면 대부분의 문제를 처리할 수 있게 해준다. 나머지들은 INCLUDE파일과 LIBRARY파일을 사용하기 위한 ‘include” 와 “includelib” 문법으로 해당 파일의 경로를 찾을수 있도록 해준다.

      .386                      ; forces 32 bit assembly 
      .model flat, stdcall      ; memory model and calling convention 
      option casemap :none      ; case sensitive code 

MASM32 uses its own version of "windows.inc". It is a file over 800k in size and has a very large set of equates and structures in it for 32 bit windows programming. It should always be put before the system include files and libraries.

MASM32는 해당버전에 포함되어 있는 windows.inc 파일을 사용한다. 이 파일은 800k 사이즈로 32bit 윈도우 프로그래밍을 위한 무척 방대한 equates와 구조체들로 이루어져있다. 이 파일은 항상 system include 파일과 라이브러리 파일 앞에 적혀야 한다.

EXAMPLE 
      include \masm32\include\windows.inc   ; always first 
      include \masm32\include\user32.inc    ; system include 
      include \masm32\include\kernel32.inc  ; file next 
      include \masm32\include\gdi32.inc 
      includelib \masm32\lib\user32.lib     ; matching system 
      includelib \masm32\lib\kernel32.lib   ; libraries after that 
      includelib \masm32\lib\gdi32.lib 

MASM32 version 8 starts with a set of rebuilt include files that are used to build matching libraries at installation so for each library, you use the include file that matches it. To find a function that you need depending on the reference material you are using, look in the system include file to see which file has the prototype for the function and include the file and the matching library.

MASM32 v.8에서는 미리 작성된 include파일을 가지고 시작한다.

Most of the common functions are in the three big system DLLs so if you look in,

    GDI32.INC       ; graphics related functions 
    KERNEL32.INC    ; operating system kernel functions 
    USER32.INC      ; various user interface & other functions 


you will find most of the common functions.

For functions that are not in the main libraries, usually the Microsoft reference material specifies which library the function is in so if you look in the include file for that library, you will find the prototype for it. MASM32 also comes with a dedicated function to library tool called liblist.exe to help locate the function you require in the appropriate library. There are two main reference sources for writing 32 bit assembler in Windows, for the assembler instructions and the general architecture of x86 series processors, the three (3) volume set of PDF files from Intel are the best available and are exhaustively documented in the PIII manual set. There is also a set of manuals for the PIV series of Intel processors. The other is Microsoft reference material. The most common is a help file called "WIN32.HLP" which is now a little out of date but still useful. It is a help file of about 12 meg in size. Later information for Win98/se winME, win2k and XP are available in the PlatformSDK that can be obtained from Microsoft for the cost of the shipping. The MSDN CD set are also useful if you have them available.



제 생각에는 단어들도 문어체에서 쓰는 단어들이 많은 것 같고 문법도 잘 이해가 안되고 해서 정확하게 번역하기 보다는 의미를 파악해서 문장을 새롭게 쓰는게 좋을 것 같습니다. -- 김기오

ID
Password
Join
You will be awarded some great honor.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-01-19 19:39:29
Processing time 0.0078 sec