DOS MZ 실행 파일
DOS MZ executable이 글은 검증을 위해 추가 인용문이 필요합니다. : MZ 파일 · · · JSTOR (2015년 4월 (이 메시지 및 ) |
파일 이름 확장자 | |
---|---|
인터넷 미디어 유형 | application/x-disc, application/x-msdos-program |
매직 넘버 | MZ 또는 ZM |
포맷의 종류 | 바이너리, 실행 파일 |
확장처 | 새로운 실행 파일 선형 실행 파일 휴대용 실행 파일 |
DOS MZ 실행 파일 형식은 에서 사용되는 실행 파일 형식입니다.DOS의 EXE 파일
파일은, 파일의 선두에 있는 ASCII 문자열 「MZ」(16 진수:4D 5A)로 식별할 수 있습니다."MZ"는 [1]MS-DOS의 주요 개발자 중 한 명인 마크 즈비코프스키의 머리글자입니다.
MZ DOS 실행 파일은 COM 실행 파일 형식보다 최신이며 COM 실행 파일과는 다릅니다.DOS 실행 파일 헤더에는 재배치 정보가 포함되어 있어 여러 세그먼트를 임의의 메모리 주소로 로드할 수 있으며 64k보다 큰 실행 파일을 지원합니다.그러나 이 포맷에는 여전히 비교적 낮은 메모리 제한이 필요합니다.이러한 제한은 나중에 DOS 익스텐더를 사용하여 무시되었습니다.
세그먼트 처리
DOS에 의해 실행되는 EXE 프로그램의 환경은 프로그램 세그먼트 접두사에 있습니다.
EXE 파일에는 일반적으로 코드, 데이터 및 스택에 대해 별도의 세그먼트가 있습니다.프로그램 실행은 코드 세그먼트의 주소 0에서 시작되며, 스택 포인터 레지스터는 헤더 정보에 포함되는 임의의 값으로 설정됩니다(따라서 헤더가 512바이트 스택을 지정하면 스택 포인터는 200h로 설정됩니다).필요에 따라 별도의 스택세그먼트를 사용하지 않고 단순히 스택의 코드세그먼트를 사용할 수도 있습니다.
DS(데이터 세그먼트) 레지스터는 일반적으로 CS(코드 세그먼트) 레지스터와 동일한 값을 포함하며 EXE 파일이 초기화될 때 데이터 세그먼트의 실제 세그먼트주소로 로드되지 않습니다.일반적으로 프로그래머가 직접 설정해야 합니다.
무브 AX, @데이터. 무브 DS, AX
종료
원래의 DOS 1.x API에서는 DS 레지스터가 프로그램 종료 시 PSP와 함께 세그먼트를 가리키는 것도 필요했습니다.이것은 다음의 지시에 의해서 행해졌습니다.
밀어넣다 DS XOR AX, AX 밀어넣다 AX
프로그램 종료는 RETF 명령에 의해 실행되며, RETF 명령은 스택에서 PSP와 함께 원래 세그먼트주소를 취득한 후 INT 20h 명령을 포함하는 주소 0으로 점프합니다.
DOS 2.x API는 프로그램 시작 시 PSP 세그먼트 주소를 저장할 필요가 없는 INT 21h Function 4Ch라는 새로운 프로그램 종료 함수를 도입했으며 마이크로소프트는 이전 DOS 1.x 방식을 사용하지 말 것을 권고했다.
호환성.
MZ DOS 실행 파일은 DOS 및 Windows 9x 기반 운영 체제에서 실행할 수 있습니다. 32비트 Windows NT 기반 운영 체제는 내장 가상 DOS 시스템을 사용하여 실행할 수 있습니다(일부 그래픽 모드는 지원되지 않습니다).64비트 버전의 Windows에서는 실행할 수 없습니다.이러한 실행 파일을 실행하는 다른 방법으로는 DOSBox와 DOSMU가 있습니다.
MZ DOS 실행 파일은 Digital Mars Optlink, MS 링커, VALX 또는 Open Watcom의 WLINK와 같은 링커에서 생성할 수 있으며 FASM에서 직접 생성할 수도 있습니다.
「 」를 참조해 주세요.
추가 정보
- Paul, Matthias R. (2002-10-07) [2000]. "Re: Run a COM file". Newsgroup: alt.msdos.programmer. Archived from the original on 2017-09-03. Retrieved 2017-09-03.
- [1]
레퍼런스
- ^ Windows 내부: Win32 휴대용 실행 파일 포맷 상세보기 - MSDN Magazine, 2002년 2월 Wayback Machine에서 2018-07-11 아카이브 완료.모든 PE 파일은 작은 MS-DOS 실행 파일로 시작합니다.PE 파일의 첫 번째 바이트는 IMAGE_DOS_HEADER라고 불리는 기존의 MS-DOS 헤더로 시작합니다.중요한 값은 e_magic과 e_lfanew뿐입니다.e_magic 필드(WORD)를 0x5A4D 값으로 설정해야 합니다.ASCII 표현에서 0x5A4D는 MS-DOS의 원조 설계자 중 한 명인 Mark Zbikowski의 이니셜인 MZ입니다.