·L³n©Ò¶}µoªº DOS §@·~¨t²Î¤¤¡A³Ì¬°±`¨£ªº¥i°õ¦æÀɦ³¨âºØ¡A¨ä°ÆÀɦW¤À§O¬O COM »P EXE¡C«e´X³¹©Ò¤¶²Ðªº¬O COM ( ¬O command ªº·N«ä )¡A·í¥¦Àx¦s¦bºÏºÐ¤ù®Éªº¤º®e©M¸ü¤J¨ì°O¾ÐÅ骺¤º®e¬O¤@¼Ò¤@¼Ë¡F¦pªG¤£¥Î¯S®íªº¤è¦¡»s§@¡Aµ{¦¡½X»P¸ê®Æ¦b¦P¤@°Ï¬q¤º¡A¬GÀɮפj¤pµLªk¶W¹L 64KB¡F¦]¦¹¥u¯à»s§@¤p«¬µ{¦¡¡A³o¤j¤jªº¨î COM ¥i°õ¦æÀɪº¥\¯à¡C
¦Ó³o¤@³¹n¤¶²Ðªº¬O EXE ¥i°õ¦æÀÉ¡AEXE ¬O^¤å execute ªº·N«ä¡CEXE Àɪºµ{¦¡½X¤Î¸ê®Æ©ñ¦b¤£¦P°Ï¬q¡A¬G¤j¤p¥i¥H¶W¹L 64KB¡C·í¥¦Àx¦s¦bºÏºÐ¤ù®É¡A°£¤Fµ{¦¡½X¤Î¸ê®Æ¥~¡AÁÙ²K¥[¤F¤@ÓºÙ¬°ÀÉ®×ÀYªí ( file header ) ªº¸ê®Æ¡C¦Ó§@·~¨t²Î¸ü¤J EXE ¥i°õ¦æÀɮɡA·|®Ú¾ÚÀÉ®×ÀYªí©Ò°O¸üªº¸ê®Æ¶i¦æ°t¸m¡AµM«á¤~°õ¦æ¡C¨Ì¾ÚÀÉ®×ÀYªíªº¤£¦P¡AEXE Àɦ³³\¦hºØ®æ¦¡¡G
¥»¨Ó¦b DOS §@·~¨t²Î¤Uªºì¥Íµ{¦¡ ( native program ) ¬O¡uMZ¡v®æ¦¡¡A¦ý¬O·í·L³nµo®i Windows 1.x¡ã3.x ®É¡A¦pªGµLªk°õ¦æ MZ ®æ¦¡ªº EXE¡A«K·|¥¢¥h³\¦h°Ó¾÷¡A¦]¦¹ Windows 1.x¡ã3.x ¤]¯à°õ¦æ DOS ªºì¥Íµ{¦¡¡A³o¤]¬O¤@ºØ¡u¦V¤U¬Û®e¡v¡C¦Ó«á¨ì¤F 32 ¦ì¤¸ªº®É¥N¡AWindows 95¡ã10 ¤]¬O¦p¦¹¡A¥¦Ì¤]³£¯à°õ¦æ MZ »P NE ®æ¦¡ªº EXE ÀÉ¡C¨ì¤F 64 ¦ì¤¸ªº Windows ®É¡AÁÙ¦b¨Ï¥Î 16 ¦ì¤¸µ{¦¡ªº¤H¤j·§¤w¸g«Ü¤Ö¤F¡A·L³n¨M¤ß©ß±óÂÂ¥]µö¡A¤~¤£¤ä´© MZ ®æ¦¡¡A¦ýÁÙ¬O¤£´±¤£¤ä´© PE ®æ¦¡ªº°õ¦æÀÉ¡C¤p¤ì°¸±N³o¨Ç EXE ¥i°õ¦æÀÉ¡A»P¤ä´©ªº§@·~¨t²Î»s§@¦¨¤Uªí¡G
EXE ®æ¦¡ | ¤ä´©ªº§@·~¨t²Î |
MZ | DOS¡BWindows 1.x¡ã3.x¡B32 ¦ì¤¸ªº Windows 95/98/Me/XP/Vista/7/8.x/10 |
NE | Windows 1.x¡ã3.x¡B32 ¦ì¤¸ªº Windows 95/98/Me/XP/Vista/7/8.x/10 |
PE | 32 ¦ì¤¸¤Î 64 ¦ì¤¸ªº Windows 95/98/Me/XP/Vista/7/8.x/10 |
PE¡Ï | 64 ¦ì¤¸ªº Windows 95/98/Me/XP/Vista/7/8.x/10 |
¦³¤F¤Wªí¤Î«e¤@¬q©Ò±ÔzªºÆ[©À´Nª¾¹D¡AMZ ®æ¦¡ªº EXE ¥i°õ¦æÀÉ¡A¯à¦b 32 ¦ì¤¸ªº Windows 7 §@·~¨t²Î¤U°õ¦æ¡A¦ý¤£¯à¦b 64 ¦ì¤¸ªº Windows 7 §@·~¨t²Î¤U°õ¦æ¡C¦Ó PE¡Ï ®æ¦¡ªº EXE ¥i°õ¦æÀÉ¥u¯à¦b 64 ¦ì¤¸ªº Windows 7 §@·~¨t²Î¤U°õ¦æ¡A¦Ó¤£¯à¦b 32 ¦ì¤¸ªº Windows 7 §@·~¨t²Î¤U°õ¦æ¡C
ÁöµM EXE Àɦ³³\¦h¤£¦Pªº®æ¦¡¡A¦ý¬O¦b³oùؤp¤ì°¸¶È¤¶²Ð¦p¦ó¼¶¼g MZ ®æ¦¡ªº EXE ¥i°õ¦æÀÉ¡CMZ ®æ¦¡ªº EXE ¥i°õ¦æÀÉ»P COM ¥i°õ¦æÀɳ̤jªº¤£¦P¡A´N¬O EXE ¦³¦hӰϬq¡C
¦b DOS ùØ¡A°Ï¬q ( segment ) ¬O«ü¤@¶ô³sÄòªº°O¾ÐÅé¡A¨ä¤j¤p³Ì¦h¥u¦³ 64KB¡A¤]´N¬O 65536 Ӧ줸²Õ¡C°Ï¬q¶}©lªº¦ì§}¨Ã«D¥ô·Nªº¦ì§} ( ³oùتº¦ì§}¬O«ü¡u¹êÅé¦ì§}¡v¡A¤£¬O¡u°Ï¬q¡G°¾²¾¦ì§}¡v¸Ô²Ó±¡§Î¨£²Ä¤@³¹ )¡A¥u¦³¯à³Q 16 ¾ã°£ªº¦ì§}¤~¯à¬O°Ï¬q¶}©l¦ì§}¡A¥H¤Q¤»¶i¦ìªí¥Üªº¸Ü¡A´N¬O¹êÅé¦ì§}³Ì¥kÃ䨺¤@¦ì¥²¶·¬O¡u0¡v¡A³o¼Ëªº¦ì§}ºÙ¬°¡u¸`¡v( paragraphs )¡C
MZ ®æ¦¡ªº EXE ¥i°õ¦æÀɦܤ֥]§t¤TӰϬq¡A¤À§O©ñµÛµ{¦¡½X¡B¸ê®Æ»P°ïÅ|¡A¦]¦¹¦b¼¶¼g²Õ¦X»y¨¥®É¡A´Nn¤À§O«Å§i³o¤TӰϬq¡C«Å§i°Ï¬qªº¤è¦¡¦³¨âºØ¡G①²©ö¤è¦¡»P②§¹¾ã¤è¦¡¡C¥ý»¡²Ä¤@ºØ¡C¥H²©ö¤è¦¡«Å§i°Ï¬q®É¡A¥un¼g¥X¤@¨Ç°²«ü¥O¡A²ÕĶ¾¹·|¦Û°Ê¨Ï¥Î¹w³]ªº°Ï¬q¦WºÙ¤ÎÄÝ©Ê¡A°£¤F¤è«K¤§¥~¡A²©öªº°Ï¬q«Å§i¯à·f°t·L³nµo°âªº°ª¶¥»y¨¥½sĶ¾¹¡A¦]¦¹«Ü®e©ö»P¤§²£¥Íªº¥ØªºÀÉÁpµ²¡C( ¨£µù¤@ )
¦b²Ä¥|³¹®É¡A«Å§iµ{¦¡½X°Ï¬q»P¸ê®Æ°Ï¬q¡A¤À§O¥Î .CODE »P .DATA °²«ü¥O¡F¦Ó°ïÅ|°Ï¬q«h¨Ï¥Î .STACK °²«ü¥O¡C³o¤TÓ°²«ü¥O»yªk¦p¤U¡G
.CODE ¡i°Ï¬q¦WºÙ¡j .DATA .STACK ¡i°ïÅ|¤j¤p¡j
«Å§iµ{¦¡½X°Ï¬q¥Î .CODE °²«ü¥O¡A«á±±µµÛªº°Ï¬q¦WºÙ¥i¥H¬Ù²¤¡A¦pªG¬Ù²¤¡A¦b TINY¡BSMALL¡BCOMPACT¡BFLAT °O¾ÐÅé¼Ò¦¡®É¡Aµ{¦¡½X°Ï¬qªº¤º©w¦WºÙ¬O¡u_TEXT¡v¡F¦pªG¬O MEDIUM¡BLARGE¡BHUGE ¼Ò¦¡®É¡A¤º©wªº¦WºÙ¬O¡u°Ï¬q¦WºÙ_TEXT¡v¡C
©w¸q¸ê®Æ°Ï¬q¥Î .DATA °²«ü¥O¡A¤£½×°O¾ÐÅé¼Ò¦¡¬°¦ó¡A¨ä¦WºÙ³£¬O¡u_DATA¡v¡C
©w¸q°ïÅ|°Ï¬q¥Î .STACK °²«ü¥O¡A«á±¥i¥H±µ°ïÅ|¤j¤p¡A¨ä³æ¦ì¬O¦ì¤¸²Õ¡A¦pªG¬Ù²¤ªº¸Ü¡A¤º©wȬO 1024 ¦ì¤¸²Õ¡C¹ï¤j³¡¤Àªºµ{¦¡¦Ó¨¥¡A1024 Ӧ줸²Õªº°ïÅ|¤w¸g¨¬°÷¤F¡C¤£½×°O¾ÐÅé¼Ò¦¡¬°¦ó¡A°ïÅ|°Ï¬qªº¦WºÙ³£¬O¡uSTACK¡v¡C°ïÅ|ªº¦ì§}·|¨ü¨ì¡u.MODEL¡vªº¼vÅT¡A¦³Ãö¡u.MODEL¡vªº³]©w½Ð°Ñ¦Ò²Ä¥|³¹¡C¥Dnªº¬O°ïÅ|¦³¨âºØ©Ê½è¡GNEARSTACK »P FARSTACK¡A«eªÌªí¥Ü°ïÅ|°Ï¬q»P¸ê®Æ°Ï¬q¦b¦P¤@°Ï¬q¡F«áªÌªí¥Ü°ïÅ|°Ï¬q»P¸ê®Æ°Ï¬q¦b¤£¦P°Ï¬q¤º¡C
©w¸q¦n¤Fµ{¦¡½X¡B¸ê®Æ¡B°ïÅ|¤TӰϬq¤§«á¡AÁÙn§â°Ï¬q¼È¦s¾¹¤À§O«ü¦V³o¤TӰϬqªº¦ì§}¡A¤]´N¬On³]©w CS¡BDS¡BSS ¤TӰϬq¼È¦s¾¹¤§È¡C§â CS ¼È¦s¾¹¤§È³]¬°µ{¦¡½X°Ï¬qªº¦ì§}¡A¬O¥Ñ DOS ¨t²Î¨Ó¤À°tªº¤£¥Î§Ú̷дo¡A§ÚÌn¾á¤ßªº¬O DS¡BSS ¤§È¶·¥Ñµ{¦¡³]©w¡A³Ì²³æªº¤èªk¬O¨Ï¥Î .STARTUP °²«ü¥O§Y¥i¡C
ÁöµM»¡¤@ӰϬq³Ì¦h¥i¹F 64KB ªº¤j¤p¡A¦ý¹ï©ó¤j¦h¼Æ¤p«¬µ{¦¡¦Ó¨¥¡A³£µLªk¹F¨ì¡A¤×¨ä¬O°ïÅ|°Ï¬q¡C¦pªG¸ê®Æ°Ï¬q¤j¤p»P°ïÅ|°Ï¬q¤j¤p¥[°_¨Ó¤£¶W¹L 64KB¡A¨º»ò°²¨Ï§â¥¦Ì©ñ¦b¦P¤@ӰϬq¡A¤]´N¬O DS »P SS ¬Û¦P¡A¦P®É¤p¤ßªºÅý SP ¤£·|Âл\±¼¨ì¯u¥¿¦s©ñ¸ê®Æªº¦a¤è ( ÁÙ°O±o°ïÅ|°Ï¬q¬O¥Ñ°ª¦ì§}¦V§C¦ì§}¨Ï¥Î )¡A¨º»ò§ÚÌ´N¯à¥Î DS:BX ª½±µ¦s¨ú°ïÅ|¡A¤Ï¹L¨Ó¤]¥i¥H¥Î SS:SP ª½±µ¦s¨ú¸ê®Æ¡C¹³³o¼Ëªº¸ê®Æ°Ï¬q©M°ïÅ|°Ï¬q¡A¥iµø¬°¤@Ó¸s²Õ¡AºÙ¬°°Ï¬q¸s²Õ ( DGROUP )¡C
¦Ó .STARTUP ´N¬O¬°¤F¹F¨ì³oӥتº¤S¯à²¤Æµ{¦¡³]p®vªº¤u§@¡C©³¤U¤p¤ì°¸´NÁ|¤U±ªº hellow1.asm ¬°¨Ò¤l¨Ó»¡©ú .STARTUP ¦p¦ó¿ì¨ìªº¡G
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 |
.MODEL SMALL,C
.386
.STACK
;*******************************************************************************
.DATA
msg DB "Hellow, World.$"
;*******************************************************************************
.CODE
.STARTUP
mov dx,OFFSET msg
mov ah,9
int 21h
.EXIT 0
;*******************************************************************************
END |
¥Î¡uml hellow1.asm¡v²ÕĶ¨Ã³sµ²¦¨¥\«á¡A¥Î¡usymdeb hellow1.exe¡v¸ü¤J¡AÆ[¬Ý¤@¶}©l¼È¦s¾¹ªºªì©lȤΤϲÕĶªºµ²ªG¬O¡G
E:\DOS\EXE>symdeb hellow1.exe [Enter] Microsoft (R) Symbolic Debug Utility Version 4.00 Copyright (C) Microsoft Corp 1984, 1985. All rights reserved. Processor is [80286] -r [Enter] AX=0000 BX=0000 CX=002B DX=0000 SP=0400 BP=0000 SI=0000 DI=0000 DS=1543 ES=1543 SS=1556 CS=1553 IP=0000 NV UP EI PL NZ NA PO NC 1553:0000 B85415 MOV AX,1554 -u 0 1a [Enter] 1553:0000 B85415 MOV AX,1554 1553:0003 8ED8 MOV DS,AX 1553:0005 8CD3 MOV BX,SS 1553:0007 2BD8 SUB BX,AX 1553:0009 C1E304 SHL BX,04 1553:000C 8ED0 MOV SS,AX 1553:000E 03E3 ADD SP,BX 1553:0010 BA0C00 MOV DX,000C 1553:0013 B409 MOV AH,09 1553:0015 CD21 INT 21 1553:0017 B8004C MOV AX,4C00 1553:001A CD21 INT 21 -
¹ï·Óì©lµ{¦¡¡A¤W±ÂŦrªºµ{¦¡´N¬O .STARTUP §@¥Î«á²K¥[ªºµ²ªG¡C²Ä¤@¦æ¬O§â 1554H ²¾¤J AX¡A³o 1554H ¨ä¹ê´N¬O¸ê®Æ°Ï¬qªº¦ì§}¡A³o¬O¥Ñ DOS ¥H¤Î EXE ªºÀÉ®×ÀYªí¦@¦P¨M©wªº¡A¨Ã¤£¬O§Ú̩ү౱¨îªº¡C°ïÅ|ªº¦ì§}³q±`¤ñ¸ê®Æ°Ï¬q°ª¡A¦]¦¹ SS ªºÈ«h¬O¥Ñ¸ê®Æ°Ï¬qªº¤j¤p¨M©w¡C¹³ hellow1.exe ªº¸ê®Æ°Ï¬q«e± 12 Ó ( ¨äµ{¦¡½X¥i¥H¥Ñµ{¦¡½X°Ï¬q 1553:0010 ³B±oª¾ ) ¦ì¤¸²Õ¨S¨Ï¥Î¡A¯u¥¿ªº¸ê®Æ¦³ 15 Ӧ줸²Õ ( §Y msg ¦r¦ê¤j¤p )¡A¦]¦¹¸ê®Æ°Ï¬q¹ê»Ú¤W¦³ 27 Ӧ줸²Õ¡CÁÙ°O±o«e±»¡¹L¨CӰϬq°_©lªº¹êÅé¦ì§}¥²¶·¬O 16 ªº¾ã¼Æ¿¡A27 °£¥H 16 ¬O 1 ¾l 11¡A¦]¦¹n¥Î¨âÓ¸`¨Ó®e¯Ç¡C©Ò¥H SS ¤§È¤ñ AX ¦h 2¡A¬G¤@¶}©l¡ASS ¬° 1556H¡C
¦A¬Ý¾í¦â¦rªº SP Ȭ° 400H¡A´«ºâ¦¨¤Q¶i¦ì¬O 1024¡A¥ç§Y .STACK ªº¹w³]È¡Cºî¦X¥H¤W©Ò»¡¡A¦pªG²{¦bn§â SS ³]¦¨©M DS ¤@¼Ë¡A¦P®É¤S¤£¯à§âÂмgì¨Óªº¸ê®Æ¡A¦]¦¹ SP ¥²¶·¦A¦h¥[¤@¨Ç¡C¨º»òn¥[¤W¦h¤Ö©O¡Hµª®×«Ü©úÅã¡A´N¬O¸ê®Æ°Ï¬qªº¤j¤p¡A¦P®É¤Sn²Å¦X¤@ӰϬq¥²¶·¥Ñ¡u¸`¡vªº¦ì§}¶}©l¡AÅãµM´N¬O 20H ¤F¡C
ÁA¸Ñ¤F³oÓ¹Lµ{¡A.STARTUP ©Ò°µªº¨Æ±¡´N«Ü²³æ¤F¡Aº¥ý§â DS ³]©w¸ê®Æ°Ï¬q©Ò¦b¦ì§} ( ¨äµ{¦¡½X¦bµ{¦¡½X°Ï¬qªº 1553:0000¡ã1553:0003 )¡A±µ¤U¨Óªº¨â¦æºâ¥X¸ê®Æ°Ï¬q¦û¤F¦h¤Ö¸`¡AµM«á 1553:0009 ³B§â¸`¼¥H 16 ±o¨ì¦û¤F¦h¤Ö¦ì¤¸²Õ¡AÂŦrªº³Ì«á¨â¦æ´N¬O³]©w¦n·sªº SS:SP¡C
¦pªGµ{¦¡¨Ï¥Î .STARTUP ¨Ó²¤Æªì©lµ{¦¡¡A¨º»ò¦bì©lµ{¦¡µ²§Àªº END °²«ü¥O¥i¥H¤£¥²«ü©wµ{¦¡ªº¶i¤JÂI¡A§Y¨Ï¼g¥X¨Ó¤]·|³Q²ÕĶ¾¹©¿²¤¡C²z¥Ñ«Ü²³æ¡A¬JµM¤w¸g«ü©w .STARTUP¡A´Nªí¥Üµ{¦¡ªº¶i¤JÂI´N¦b³o¨à¤F¡C
Æ[¹îì©lµ{¦¡²Ä 13 ¦æ¡A³o¬O¤@Ó·sªº°²«ü¥O¡u.EXIT 0¡v¡A¥¦ªº»yªk¨ä¹ê¬O
.EXIT value
value ºÙ¬°µ²§ô½X ( exit code )¡A¬O¤@Ӧ줸²Õ¤j¤pªº¼ÆÈ¡A¥ç§Y value ªº½d³ò¥²¶·¦b 0¡ã255 ¤§¶¡¡ADOS ªº§å¦¸ÀÉ ( batch file ) ¥i¥H§Q¥Î³oÓ°h¥X½X¶i¦æ³B²z¤u§@¡C¦A¹ï·Óì©l½X¤Î¤Ï²ÕĶµ²ªG¡A·|µo²{ .EXIT ·|²K¥[ÃB¥~ªºµ{¦¡½X¡A¡uMOV AX,4C00¡v»P¡uINT 21H¡v¡A«Ü©úÅã³o¬O¤@Ó DOS ªA°Èµ{¦¡¡A¨ä¥\¯à¬Oµ²§ôµ{¦¡¡A±N±±¨îÅv¤ÏÁÙµ¹ DOS §@·~¨t²Î¡C
µ²§ôµ{¦¡¡A§â±±¨îÅvÁÙµ¹ DOS ¿é¤J¡GAH¡×4C ¡@¡@¡@AL¡×°h¥X½X °õ¦æ¡GINT 21
©Î³\¦³¤H·|°Ý¡A¬°¦ó¤£¹³¥H«e»s§@ COM ÀɮɡA¨Ï¥Î¡uINT 20H¡v¨Óµ²§ôµ{¦¡©O¡Hì¦]¬O¦]¬°¦b EXE ÀÉ°õ¦æ®É¡A³q±`·|§ïÅÜ DS¡A¤]´N¬O»¡ DS ¤w¸g¤£¬Oì¨Ó DOS ¥æµ¹µ{¦¡ªº¼ÆȤF¡A©Ò¥H EXE Àɤ£¥Î¡uINT 20H¡vµ²§ôµ{¦¡¡C¨º»ò¡ACOM ÀɬO§_¥i¥H¥Î AH¡×4CH/INT 21H µ²§ôµ{¦¡©O¡Hµª®×¬O¥i¥Hªº¡A§A¥i¥H¦Û¦æ¸Õ¸Õ¡C
¤W±ªºµ{¦¡¬[ºc¡A¥i¥H»¡¬O©Ò¦³¤p«¬µ{¦¡ªº½d¥»¡A¦]¦¹¤p¤ì°¸¯S§O¼g¦b¤U±¡G
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16 |
.MODEL SMALL,C
.386
.STACK
;*******************************************************************************
.DATA
;¦s©ñ¸ê®Æªº¦a¤è
;*******************************************************************************
.CODE
;-------------------------------------------------------------------------------
;¦s©ñ°Æµ{¦¡ªº¦a¤è
;-------------------------------------------------------------------------------
.STARTUP
;¦s©ñµ{¦¡½Xªº¦a¤è
.EXIT value
;*******************************************************************************
END |
¥Î§¹¾ãªº¤è¦¡«Å§i°Ï¬q®É¡A¥²¶·¨Ï¥Î¤@¹ï SEGMENT/ENDS °²«ü¥O¡A¥¦ªº»yªk¬O¡G
name SEGMENT [[align]] [[READONLY]] [[combine]] [[use]] [['class']] statements name ENDS
statements ¬O¦b SEGMENT »P ENDS ¤§¶¡ªºµ{¦¡½X©Î¸ê®Æ¡A³o¨Çµ{¦¡½X©Î¸ê®Æ´N¬O¸Ó°Ï¬qªº¤º®e¡C
name ¬O°Ï¬q¦WºÙ¡A¥i¦Û¥Ñ³]©w¦ý¤£¥i¥H¬O¼È¦s¾¹¦WºÙ¡B«ü¥O¦WºÙµ¥µ¥²ÕĶ¾¹«O¯d¦r¡C¦bì©lµ{¦¡¤¤¡A¦P¦WºÙªº°Ï¬q§Y¨Ï¤À¶}¨Ó¼g¡A¤¤¶¡¹jµÛ¨ä¥L°Ï¬q¡A³sµ²¾¹ÁÙ¬O·|§â¥¦Ì¦X¨Ö¦¨¦P¤@ӰϬq¡C¦pªG§Aªºµ{¦¡¬O¥Ñ³\¦h¼Ò²Õ²Õ¦¨ªº¤jµ{¦¡¡A¤£¦P¼Ò²Õ¤º¦pªG¦³¬Û¦P¦WºÙªº°Ï¬q¤]·|³Q³sµ²¾¹¦X¨Ö¦¨¦b¦P¤@°Ï¬q¤º¡A°£«D combine ³]¬° PRIVATE¡A´N¤£·|¦X¨Ö¦P¦WºÙªº°Ï¬q¡C
align ¬O±Æ¦C§Î¦¡¡A¬O«ü°Ï¬q°_©l¦ì§}ªº³W«h¡A¥i¥H¬O¤U±´XºØ§Î¦¡¡G
READONLY ¬OÅý²ÕĶ¾¹±N¦¹°Ï¬q³]¬°°ßŪ°Ï¬q¡A·N«ä¦b³o°Ï¬qªº¸ê®Æ¥u¯àŪ¨ú¤£¯à¼g¤J¡C²ÕĶ¾¹·|Àˬdì©l½X¤ºªºµ{¦¡¦³¨S¦³±N¸ê®Æ¼g¤J³oӰϬq¤º¡A¦pªG¦³´Nµo¥Í¿ù»~¡C³o¦b³]p«OÅ@¼Ò¦¡ªºµ{¦¡©M³]p¦³Ãö ROM ªºµ{¦¡®É«Ü¦³¥Î¡CREADONLY ¥i¥H¬Ù²¤¡Aªí¥Ü¦¹°Ï¬q¥iŪ¥i¼g¡C
combine ¬O«ü¦X¨Ö§Î¦¡¡A¬O«ü¥Ü³sµ²¾¹¦p¦ó³B²z¤£¦P¼Ò²Õªº°Ï¬q¡A¥i¥H¬O¤U±´XºØ±¡§Î¡G
use ¬O³]©w°Ï¬q¤ºªº°¾²¾¦ì§}¥H¤Î¹w³]ªº¹Bºâ¤¸¬O 16 ¦ì¤¸©Î 32 ¦ì¤¸¡C¦b»¡©ú use ¤§«e¡AÀ³¸Ón¥ýª¾¹D¡AMASM 6.11 ¤£¶È¯à¼¶¼g DOS µ{¦¡¡A¤]¯à¼¶¼g 32 ¦ì¤¸ªº Windwos µ{¦¡¡C«eªÌ¬O 16 ¦ì¤¸ªº§@·~¨t²Î¡A¥Î 16 ¦ì¤¸ªø«×ªí¥Ü°¾²¾¦ì§}¡A¦]¦¹³Ì¤j¥u¯à¬O 64KB¡A³o¤]´N¬O¤@ӰϬq³Ì¤jªºªø«×¤F¡F«áªÌ¬O 32 ¦ì¤¸§@·~¨t²Î¡A¥Î 32 ¦ì¤¸ªí¥Ü°¾²¾¦ì§}¡A³Ì¤j¥i¹F 4GB¡C
¨º»ò²ÕĶ¾¹¦p¦ó§P§On²ÕĶ¦¨ 16 ¦ì¤¸ªºµ{¦¡ÁÙ¬O 32 ¦ì¤¸¡H³on¬Ýì©l½X¤@¶}©l .MODEL ©M .386 ©Î .486 ªº¶¶§Ç¤F¡C¦pªG¬O .MODEL ¦b«e¡A²ÕĶ¾¹·|»s§@ 16 ¦ì¤¸ªº DOS µ{¦¡¡F¤Ï¤§«h»s§@ 32 ¦ì¤¸ªº Windows µ{¦¡¡C
¾¨ºÞ¦p¦¹¡A§ÚÌÁÙ¬O¥i¥H»s§@¤@Óµ{¦¡¤¤¦³¨Ç°Ï¬q¬O 16 ¦ì¤¸ªº¡A¦³¨Ç¬O 32 ¦ì¤¸ªº¡A¨âºØ¤£¦P¦ì¤¸¦ì§}ªº²V¦Xµ{¦¡¡A³oºØ±¡§Î¤j¦h¥Î©ó§@·~¨t²Î¡C³o®ÉÔ´Nn¥Î use ¨Ó¨M©wþ¨Ç°Ï¬q¬O 16 ¦ì¤¸¡Aþ¨Ç¬O 32 ¦ì¤¸¡A¦]¦¹ use ¦³¨âºØ¿ï¶µ¡GUSE16 »P USE32¡A«Ü©úÅã«eªÌ¬O 16 ¦ì¤¸ªº¦ì§}¡A«áªÌ¬O 32 ¦ì¤¸ªº¦ì§}¡C
¦³¨Ç x86 «ü¥O·|°²©w¹w³]°Ï¬q¡A¨Ò¦p PUSH¡BPOP ¬O°²©w¦b SS ©Ò«üªº°Ï¬q¤º¦s¨ú¸ê®Æ¡AMOV «ü¥O«h¬O°²©w¦b DS ©Ò«üªº°Ï¬q¤º¦s¨ú¸ê®Æ¡C¦]¦¹¡AÁÙn¦³Ó°²«ü¥O¨Ó§i¶D²ÕĶ¾¹¡AþӰϬq¹ïÀ³þӼȦs¾¹¡A³oÓ«ü¥O´N¬O ASSUME¡C³q±`¬O¦bµ{¦¡½X°Ï¬q«Å§i¤§«á¡A´Nn¦³¤@±ø ASSUME °²«ü¥O¡A»¡©ú°Ï¬q»P°Ï¬q¼È¦s¾¹ªº¹ïÀ³Ãö«Y¡CASSUME ªº»yªk¬O¡G
ASSUME segregister:seglocation [[,segregister:seglocation]]
¨ä¤¤ segregister ¬O°Ï¬q¼È¦s¾¹¡Aseglocation ¬O°Ï¬q¦WºÙ¡C
ASSUME «ü¥Ü±N¼È¦s¾¹»P°Ï¬q¤§¶¡ªºÃö«Y§i¶D²ÕĶ¾¹¡AÅý²ÕĶ¾¹ª¾¹D¦p¦ó²ÕĶ¡A¨ä¹ê¨Ã¨S¦³§â°Ï¬q¦ì§}¶ñ¤J°Ï¬q¼È¦s¾¹¤º¡C¦]¦¹¡A¦bì©lµ{¦¡¤@¶}©lªº¦a¤è¡AÁÙn¥[¤W´X±ø x86 «ü¥OÅý DS «ü¦V¸ê®Æ°Ï¬qªº¦ì§}¡C³o¨Ç«ü¥O¦p¤U¡G
mov ax,¸ê®Æ°Ï¬q¦WºÙ mov ds,ax
§¹¾ãµ{¦¡¦p¤U¡G
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 |
.MODEL SMALL,C
.386
;*******************************************************************************
mystack SEGMENT PARA STACK 'stack'
DB 1024 DUP (?)
mystack ENDS
;*******************************************************************************
mydata SEGMENT PARA PUBLIC 'data'
msg DB "Hellow, World.$"
mydata ENDS
;*******************************************************************************
mycode SEGMENT PARA PUBLIC 'code'
assume cs:mycode,ds:mydata
;-------------------------------------------------------------------------------
main PROC
mov ax,mydata
mov ds,ax
mov dx,OFFSET msg
mov ah,9
int 21h
mov ax,4c00h
int 21h
main ENDP
;-------------------------------------------------------------------------------
mycode ENDS
;*******************************************************************************
END main |
§â¤W±ì©lµ{¦¡¦s¦¨ hellow2.asm¡AµM«á¶i¤J¡uVirtual PC¡vªº¡uMS-DOS 6.20¡v¡A¤U¹F¡uml hellow2.asm¡v²ÕĶ§Y¥i¥¿±`°õ¦æ¡A°õ¦æ®É¤]¬O¦b¿Ã¹õ¤W¦L¥X¡uHellow, World!¡v´Nµ²§ôµ{¦¡¡C
³oÓµ{¦¡²Ä 4¡ã6 ¦æ¡A³]©w°ïÅ|°Ï¬q¤j¤p¬° 1KB ( §Y 1024 Ӧ줸²Õ )¡A°ïÅ|°Ï¬qªº¦WºÙ¬° mydstack¡A¦Ó¦X¨Ö§Î¦¡¬°¡uSTACK¡v¡A¦X¨Ö§Î¦¡¬°¡uSTACK¡v´N·|³Q²ÕĶ¾¹µø¬°°ïÅ|°Ï¬q¡Cª`·N¨ì SEGMENT »P ENDS ¦¨¹ï¥X²{¡A¤£¥u°ïÅ|°Ï¬q¦p¦¹¡A¸ê®Æ°Ï¬q¡Bµ{¦¡½X°Ï¬q¤]¬O¦p¦¹¡C
²Ä 8¡ã10 ¦æ¬°¸ê®Æ°Ï¬q¡A¦WºÙ¬°¡umydata¡v¡A¦b«á±²Ä 13 ¦æ¥i¥H¨£¨ì ASSUME §â¸ê®Æ°Ï¬q»P DS¡Bµ{¦¡½X°Ï¬q»P CS ¹ïÀ³°_¨Ó¡A¤]¥i¥H§â³o¤@¦æ¤À¦¨¨â¦æ¡G
ASSUME cs:mycode ASSUME ds:mydata
²Ä 16 ¦æ¨ú±o mydata ªº°Ï¬q¦ì§}¨Ã¦s©ó AX ùØ¡A²Ä 17 ¦æ§â DS ¤§È³]¬° AX¡C¥i¯à·|¦³¤H°Ý¡A¬°¦ó¤£Â²³æ¥Î¤@¦æ¡umov ds,mydata¡v´N¦n¤F¡A³o¬O¦]¬°¦b x86 ªº MOV «ü¥O¤£¯à§â±`¼Æ¦s¤J°Ï¬q¼È¦s¾¹ªº«ü¥O¡A¥u¯à§â³q¥Î¼È¦s¾¹¦s¤J°Ï¬q¼È¦s¾¹ùØ¡A¬G¥u¯à¥Î³o¼Ë¶¡±µªº¤èªk¡C
¨ä¥Lªºµ{¦¡½XÀ³¸Ó¤£¶·¦h°µ¸ÑÄÀ¤F¡C
¼Ò²Õ ( module ) ¥i¥H·Q¹³¦¨¬O°õ¦æ¬Y¥ó¯S©w¤u§@ªºµ{¦¡¡C·ín¶}µo¬YÓ¤j«¬³nÅé®É¡A±`±`·|±N¥¦¤À¦¨¼ÆÓ¤pµ{¦¡¡A¥æµ¹¤£¦Pªºµ{¦¡³]p®v¡A¤À§O¦P®É¼¶¼g¡A³Ì«á¥u»Ý¦A¥H¥Dµ{¦¡±N¦UÓ¤pµ{¦¡³sµ²°_¨Ó¡A´N¯à»s§@¦¨¤@Ó§¹¾ãªºµ{¦¡¡C³o¨Ç¤pµ{¦¡´N¯à¬Ý¦¨¬O¼Ò²Õ¡A¦Ó³o¼Ë³]p³nÅ骺¤è¦¡ºÙ¬°¼Ò²Õ¤Æ¡C
¹³·L³nªº¤å®Ñ³B²z³nÅé¡A¡uWORD¡v¡A¥»¨°£¤F³B²z¤å¦r¤§¥~¡AÁÙ·|¦h¤FÃB¥~ªº¥\¯à¡A¨Ò¦p¤èµ{¦¡¡B¹Ï¤ùµ¥¥\¯à¡A´NÀ³¸Ó¬O¥Ñ¤£¦Pªº³æ¦ì³]p¦Ó¦¨ªº¡C