[ASM] 프로그램 진입을 위한 원거리 프로시저

gurumong의 이미지

IBM PC 어셈블리 프로그래밍 (PETER ABEL저, 5판) 책을 보고있습니다

첫번째 EXE 코드를 설명하기에 MAIN 프로시저는 프로그램의 진입점이기 때문에 원거리(FAR)여야 한다고 설명하고 있습니다
그런데 아래의 두번째 COM프로그램의 코드를 설명할때에는 책에서 설명한 이 원칙이 지켜지지 않고
그냥 코드의 레이블을 진입점으로 사용하고 있습니다
이런 차이를 어떻게 이해 해야 할까요?

	PAGE 60,132
TITLE	A04ASM1 Segments for an .EXE Program
; ------------------------------------------
STACK	SEGMENT PARA STACK 'Stack'
STACK	ENDS
; ------------------------------------------
DATA	SEGMENT PARA 'Data'
DATA	ENDS
; ------------------------------------------
CODESEG	SEGMENT PARA 'Code'
MAIN	PROC FAR ;프로그램 진입점을 위한 원거리 프로시저!!
	...
	...
	...
MAIN	ENDP
CODESEG	ENDS
	END MAIN ;진입점을 MAIN프로시저로 지정!

TITLE	A05COM2 COM program to move and add data
	.MODEL TINY
	.CODE
	ORG	100H
BEGIN:	JMP	MAIN ;프로시저가 아닌 특정 코드의 레이블을 진입지점으로...
;-----------------------------------------------
FLDD	DW	215
FLDE	DW	125
FLDF	DW	?
;-----------------------------------------------
MAIN	PROC NEAR
	MOV	AX,FLDD
	ADD	AX,FLDE
	MOV	FLDF,AX
	MOV	AX,4C00H
	INT	21H
MAIN	ENDP
	END	BEGIN ;진입점을 BEGIN 레이블 주소로 지정!

swirlpotato의 이미지

정답은 아니지만 아마 com과 exe의 실행 방식의 차이때문인 것 같습니다.
com은 하나의 세그먼트에 넣기 때문에 로더로부터 실행 될 때 같은 세그먼트내의 오프셋 이동으로 인하여 near이어도 되고 exe는 여러 세그먼트를 이용 할 수도 있기때문에 로더의 재배치에 의해 main함수가 저장된 세그먼트와 엔트리 포인트의 세그먼트 사이에 이동이 필요 할 수도 있기 때문에 far로 main을 작성 한 것 같습니다.

정답은 아닙니다만 아마도 그런 이유때문에 그렇게 작성한 것 같습니다.

완벽한 정답은 아랫분께서 말씀해 주시겠죠

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.