²Ä¤@³¹¡@²Ä¤@­Ó Win64 µ{¦¡¡]¤@¡^


­ì©lµ{¦¡

«e¤@³¹¤w¸g³]©w¦n¼¶¼g Win64 ²Õ¦X»y¨¥ªºÀô¹Ò¤F¡A³o¤@³¹´N¥Î²Õ¦X»y¨¥¼g¤@­Ó¯à²£¥Íµøµ¡ªº³Ì²³æ Win64 µ{¦¡¡C³o­Óµ{¦¡¥u¦b¿Ã¹õ¤WÅã¥Ü¤@­Óµøµ¡¡A¦p¥k¹Ï¡A¼ÐÃDÄæ¬O¡u²Ä¤@­ÓWin64µ{¦¡¡v¡Aµøµ¡¤¤ÁÙ¦³¤@­Ó¡u³o¬O¥Î²Õ¦X»y¨¥¼gªº64¦ì¤¸µ{¦¡¡C¡v¦r¦ê¤Î¡u½T©w¡v«ö¶s¡A¨Ï¥ÎªÌ¥i¥H«ö¡u½T©w¡v«ö¶sµ²§ôµ{¦¡¡C¦r¦êªº­^¤å¬O string¡A¥i¥H§â¥¦·Q¦¨¤@¬q¥Ñ¤å¦r²Õ¦¨ªº¥y¤l¡A¤£½×¬O¤¤¤å©Î­^¤å¤å¦r§¡¥i¡C

¤p¤ì°¸ºÉ¶qÅý©³¤Uªºµ{¦¡³æ¯Â¡A¤£²o¯A¨ì¥]§tÀÉ¡FÁöµM¥]§tÀÉ¥i¥H²¤Æµ{¦¡¡A¦ý¬O¹ï©óªì¾ÇªÌÁA¸Ñµ{¦¡«o¨S¤°»òÀ°§U¡C¥Î¥ô¦ó¤@­Ó¤å®Ñ³B²z³nÅé¡A¨Ò¦p°O¨Æ¥»©Î UltraEdit 32 µ¥¡A¿é¤J¤U­±¡u­ì©lµ{¦¡¡v¡]source code¡A¤]¥i½¬°­ì©l½X©Î·½½X¡^¡AµM«á¥H¡uANSI¡v©Î¡uASCII¡vªº½s½X¤è¦¡¡]¤£­n¥Î UTF-8 ©Î¨ä¥L½s½X¤è¦¡¦sÀÉ¡A§_«h»s§@¥X¨Óªºµ{¦¡µLªkÅã¥Ü¤¤¤å¡^¡AÀx¦s¦b¡uE:\HomePage\SOURCE\Win64\FIRST\FIRST.ASM¡vÀÉ®×ùØ¡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
OPTION          CASEMAP:NONE
EXTRN           MessageBoxA:PROC
EXTRN           ExitProcess:PROC
INCLUDELIB      e:\masm32\lib64\kernel32.lib
INCLUDELIB      e:\masm32\lib64\user32.lib
MB_OK           EQU     0
;***************************************************************************************************
.CONST
szCaption       DB      "²Ä¤@­ÓWin64µ{¦¡",0
szText          DB      "³o¬O¥Î²Õ¦X»y¨¥¼gªº64¦ì¤¸µ{¦¡¡C",0
;***************************************************************************************************
.CODE
;---------------------------------------------------------------------------------------------------
main    PROC
        xor     rcx,rcx
        push    rcx
        mov     rdx,OFFSET szText
        lea     r8,szCaption
        mov     r9,MB_OK
        sub     rsp,20h
        call    MessageBoxA
        add     rsp,20h
        pop     rcx
        sub     rsp,28h
        call    ExitProcess
main    ENDP
;***************************************************************************************************
END

­ì©lµ{¦¡¬O¯Â¤å¦rÀÉ¡A¹q¸£¬O¬Ý¤£À´ªº¡C¥²¶·¸g¹L²ÕĶ»P³sµ²ªº¹Lµ{¡A¤~¯à¡u½Ķ¡v¦¨¹q¸£¬Ý±oÀ´¡A¤]¯à°õ¦æªº«ü¥O¡C¨Ì¤U­±¨BÆJ²ÕĶ¡B³sµ² FIRST¡C

¦b Windows §@·~¨t²Îªº®à­±¤W¡A©ó¿Ã¹õ¥ª¤U¨¤¡A«ö¡u¶}©l¡v¡÷¡uªþÄÝÀ³¥Îµ{¦¡¡v¡÷¡u©R¥O´£¥Ü¦r¤¸¡v¡]¦pªG¬O Windows 10¡A©R¥O´£¥Ü¦r¤¸¬O¦b Windows ¨t²Î¤º¡^¡AµM«á¿é¤J¤U­±¥Î¶À¦â¦r¼Ð°_¨Óªº«ü¥O¡A°O±o¨C¿é¤J¤@¦æ«ü¥O«á­n«ö¡uEnter¡vÁä¡A´N¯à²£¥Í FIRST.EXE¡C³o¼Ë²ÕĶ¡B³sµ²´N§¹¦¨¤F¡C

Microsoft Windows [ª©¥» 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\wanker>E:

E:\>cd HomePage\SOURCE\Win64\FIRST

E:\HomePage\SOURCE\Win64\FIRST>path E:\masm32\bin64;%path%

E:\HomePage\SOURCE\Win64\FIRST>set link=/subsystem:windows

E:\HomePage\SOURCE\Win64\FIRST>ml64 first.asm /link /entry:main
Microsoft (R) Macro Assembler (x64) Version 14.25.28614.0
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: first.asm
Microsoft (R) Incremental Linker Version 14.25.28614.0
Copyright (C) Microsoft Corporation.  All rights reserved.

/subsystem:windows
/OUT:first.exe
first.obj
/entry:main

E:\HomePage\SOURCE\Win64\FIRST>

¦pªG¨S¦³¿ù»~°T®§¡Aªí¥Ü¤w¦¨¥\»s§@¦n FIRST.EXE¡AFIRST.EXE ¬OÀɮצWºÙ¡A¨ä¤¤ FIRST ¬O¥DÀɦW¡AEXE ¬O¡A¤¤¶¡¥H¡u.¡v¹j¶}¡C¦pªGÀɦW¤¤¦³¦h­Ó¡u.¡v¡A¥H³Ì«á¤@­Ó¡u.¡v°µ¬°°Ï¹j¥DÀɦW»P°ÆÀɦW¡C°ÆÀɦW¥Î¨Ó¤À¿ëÀÉ®×ÄÝ©ó­þ¤@ºØÃþ«¬¡A¨Ò¦p .MP4 ¬O¼v­µÀÉ¡A.RAR ¬OÀ£ÁYÀÉ¡K¡K¡A°ÆÀɦW¬° .EXE ªº¬O¥i°õ¦æÀÉ¡A¤]¥i¥H»¡¬O¥i°õ¦æªºµ{¦¡¡A¨º­n¦p¦ó°õ¦æ©O¡H

¦³¨âºØ¤èªk¯à°õ¦æµ{¦¡¡G①¦bÀÉ®×Á`ºÞ¥H·Æ¹«ÂùÀ»¨ä¹Ï¥Ü¡A②¦b©R¥O´£¥Ü¦r¤¸¤¤¿é¤J¥i°õ¦æµ{¦¡ªº¥DÀɦW¡A¿é¤J¥DÀɦW¥i¥H¤£°Ï¤À¤j¤p¼g¡C¿é¤J¡uFIRST¡v¡A´N¯à°õ¦æ¥¦¡AµM«áÅã²{¥X¥»³¹¤@¶}©lªºµøµ¡¨Ó¡C

¤u§@¥Ø¿ý

¦b»¡©ú¤W­±ªº²ÕĶ»P³sµ²ªº¹Lµ{«e¡A¥ý¤¶²Ð¤@­ÓÆ[©À¡A¤u§@¥Ø¿ý¡]¤]¥s·í«eªº¥Ø¿ý©Î²{¦bªº¥Ø¿ý¡^¡C²³æ¨Ó»¡¡A¤u§@¥Ø¿ý´N¬O¦b©R¥O´£¥Ü¦r¤¸¤¤¡A¨C¤@¦æ³Ì«e­±´£¥Ü²Å¸¹¡A¨Ò¦p¤W­±ªº¡uC:\Users\wanker¡v¡B¡uE:\¡v¡B¡uE:\HomePage\SOURCE\Win64\FIRST¡v¡C°£¦¹¤§¥~ÁÙ¦³­Ó·N¸q¡A¨º´N¬O¦pªG¨S¦³¯S§O«ü©wªº¸Ü¡A¦b©R¥O´£¥Ü¦r¤¸©Ò°õ¦æªºµ{¦¡¡A·|§â¤u§@¥Ø¿ýµø¬°¥Ø¼Ð¡C¹³¤U­±ªº copy «ü¥O´N·|§â¡uC:¡vºÏºÐ¾÷¤Wªº README.TXT Àɽƻs¨ì D:\TEMP ¤º¡G

D:\TEMP>copy C:README.TXT

·íµM¤u§@¥Ø¿ý¬O¥i¥H§ïÅÜ¡A§Q¥Î«ü¥O¡ucd¡v´N¯à¹F¦¨¡Acd ¬O¡uchange directory¡vªº·N«ä¡A­n¤Á´«ªº¥Ø¿ý´N±µ¦b¡ucd¡vªºªÅ®æ¤§«á¡C

¤@³¡¹q¸£¤¤¡A¥i¯à¦³³\¦hºÏºÐ¾÷¡A§@·~¨t²Î·|¬°¨C¤@³¡ºÏºÐ¾÷¬ö¿ý¸ÓºÏºÐ¾÷ªº¤u§@¥Ø¿ý¡C¨Ï¥ÎªÌ¥i¥H¦b©R¥O´£¥Ü¦r¤¸¿é¤JºÏºÐ¾÷¦WºÙ¡A¤Á´«¨ì¸ÓºÏºÐ¾÷ªº¤u§@¥Ø¿ý¤W¡]ºÏºÐ¾÷¦WºÙ´N¬O­^¤å¦r¥À¥[¤W¡u:¡v¡A¨Ò¦p¡uE:¡v¡A¤£°Ï¤À¤j¤p¼g¡^¡C

»¡©ú²ÕĶ»P³sµ²ªº¹Lµ{

¡uE:¡v»P¡ucd HomePage\SOURCE\Win64\FIRST¡v

·í¶i¤J¡u©R¥O´£¥Ü¦r¤¸¡v®É¡AWindows ·|§â¡uC:\Users\±b¸¹¡v§@¬°·í«eªº¤u§@¥Ø¿ý¡C¦ý§Ú­Ì§Æ±æ FIRST.EXE ¯à©M FIRST.ASM ¦b¦P¤@­Ó¥Ø¿ýùØ¡A³£©ñ¦b¡uE:\HomePage\SOURCE\Win64\FIRST\¡v¡A³o¼Ë¤ñ¸û¦nºÞ²z¡C©Ò¥H¥ý¤U¹F²Ä¤@­Ó«ü¥O¡A¡uE:¡v¡A³o¬OÅý¡u©R¥O´£¥Ü¦r¤¸¡v¤Á´«¨ì E: ºÏºÐ¾÷¡C³o®É E: ºÏºÐ¾÷ªº¤u§@¥Ø¿ý¬O E:\¡A³o¬O®Ú¥Ø¿ý¡C©Ò¥HÁÙ­n¦A¤U¹F²Ä­Ó¤G«ü¥O¡ucd HomePage\SOURCE\Win64\FIRST¡v¥Î¨Ó¤Á´«¨ì»P FIRST.ASM ¦P¤@¥Ø¿ý¡C³o®É¤u§@¥Ø¿ý´NÅܦ¨¡uE:\HomePage\SOURCE\Win64\FIRST¡v¤F¡C©¹«á²£¥ÍªºÀɮסA´N·|Àx¦s¦b³o­Ó¥Ø¿ýùؤF¡C

¦pªG¥ý¤U¹F¡ucd E:\HomePage\SOURCE\Win64\FIRST¡v¡A¦A¤Á´«¦Ü¡uE:¡vºÏºÐ¾÷¡A¤]¬O¥i¥Hªº¡A¥i¥H¦Û¦æ¸Õ¸Õ¡C

¡upath E:\masm32\bin64;%path%¡v

²Ä¤T­Ó«ü¥O¬O¡upath E:\masm32\bin64;%path%¡v¬O«ü©w°õ¦æÀɪº·j´M¸ô®|¡C·í¨Ï¥ÎªÌ¿é¤J°õ¦æÀɪº¥DÀɦW°õ¦æµ{¦¡®É¡A¹q¸£´N·|¥ý¦b·í«e¤u§@¥Ø¿ýùاä¨ì¸Ó°õ¦æÀÉ¡A¦pªG§äµÛ¤F´N°õ¦æ¥¦¡F¦pªG§ä¤£¨ì¡A´N·|¨Ì¾Ú¡upath¡v«ü¥O«á­±ªº¸ô®|¥h´M§ä¡C¦b¤p¤ì°¸ªº¦w¸Ë¡uinstall64.zip¡v®É¡A²ÕĶ¾¹»P³sµ²¾¹³£©ñ¦b¡uE:\masm32\bin64¡v¡A¦Ó­ì©l½X©ñ¦b¡uE:\HomePage\SOURCE\Win64\FIRST¡v¡A¦]¦¹¥Î¡upath E:\masm32\bin64;%path%¡v³]©w¦n·j´M¸ô®|¡A¤~¯à§ä¨ì²ÕĶ¾¹»P³sµ²¾¹¡C

¡upath¡v¥i¥H«ü©w³\¦h­Ó·j´M¸ô®|¡A¤¤¶¡¥Î¡u;¡v¹j¶}¡C³Ì«á¤@­Ó¡u%path%¡v¬O«ü­ì¨Óªº·j´M¸ô®|¡A³o¼Ë¦b§Ú­Ì«ü©w·sªº¡uE:\masm32\bin64¡v·j´M¸ô®|«á¡AÁÙ¯à«O¯d­ì¥ýªº·j´M¸ô®|¡A¤£·|¼vÅT¨ä¥Lµ{¦¡­ì¨Ó·j´M¸ô®|¡C

¡uset link=/subsystem:windows¡v

²Ä¥|­Ó«ü¥O¡A¡uset link=/subsystem:windows¡v¡A¬O¥Î¨Ó³]©w³sµ²¾¹ªº¿ï¶µ¡C¡u/subsystem:windows¡v«ü©w²£¥Íªº¥i°õ¦æÀɬOµøµ¡µ{¦¡ªº¡A¦b Win64 ùتºµ{¦¡¤j³¡¤À¬Oµøµ¡§Î¦¡¡F¥t¤@ºØ¬O¥D±±»Oµ{¦¡¡]console program¡^¡A¥i¥H¥Î¡u/subsystem:console¡v¡A²Ä¤T³¹¤¶²Ð¡C

¡uml64 first.asm /link /entry:main¡v

¦pªG¥u­nÅý ML64.EXE ²ÕĶ¦Ó¤£Åý¥¦¦Û°Ê°õ¦æ LINK.EXE ¶i¦æ³sµ²¡A¥i¥H¨Ï¥Î¡u/c¡v¿ï¶µ©Î¡u-c¡v¿ï¶µ¡C³\¦h¥D±±»Oµ{¦¡³£¦³¿ï¶µ¡A¤]¥iºÙ¬°°Ñ¼Æ¡A¿ï¶µ©Î°Ñ¼Æ³q±`¥H¡u/¡v©Î¡u-¡v°_ÀY¡C¥D±±»Oµ{¦¡´N¬O«ü¦b©R¥O´£¥Ü¦r¤¸¤U°õ¦æ¡A¦Ó¥B¤£²£¥Íµøµ¡ªºµ{¦¡¡C

¡u/link¡v¤]¬O ML64.EXE ªº¿ï¶µ¡A¦b¡u/link¡v«áªº¸ê®Æ³£·|¶Çµ¹³sµ²¾¹¡C«á­±ªº¡u/entry¡v´N¬O¶Çµ¹³sµ²¾¹ªº¸ê®Æ¡A¡u/entry¡v¥Î¨Ó«ü©wµ{¦¡ªº¶i¤JÂI¡A¶i¤JÂI¬Oµ{¦¡²Ä¤@­Ó­n°õ¦æªº«ü¥O¡A³o­Ó«ü¥O¤£¤@©w¦bµ{¦¡ªº²Ä¤@¦æ¡C¦pªG¬O¼¶¼g 16 ¦ì¤¸©Î 32 ¦ì¤¸µ{¦¡¡A¥Î¡uML.EXE¡v²ÕĶ¾¹¡A¥i¥H¦b­ì©l½X³Ì«á­±¥Î¡uEND ¶i¤JÂI¡v¨Ó«ü©w¶i¤JÂI¡AML.EXE ·|©¿²¤¡uEND ¶i¤JÂI¡v¤§«áªº©Ò¦³¤å¦r¡A¥i¥Î©óµ²§ô­ì©lµ{¦¡¡F¦ý¬O¡uML64.EXE¡v±N¶i¤JÂIªº¥\¯à§R°£¤F¡AEND ¥u¥Î©ó­ì©lµ{¦¡ªí¥Üµ²§ô¤§·N¡A©Ò¥H¸U¤£±o¤w¥u¯à¦b³sµ²®É¡A¥Î¡u/entry¡v¨Ó«ü©w¶i¤JÂI¡C

ÁA¸Ñ¤F ML64.EXE ªº¡u/c¡v»P¡u/link¡v¿ï¶µªº§@¥Î¤§«á¡A¤£ª¾§A¬O§_·|·Q¡A¦pªG¹³¤U­±¨BÆJ²ÕĶ»P³sµ²¬O§_¥i¥H¡H

ml64 -c first.asm
link first.obj /entry:main

ªº½T¡A³o¼Ë¤]¬O¥i¥Hªº¡C¦ý­nª`·Nªº¬O LINK.EXE ­n³sµ²ªº¬O first.obj »P¶×¤Jµ{¦¡®w¡A«eªÌ¬O ML64.EXE »s³y¥X¨Óªº¡A«áªÌ¬O¦b FIRST.ASM ¥H INCLUDELIB «ü©wªº¡C

masm64.bat

¨Æ¹ê¤W¡A¨C¤@¦¸²ÕĶ¤Î³sµ²­ì©l½X®É¡A³£¥²¶·¿é¤J«e¥|¦æ«ü¥O¡A¬°¤F§ïµ½®Ä²v¡A¥i¥H¥Î¤å®Ñ³B²z³nÅé¡A¨Ò¦p°O¨Æ¥»¡BUltraEdit 32 µ¥¡A¿é¤J¤U­±«ü¥O¡A¨ÃÀx¦s¦b¡uC:\Users\±b¸¹\masm64.bat¡v§å¦¸ÀÉùØ¡C¨C¦¸¤@¶i¤J¡u©R¥O´£¥Ü¦r¤¸¡v¡A´N°õ¦æ¡umasm64.bat¡v¡A·|¤è«K³\¦h¡C©³¤U¬O¡umasm64.bat¡vªº¤º®e¡G

E:
CD E:\HomePage\SOURCE\Win64
PATH E:\masm32\bin64;%path%
SET LINK=/SUBSYSTEM:WINDOWS /ENTRY:main

¹³ masm64.bat ³o¼ËªºÀɮ׺٬°§å¦¸ÀÉ¡A¥¦¨ä¹ê´N¬O§â¦b©R¥O´£¥Ü¦r¤¸¤U¥i°õ¦æªº«ü¥O¶°¦X¦b¤@°_¡A§Î¦¨¤@­ÓÀɮסA³o¼Ë­n°õ¦æ®É¥u®øÁä¤J§å¦¸Àɪº¥DÀɦW¡A´N¯à°õ¦æ³o¨Ç«ü¥O¡A«Ü¤è«K¡C

»s§@¥X°õ¦æÀÉ¥H«á¡AÁÙ­n°õ¦æ¬Ý¬Ý¬O§_¦p¹w´Áµ²ªG¡A¦pªG¬O¡A´Nªí¥Ü¦¹µ{¦¡¤w¼¶¼g§¹¦¨¡F¦pªG¤£¬O¡Aªí¥Üµ{¦¡¥i¯à¥Ç¤FÅÞ¿è¤Wªº¿ù»~©Î¨ä¥L¿ù»~¡A¥²¶·­«·sÀˬd­ì©lµ{¦¡¡C¨Æ¹ê¤W¡A¦b²ÕĶ¹Lµ{©Î³sµ²¹Lµ{¡A¦pªG²£¥Í¿ù»~¡A³£­n¦^¨ì­ì©lµ{¦¡¥J²ÓÀˬd¿ù»~¨Ã¤@¤@­×¥¿¡Aª½¨ì¯à¥¿½T²ÕĶ¡B³sµ²¨Ã°õ¦æ¡A¦P®ÉÁÙ¯à²Å¦X¹w´Áµ²ªG¡A¤~ºâ¬O§¹¦¨¾ã­Ó¼¶¼gµ{¦¡ªº¹Lµ{¡C¤U¹Ï¬O¨ä¬yµ{¡G¤W¹Ï¤¤ªº¡u³sµ²OBJÀÉ¡v¡Aªº¥Øªº¬O­n§â§Ú­Ì¼¶¼g¦¨ªºµ{¦¡¡A»P¨ä¥Lµ{¦¡®w³sµ²°_¨Ó¡C¤@¯ë¦Ó¨¥¡A¶}µoµ{¦¡ªº¤u¨ã¡A¹³ Visual Studio¡A³£·|´£¨Ñ³\¦hµ{¦¡¤ù¬q¨Ñµ{¦¡¶}µo¤H­û¨Ï¥Î¡C¨Ï¥Î¤è¦¡´N¬O§Q¥Î³sµ²¾¹¡A¨Ò¦p LINK.EXE¡A§â§Ú­Ì»s§@¥X¨Óªº OBJ ÀÉ»P¥L­Ì´£¨Ñªºµ{¦¡®w³sµ²¡C·í§Ú­Ì¥Î ML64.EXE ²ÕĶ®É¡A¦pªG²ÕĶ¦¨¥\»s§@¥X¨Ó OBJ ÀÉ¡AML64.EXE ·|¦Û°Ê°õ¦æ LINK.EXE¡A¤£¥²¾á¤ß¡C


¸ÑªR FIRST.ASM

©³¤U¤p¤ì°¸­n¨Ó¸Ñ»¡ FIRST.ASM ¤¤ªº¨C¤@¦æµ{¦¡©Ò¥Nªíªº·N¸q¡C

²Õ¦X»y¨¥«O¯d¦r

¥ô¦ó¤@ºØµ{¦¡»y¨¥¡A³£¦³¦Û¤vªº«O¯d¦r¡A³o¨Ç«O¯d¦r¦bµ{¦¡»y¨¥³]­p¤§®É´N¤w¸g©w¸q¤F¡A¥¦¨ã¦³¯S®íªº·N¸q¡A¥i¥H¬O¥Î¨Ó¿ëÃÑ«ü¥O¡B°j°é¡B»y¥y¶ô¡B±ø¥ó¡B¤À¤äµ¥µ{¦¡µ²ºcµ¥µ¥¡C²Õ¦X»y¨¥¤]¬O¦p¦¹¡A²Õ¦X»y¨¥ªº«O¯d¦r¥i¤À¬°¤­Ãþ¡G

  1. °²«ü¥O¡]directives¡^¡G¹ï²ÕĶ¾¹µo¥Xªº«ü¥O¡A¤]ºÙµêÀÀ«ü¥O©Î«ü¤Þ¡C¨Ò¦p OPTION¡BEXTRN¡BINCLUDELIB¡BDB¡K¡K¡C
  2. CPU «ü¥O¡]instructions¡^¡G¹ï³B²z¾¹¡]CPU¡^µo¥Xªº«ü¥O¡A¤]ºÙ x86 «ü¥O¡C¨Ò¦p MOV¡BXOR¡BSUB¡BLEA¡K¡K¡C
  3. ÄÝ©Ê¡]attributes¡^¡G«ü¥O©Ò»Ý­nªº¿ï¶µ¡C¨Ò¦p¡APROC °²«ü¥O¤¤ªº¡uUSES¡v¡C
  4. ¹Bºâ¤l¡]operators¡^¡G¦b¹Bºâ¦¡¤¤¥Î¨ìªº¹Bºâ¹Lµ{¡A¦p¡u+¡v¡B¡u-¡v¡B¡u*¡v¡B¡u/¡vµ¥¡A¤À§O¥Nªí¥[¡B´î¡B­¼¡B°£¥|«h¹Bºâ¡C
  5. ¹w©w¸q²Å¸¹¡]predefined symbols¡^¡G¨Ò¦p²©ö©w¸q°Ï¬q®É¡A©Òªð¦^ªº°Ï¬q¦WºÙ¡C

¦b­ì©lµ{¦¡¤¤¡A«O¯d¦r¥i¥H¥ô·N¨Ï¥Î¤j¼g©Î¤p¼g­^¤å¦r¥À¡A¤£·|¦³¥ô¦ó°ÝÃD¡A¦Ó¨Ï¥ÎªÌ¦Û¦æ©R¦Wªº¦WºÙ¡A¦pÅܼƦW¡B°Æµ{¦¡¦Wµ¥¡A³£¤£¥i¨Ï¥Î«O¯d¦r¡A§_«h ML64 µLªk¤À¿ë¨ì©³¬O«O¯d¦r¡AÁÙ¬O¬Y­ÓÅܼơC

OPTION °²«ü¥O

¡uOPTION¡v¥i¥H³]©w¦h¨Æ±¡¡A¤£¹L¦b³oùضȤ¶²Ð¡uOPTION DOTNAME¡v»P¡uOPTION CASEMAP:maptype¡v¡C

¡uOPTION DOTNAME¡v¬OÅý ML64 ¤¹³\ÅܼơB±`¼Æ¦WºÙªº²Ä¤@­Ó¦r¬O¡u.¡v¡F¦pªG¬O¡uOPTION NODOTNAME¡v¡A´N¤£¤¹³\ÅܼƦW©Î±`¼Æ¦Wµ¥¥H¡u.¡v¶}ÀY¡C¦pªGµ{¦¡¤¤¨S¦³³]©w¡A¨º»ò¤º©w­È¬O¡uNODOTNAME¡v¡C

¡uOPTION CASEMAP:maptype¡v«ü¥Ü ML64.EXE ²ÕĶ¾¹¬O§_§â¤j¼g¸ò¤p¼gªº­^¤å¦r¥À¬Ý¦¨¬O¬Û¦Pªº¡Cª`·N¡A³oºØ¬O§_°Ï§O¤j¤p¼g¶È¾A¥Î©ó¨Ï¥ÎªÌ©w¸qªº¦WºÙ¡A¨Ò¦p Win64 API ¦WºÙ¡B°Æµ{¦¡¦WºÙ©ÎÅܼƦWºÙ¡K¡Kµ¥¡F¦Ó«O¯d¦r¬O¤£¨ü¡uOPTION CASEMAP¡vªº¼vÅT¡Cmaptype ¦³¨âºØ¿ï¾Ü¡G

  1. NONE¡G¤j¼g»P¤p¼gµø¬°¤£¦Pªº¦WºÙ¡A¥ç§Y¡uOPTION CASEMAP:NONE¡v¬O°Ï¤À¤j¡B¤p¼g¡C¨Ò¦p°²³]¦b­ì©lµ{¦¡¤¤¡A¥ý«á©w¸q¡uszCaption¡v¡B¡uSzCaption¡v¨â­Ó¦r¦êÅܼơA¥B­ì©lµ{¦¡«e­±¤w«ü©w¡uOPTION CASEMAP:NONE¡v¡A¨º»ò²ÕĶ¾¹µø¬°¤£¦PªºÅܼƦWºÙ¡C¦pªG¨S¦b­ì©lµ{¦¡¤¤«ü©w¡uOPTION CASEMAP:NONE¡v¡A¤]¥i¥H¦b²ÕĶ®É¥Î¡u/Cp¡v«ü©w¡C¦b Win64 §@·~¨t²Î¤¤¡A©Ò¦³ªº±`¼Æ¡BAPI ¦WºÙ³£°Ï¤À¤j¤p¼g¡A¦]¦¹¦b¼¶¼g Win64 µ{¦¡®É¡A¥²©w­n¦b³]©w¡uOPTION CASEMAP:NONE¡v©Î²ÕĶ®É¿ï¥Î¡u/Cp¡v©Î¡u-Cp¡v¿ï¶µ¡C
  2. NOTPUBLIC¡G¥u¦³¥~³¡°Æµ{¦¡¦WºÙ©Î Win64 API ¦WºÙ°Ï¤À¤j¤p¼g¡C¦pªG¨S¦b­ì©lµ{¦¡¤¤«ü©w¡uOPTION CASEMAP:NOTPUBLIC¡v¡A¤]¥i¥H¦b²ÕĶ®É«ü©w¡u/Cx¡v©Î¡u-Cx¡v¿ï¶µ¡C¦pªG¨S¦³³]©w¡uOPTION CASEMAP¡v¡A¤º©w­È¬O¡uOPTION CASEMAP:NOTPUBLIC¡v¡C

¤W­±¸ÑÄÀ¤F OPTION ªº¨â­Ó¥Îªk¡A³£¬O©MÅܼƪº©R¦W¦³Ãö¡C¥H¡uOPTION DOTNAME¡v¬°¨Ò¡A´N¬O«ü¥Ü ML64.EXE ¬Ý¨ì¥H¡u.¡v°_ÀYªºÅܼơA¥i¥H±µ¨ü¡C¦]¦¹ OPTION ¤]¬O¤@ºØ¡u°²«ü¥O¡v¡C

FIRST.ASM ªº«e¤T¦æ¬O¡G

OPTION          CASEMAP:NONE
EXTRN           MessageBoxA:PROC
EXTRN           ExitProcess:PROC

²Ä¤@¦æ¤w¸gÁ¿§¹¡A²Ä¤G¡B¤T¦æ³£¬O¡uEXTRN¡v°²«ü¥O¡A¬°¤FÁA¸Ñ¥¦¡A§Ú­Ì¥ýÁ¿Á¿ MessageBoxA ¤Î ExitProcess ³o¨â­Ó Windows API¡C¦ý¦b»¡©ú Windows API ¤§«e¡A¤SÀ³¸Ó¥ýÁA¸Ñ¤°»ò¬O¡u°Æµ{¦¡¡v¡C

°Æµ{¦¡»P Windows API

§Ú­Ì¦b¼¶¼gµ{¦¡®É¡A³q±`·|¹J¨ì³o¼Ëªºª¬ªp¡A´N¬O¬Y¨Çµ{¦¡¤ù¬q·|±`±`°õ¦æ¨ì¡A¦pªG­n­«·s¼g¤@¹M¡A¤]«Ü³Â·Ð¡CÁ|¨Ò¨Ó»¡¡A«Ø¥ßµøµ¡´N¬O±`±`·|°õ¦æ¨ìªºµ{¦¡¡C«Ø¥ßµøµ¡®É¡A³£­n°õ¦æø»s¼ÐÃDÄæ¡BÃä®Ø¡B³Ì¤j¤Æ³Ì¤p¤Æ«ö¶sµ¥°Ï°ìªºµ{¦¡½X¡A¨C¦¸«Ø¥ßµøµ¡®É¤j·§³£¬O­n°µ¬Û¦Pªº¨Æ¡A¦³©Ò®t§Oªº¬O¤£¦Pªº¼ÐÃDÄæ¤å¦r¡B¤£¦Pªºµøµ¡¦ì¸m¡B¤£¦Pªºµøµ¡¤j¤pµ¥¡A·íµM¤£¥u³o¨Ç¤u§@ÁÙ¦³¨ä¥L§óÁcÂøªº¨Æ¡C¤£½×¦p¦ó¡A°²¦p¯à§â«Ø¥ßµøµ¡ªºµ{¦¡½X¿W¥ß¥X¨Ó¡Aµ¥¨ì¨C¦¸­n«Ø¥ßµøµ¡®É¡A¥u»Ý«ü©w¦n¼ÐÃDÄæ¤å¦r¡Bµøµ¡¦ì¸m¡Bµøµ¡¤j¤pµ¥¡AµM«á§â±±¨îÅvÂಾ¨ì¿W¥ß¥X¨Óªºµ{¦¡¥h°õ¦æ¡A´N¯à«Ø¥ß¦n¤@­Óµøµ¡¡C

¹³³o¼Ë¡A¡u¦b¤j«¬µ{¦¡¤¤¡A¯à§¹¦¨¬Y¶µ¯S©w¤u§@¡A¦Ó¥B¤ñ¸û¨ã³Æ¿W¥ßªºµ{¦¡¤ù¬q¡v´NºÙ¬°°Æµ{¦¡¡]subroutine ©Î subprogram¡^¡A¦Ó­ì¨Óªº¤j«¬µ{¦¡´NºÙ¬°¥Dµ{¦¡¡C¥Dµ{¦¡§â±±¨îÅvÂಾ¨ì°Æµ{¦¡ªº¹Lµ{¡A´NºÙ¬°©I¥s¡]call¡A¤j³°Â½Ä¶¦¨½Õ¥Î¡^¡C¥Dµ{¦¡¦b©I¥s°Æµ{¦¡®É¡A§â¬Y¨Ç¸ê®Æ¶Çµ¹°Æµ{¦¡¡A¦Ó¨Ï°Æµ{¦¡¨Ì¾Ú¦¹¸ê®Æ°õ¦æ¡C¨Ò¦p©I¥s«Ø¥ßµøµ¡ªº°Æµ{¦¡®É¡A­n§â¼ÐÃDÄæ¤å¦r¡B¤£¦Pªºµøµ¡¦ì¸m¡B¤£¦Pªºµøµ¡¤j¤pµ¥¶Çµ¹°Æµ{¦¡¡A°Æµ{¦¡¦n¨Ì¾Ú³o¨Ç¸ê®Æ°õ¦æ¤u§@¡C¹³³o¼Ë¥Dµ{¦¡¶Çµ¹°Æµ{¦¡ªº¸ê®Æ¡AºÙ¬°¡u°Ñ¼Æ¡v¡]parameter¡^©Î¡u¤Þ¼Æ¡v¡]argument¡^¡C¡]µùÄÀ¡^

°Æµ{¦¡°õ¦æ§¹²¦«á¡AÁÙ·|§â±±¨îÅv¥æÁÙµ¹¥Dµ{¦¡¡A¦³®É¤]·|§â°õ¦æµ²ªG¶Ç¦^µ¹¥Dµ{¦¡¡C³o­Ó°õ¦æµ²ªG³q±`¬O¤@­Ó¼Æ­È¡AºÙ¬°¡u¦^¶Ç­È¡v¡]return value¡^¡A§i¶D§Ú­Ìªº°Æµ{¦¡°õ¦æªºµ²ªG¡A¨Ò¦p«Ø¥ßµøµ¡¬O§_¦¨¥\¡C¹³³oºØ¦bµ²§ô®É¡A·|§â¦^¶Ç­È¶Çµ¹¥Dµ{¦¡ªº°Æµ{¦¡ºÙ¬°¨ç¦¡¡]function¡A¥ç¦³Â½Ä¶¦¨¨ç¼Æ¡^¡C

¦³¤F¤W­±¥Dµ{¦¡¡B°Æµ{¦¡¡B©I¥s¡B°Ñ¼Æ¡B¦^¶Ç­È¡B¨ç¦¡µ¥Æ[©À«á¡A©³¤U´N¨Ó»¡¤@»¡¤°»ò¬O Windows API¡C

API ¬O Application Programming Interface ªº¬OÁY¼g¡A©Ò¥H Windows API ¥i¥H½Ķ¦¨ Windows §@·~¨t²ÎÀ³¥Îµ{¦¡¤¶­±¡C§Ú­Ì¥i¥H§â Windows API ¬Ý¦¨¬O³\¦hªº°Æµ{¦¡ªº¶°¦X¡A¨Æ¹ê¤W¡A·L³n¤w¸g¼¶¼g¦n¦h¹F¤W¤dºØ°Æµ{¦¡¡A·íµM¥]§t«Ø¥ßµøµ¡ªº°Æµ{¦¡¡C·L³n±N¥¦­Ì¶°¦X°_¨Ó¡A¦s©ñ¦b Windows §@·~¨t²Î¤ºªº¦UºØ°ÊºA³sµ²µ{¦¡®w¡]dynamic-link library¡AÁY¼g¬° DLL¡A¨ä°ÆÀɦW¬°¡u.DLL¡v¡^¤¤¡C¥¦¤]¬O Windows §@·~¨t²Îªº¤@³¡¤À¡A¥ô¦óµ{¦¡³£¥i¥H©I¥s¥¦¡CWindows API ¦b°õ¦æ§¹²¦¡AÁÙ·|±N±±¨îÅvÂkÁÙµ¹¥Dµ{¦¡¡A¨Ã¥B±N°õ¦æµ²ªG¡A¤]´N¬O¦^¶Ç­È¡A¦s©ñ©ó RAX ³qª¾¥Dµ{¦¡¡C©Ò¥H¡A©Ò¦³ªº Windows API ³£¬O¨ç¦¡¡C

Windows API ¬O±q¥Á°ê 74 ¦~¡]¦è¤¸ 1985 ¦~¡^µo°âªº Windows 1.0 ¶}©l¡A¤ä´©¬ù 450 ­Ó¨ç¦¡¡A¨ì²{¦b¥Á°ê 112 ¦~¤w¸g¦h¹F¤W¤d­Ó¨ç¦¡¤F¡C¤j­P¥i¥H¤À¦¨¤T­Ó¶¥¬q¡G①Windows 1.0 ¨ì Windows 3.1 ³£¬O 16 ¦ì¤¸ªº§@·~Àô¹Ò¡A¤]ºÙ¬° Win16 API¡C②Windows NT 3.1/Windows 95 ¤Î¨ä«áÄòªºª©¥»³£¬O 32 ¦ì¤¸ªº§@·~¨t²Î¡A¬GºÙ Win32 API¡C③Windows XP ¤Î¨ä¤§«áªº Windows ³£¦³ 64 ¦ì¤¸ª©¥»¡A¨ä Windows API ºÙ¬° Win64 API¡C

±q Win16 API ¸g Win32 API ¨ì Win64 API¡AÁöµM·s¼W¤F³\¦h ¨ç¦¡¡A¦ý¬O¹ï¼¶¼gµ{¦¡ªº¤H¨Ó»¡¡A°ò¥»¬[ºc´X¥G¤£ÅÜ¡A®t§O¶È¶È¦b©ó¦³¨Ç°Ñ¼Æªø«×±q 16 ¦ì¤¸Åܦ¨ 64 ¦ì¤¸¡C¦Ó¤p¤ì-°¸¼gªº³o¥÷¡uWin64 ²Õ¦X»y¨¥¡v±Ð¾Ç¡A©Ò»¡ªº Windows API¡A­YµL¯S§O»¡©ú¡A³£¬O«ü Win64 API¡C

EXTRN °²«ü¥O

EXTRN ¬O«ü¥Ü²ÕĶ¾¹¨Ï¥Î¥~³¡ÅܼƦWºÙ¡B¼Ð°O©Î°Æµ{¦¡¦WºÙ¡A¤]¥i¥H¼g¦¨ EXTERN¡A·N¸q¬Û¦P¡A¥u¤£¹L EXTERN ¾A¥Î©ó·sª©ªº²ÕĶ¾¹¡A¨ä»yªk¬O¡G

EXTRN   name:qualifiedtype[,name:qualifiedtype[,...]]

°²¦p¬Y­Óµ{¦¡­n¨Ï¥Î§Oªºµ{¦¡©Ò©w¸qªº¦WºÙ¡A¥i¥H¦b«eªÌ¥H EXTRN «Å§i¸Ó¦WºÙ¬O¥Ñ§Oªºµ{¦¡©Ò©w¸qªº¡Aname ´N¬O§Oªºµ{¦¡©Ò©w¸qªº¦WºÙ¡C³oºØ±¡§Î¡A¤j¦hµo¥Í¦b§Ú­Ì­n©I¥sµ{¦¡¶}µo°Ó´£¨Ñªº°Æµ{¦¡¡A©Î¬O»s§@¤j«¬µ{¦¡¡C¤j«¬µ{¦¡¡A¨Ò¦p WORD¡BEXCEL µ¥¡A¥²©w¬O³\¦h¤H¤À¤u¦X§@¦Ó¨C­Ó¤H¥u­t³d¨ä¤¤¤@³¡¤À¡A¨C­Ó¤H­t³dªº¨º¤@³¡¤Àªº¬Y¨Ç¥\¯à¤@©w·|¸ò¨ä¥L¤Hªºµ{¦¡¦³Ãö¡A³o´N¬O EXTRN µo´§¥\¯àªº®É­Ô¡C

¨Ò¦p¦b¥Ò­ì©lµ{¦¡¨S¦³©w¸q¬Y­Ó¦WºÙ¡A°²³]¬O xyz ¦n¤F¡A¤]¨S¦³¥H EXTRN «Å§i¥¦¬°¥~³¡¦WºÙ¡F¦ý¬O¦b¤A­ì©lµ{¦¡¤w¸g©w¸q¹L xyz¡C³o®É¦pªGª½±µ²ÕĶ¥Ò¥²©w·|µo¥Í¿ù»~¡C¦ý¦pªG¦b¥Ò¤¤¦³«Å§i xyz ¬°¥~³¡¦WºÙ¡A±N¥Ò¡B¤A¤À§O²ÕĶ¦¨¥ØªºÀɳ£¤£·|µo¥Í¿ù»~¡A¦b³sµ²®É¡ALINK.EXE ¥i¥H¶¶§Qªº±NÅý¥Òµ{¦¡¨Ï¥Î¤Aµ{¦¡ªº xyz¡C

¤W­±ªº»yªk¤¤¡Aname ¥i¥H¬OÅܼƦWºÙ¡B¼Ð°O©Î°Æµ{¦¡¦WºÙ¡Fqualifiedtype ¥i¥H¬O BYTE¡BWORD¡BDWORD¡BQWORD¡BNEAR¡BFAR¡BPROC¡A«e¥|­Ó¥Î©óÅܼơA²Ä¤­¡B¤»­Ó¥Î©ó¼Ð°O¡A«á¤T­Ó¥Î©ó°Æµ{¦¡¦WºÙ¡CEXTRN ¥i¥H¦P®É«Å§i¦h­Ó¥~³¡¦WºÙ¡A¤¤¶¡¥H¡u,¡v¬Û¹j¡C

¦b FIRST.ASM ¤¤¡A·|©I¥s MessageBoxA »P ExitProcess ¨â­Ó API¡A«eªÌ¬O¥Î¨ÓÅã¥Ü¤@­Ó¹ï¸Ü²°¡A«áªÌ¥Î©óµ²§ôµ{¦¡¡C¥¦­Ì¬O·L³n©Ò¼¶¼gªºµ{¦¡¡A¦b FIRST.ASM ¤¤§¹¥þ¨S¦³¥¦­Ìªºµ{¦¡½X¡A©Ò¥H­n¥Î EXTRN «Å§i¥¦­Ì¬O¡u¥~³¡¡vªºµ{¦¡¡C

INCLUDELIB °²«ü¥O

¦]¬° Windows API ¼Æ¶qÃe¤j¡A©Ò¥H·L³n±N¤£¦PºØÃþªº API ¥]¸Ë¦b¤£¦Pªº DLL Àɮ׸̡A¦P®É¦b¥DÀɦW¤@¼Ëªº¶×¤Jµ{¦¡®w¡]°ÆÀɦW¬°¡u.LIB¡v¡^¦³¨ä©I¥s¸ê®Æ¡C¨Ò¦p FIRST.ASM ¤¤·|©I¥s ExitProcess API¡A¬d¾\ MSDN ±oª¾ MessageBoxA ¦b KERNEL32.DLL ¤¤¡A¦]¦¹¦b FIRST.ASM ¤¤¥²¶·§â»P¤§¬Û¦Pªº¥DÀɦW¦ý°ÆÀɦW¬°¡u.LIB¡v¡A¤]´N¬O KERNEL32.LIB ¶×¤Jµ{¦¡®w¤¤ªº¸ê®ÆÅn¬A¶i¨Ó¡C¨ä¤èªk¬O¨Ï¥Î¡uINCLUDELIB¡v°²«ü¥O¡C

INCLUDELIB ªº»yªk¬O¡G

INCLUDELIB  ¶×¤Jµ{¦¡®wÀɦW

¶×¤Jµ{¦¡®wÀɦW¥i¥H¥]§tºÏºÐ¾÷¦WºÙ¡B¸ô®|¦W¡C

EQU »P = °²«ü¥O

EQU »P = ¥Î¨Ó§â¤@­Ó²Å¸¹«Å§i¬°¤@­Ó¾ã¼Æ¡A¦Ó¨Ï±o¨ä«áªºµ{¦¡¯à¥Î¦¹²Å¸¹¥N´À¸Ó¾ã¼Æ¡C¥¦­Ìªº»yªk¬O¡G

²Å¸¹    EQU     ºâ³N¹Bºâ¦¡
²Å¸¹    =       ºâ³N¹Bºâ¦¡

¦¹³Bªººâ³N¹Bºâ¦¡¬O«ü¥i¥H¬O¥Îºâ³N­pºâªº¼Æ¾Ç¦¡¤l¡A¨ä¹Bºâ¤¸À³¸Ó³£¬OÅܼƩμƭȡC¹³©³¤Uªº¨Ò¤l¡A«Å§i¨â­Ó²Å¸¹¡A¤@­Ó¯x§Îªº length¡]ªø¡^¬° 12¡Awidth¡]¼e¡^¬° 5¡G

length  EQU     12
width   EQU     5
area    EQU     length*width

¦]¬°Áä½L¤W¨S¦³¡Ñ²Å¸¹¡A©Ò¥H¥Î * ¥Nªí­¼¸¹¡C³Ì«á area¡]­±¿n¡^·|µ¥©ó 60¡C

EQU »P = ªº®t§O¦³¤G¡G

  1. ¥H EQU «Å§i«áªº²Å¸¹µLªk§ó§ï¨ä­È¡F¦ý¬O¥H = «Å§iªº²Å¸¹¥i¥H§ó§ï¨ä­È¡C
  2. EQU ¤]¥i¥H§â¤@­Ó²Å¸¹«Å§i¬°¦r¦ê¡F¦ý = ¤£¯à¡C

¦pªG­n§â²Å¸¹«Å§i¬°¦r¦ê¡A¨ä»yªk¬O

²Å¸¹    EQU     <¦r¦ê>

ÁöµM¥H EQU §â¬Y­Ó²Å¸¹«ü©w¬°¬Y¼Æ¡A¸Ó²Å¸¹µLªk­×§ï¬°¥t¤@­Ó¼Æ­È¡F¦ý¬O¥H EQU §â¬Y­Ó²Å¸¹«ü©w¬°¬Y¦r¦ê¡A«o¬O¥i¥H­×§ï¦¨¥t¤@­Ó¦r¦ê¡C

¥H³o¨â­Ó°²«ü¥O«Å§i²Å¸¹¡A¦³¨â­Ó¦n³B¡G

  1. ­×§ïµ{¦¡«Ü¤è«K¡G°²³]¦bµ{¦¡¤¤¦³­Ó±`¼Æ¡A«Ü±`¥Î¨ì¡A¥H­P©ó¥X²{©óµ{¦¡¦U³B¡C´N¥i¥H¥Î EQU «Å§i¥H¤@­Ó²Å¸¹¥N´À±`¼Æªº¼Æ­È¡A¸U¤@­þ¤Ñ³o­Ó±`¼Æ­n§ó°Ê¡A¥u»Ý­n­×§ï¥Î EQU «Å§iªº¦a¤è´N¥i¥H¤F¡C
  2. ¼W¥[¥iŪ©Ê¡G¥H¦³·N¸qªº²Å¸¹¦WºÙ¥N´À¼Æ­È¡A¥²µM¯àª¾¹D¨ä¥Nªíªº·N¸q¡C

µù¸Ñ¡G¡u;¡v»P COMMENT

¤Z¬O¦b¡u;¡v¤§«áªº¤å¦r³£·|³Q ML64.EXE ©Ò©¿²¤¡A¥i¥H·í¦¨µù¸Ñ¡C¡u;¡v¥i¥H¦b¤@¦æªº¶}ÀY¡A¤]¯à¦b¨ä¥L¦ì¸m¡C¤£½×¦b­þ¨à¡A¦b¡u;¡v¤§«á¨ì¦¹¦æªºµ²§ô¡A³£·|³Q ML64.EXE ©¿²¤¦Ó·í¦¨µù¸Ñ¡C

µù¸Ñ¬OÅý¤H¡]¥]§t³o­Óµ{¦¡ªº³]­p¤H»P§O¤H¡^ª¾¹D¡A³o¤@¦æ©Î³o´X¦æµ{¦¡ªº§@¥Î¡AÁA¸Ñµ{¦¡¹B§@¡A¶i¦Ó­×§ï©Î°£¿ù¡Cµ{¦¡³]­pªº¤HÀ³¾¨¶q¯d¤Uµù¸Ñ¡A¥H«K¤é«á­×§ï¡C§Y¨Ï¦b§A½s¼gµ{¦¡ªº·í¤U¡A«Ü²M·¡¦UºØ²Ó¸`¡F¦ý¹L¤F´X¶g¡B´X­Ó¤ë´N®e©ö²H§Ñ¡A¦]¦¹¤£¥i¤£¯d¤Uµù¸Ñ¡C¼g¤Uªºµù¸Ñ³Ì¦n¯à»¡©úºtºâªk¡B©Ò¥Îªº­ì²z¡BÅܼƩҥNªíªº·N¸q¡K¡K©Î¬O·í®Éªº·Qªkµ¥µ¥¡A¶V¸Ô²Ó¶V¦n¡F¤£­n¼g¤@¨ÇµL·N¸qªºµù¸Ñ¡A¨Ò¦p¤U­±ªºµù¸Ñ¬O¨S¦³·N¸qªº¡G

;***************************************    ;³o¬Oµù¸Ñ

¦³®Éµù¸Ñ¤Óªø¡A¥²¶·¨Ï¥Î¦n´X¦æ¤å¦r®É¡A¥i¥H¥Î COMMENT ¨Ó·í¦¨µù¸Ñ¡ACOMMENT ªº»yªk¬O¡G

COMMENT ¤À¹j¦r¤¸
µù¸Ñ¤å¦r
¤À¹j¦r¤¸

¤À¹j¦r¤¸¥i¥H¬O¥ô·N¦r¤¸¡A¦ý¬O¤£¥i¥H¥X²{¦bµù¸Ñ¤å¦r¤¤¡A°²¦p³o¼Ëªº¸Ü¡A²ÕĶ¾¹·|»{¬°µù¸Ñµ²§ô¤F¡A¦Óµo¥Í¿ù»~¡Cµù¸Ñ©ñ¦b¨â­Ó¤À¹j¦r¤¸¤§¶¡¡A¥i¥H¦³³\¦h¦æ¡A¥B«e­±¤£»Ý­n¥[¤W¡u;¡v¡C

°Ï¬q¡]Section¡^

²{¥Nµ{¦¡¥]§t¤Fµ{¦¡½X»P¸ê®Æµ¥´X³¡¤À¡Aµ{¦¡½X¬O¥Î¨Ó³B²z¸ê®Æªº¡C¨Ò¦pÅý CPU ¹Bºâ 2¡Ï3¡×5¡A2 »P 3 ¬O¸ê®Æ¡A¡u¡Ï¡v©M¡u¡×¡v¬Oµ{¦¡½X¡C²{¦bªºµ{¦¡³£¬O§â¸ê®Æ©ñ¦b¤@­Ó°Ï¬q¡]section¡^¡Aµ{¦¡½X©ñ¦b¥t¤@°Ï¬q¡C

¦b Win64 µ{¦¡¤¤¡A¥i¥H¤À¦¨¤TºØ°Ï¬q¡G¸ê®Æ°Ï¬q¡Bµ{¦¡½X°Ï¬q©M°ïÅ|°Ï¬q¡C¤@­Ó°Ï¬q¶}©lªº¦a¤è¡A´N¬O¥t¤@­Ó°Ï¬qªºµ²§ô¤§³B¡A¦]¦¹¤£¥²¼g¥X°Ï¬q¦b­þ¨àµ²§ô¡C¨Ò¦p²Ä¤Q¤G¦æ¬O¡u.CODE¡v¡Aªí¥Üµ{¦¡½X°Ï¬q¶}©l©ó¦¹³B¡A¦P®É¤]¬O«e¤@­Ó°Ï¬q¡A.CONST¡Aªºµ²§ô¡C

µ{¦¡½X°Ï¬q¥Î¡u.CODE¡v«Å§i¡F¸ê®Æ°Ï¬q¦³¤TºØ¡A¤À§O¥Î¡u.CONST¡v¡B¡u.DATA¡v©Î¡u.DATA?¡v«Å§i¡F°ïÅ|°Ï¬q¦b Win64 µ{¦¡¤¤¤£¶·«Å§i¡A¥Ñ¨t²Î³]©w¡C³o¨Ç«Å§i°Ï¬qªº°²«ü¥O¡A¤£°Ï¤À¤j¤p¼g¡A¥ç§Y«Å§iµ{¦¡½X°Ï¬q¥Î¡u.CODE¡v¥i¥H¡A¥Î¡u.code¡v¤]¥i¥H¡C¤Uªí¬O«Å§i°Ï¬qªº¤èªk¡A¥H³o¼Ëªº¤è¦¡«Å§i°Ï¬q¸û¬°Â²©ö¡AWin64 ¤¤±`¥H³oºØ¤è¦¡«Å§i¡A¤Uªí²Ä¤G¦æ¬O«Å§i«á°Ï¬q¦WºÙ¡C

«Å§i¦WºÙ»¡¡@¡@©ú
.CODE_TEXTµ{¦¡½X°Ï¬q¡A³q±`·|¦³³\¦h x86 «ü¥O¤Î»P¤§°t¦Xªº°²«ü¥O¡C
.CONSTCONST¦s©ñ±`¼Æ¸ê®Æªº°Ï¬q¡A¦b³oºØ°Ï¬q¤ºªº¸ê®Æ¥u¯àŪ¨ú¤£¯à§ó§ï¡C
.DATA?_BBS¦s©ñÅܼƸê®Æªº°Ï¬q¡A¦b³oºØ°Ï¬q¤ºªº¸ê®Æ¥i¥HŪ¨ú¤]¥i¥H§ó§ï¡F¦pªG¦b³o°Ï¬q©w¸qÅܼơA¤£¥²³]©wªì©l­È¡A§Y¨Ï³]©w²ÕĶ¾¹¤]·|¨Ï¨äÅܦ¨ 0¡C
.DATA_DATA¦s©ñÅܼƸê®Æªº°Ï¬q¡A¦b³oºØ°Ï¬q¤ºªº¸ê®Æ¥i¥HŪ¨ú¤]¥i¥H§ó§ï¡F¦pªG¦b³o°Ï¬q©w¸qÅܼơA¥i¥H³]©wªì©l­È¡A¤]¥i¥H¤£³]¡C¦pªG³]©wªì©l­È¡A²ÕĶ¾¹¤£·|§ïÅÜ¥¦¡C
.STACK°ïÅ|°Ï¬q¡A­ì©l½X¤º¤£³]©w¡A§_«hµo¥Í¿ù»~¡A¥¦¥²¶·¥Ñ¨t²Î³]©w¡C

FIRST.ASM ¤¤ªº²Ä¤C¡B¤Q¤@¡B¤Q¤T¡B¤G¤Q¤­¦æ¬Oµù¸Ñ¡A¦Ó¥B¾ã¦æµù¸Ñ¡C³o¼Ë§@ªº¥Øªº¡A¥u¬O¬°¤F°Ï¹j¨â­Ó°Ï¬q©Î°Æµ{¦¡¡A¥H¤è«K¾\Ū¡A¨S¦³¯S§Oªº¥\¥Î¡C

¸ê®ÆÃþ«¬

FIRST.ASM ¤¤ªº²Ä¤E¡B¤Q¦æ¬O

szCaption       DB      "²Ä¤@­ÓWin64µ{¦¡",0
szText          DB      "³o¬O¥Î²Õ¦X»y¨¥¼gªº64¦ì¤¸µ{¦¡¡C",0

³o¨â¦æ¤À§O©w¸q¤F¨â­Ó¦r¦ê¡A¦r¦ê¬O¤@ºØ¡u¸ê®ÆÃþ«¬¡v¡A¥i¥H·Q¦¨¬O¤@¬q¤å¦r¡C¦]¦¹¡A³o¨â¦æ¥i¥H·Q¦¨¬O©w¸q¨â¬q¤å¦r¡C¹q¸£¤£¶È¥i¥H³B²z¼Æ­È¡A·íµM¤]¯à³B²z¤å¦r¡A³o¨Ç¬O¤£¦Pªº¸ê®ÆºØÃþ¡A´NºÙ¬°¸ê®ÆÃþ«¬¡]Data type¡A¤]ºÙ¸ê®Æ«¬ºA¡^¡C©w¸q¦r¦ê¥i¥H¥Î°²«ü¥O¡uDB¡v¡]DB ¬O define byte ªº·N«ä¡^©Î¡uBYTE¡v¡A³o¨â­Ó«ü¥O¨ä¹ê¬O¤@¼Ëªº¡C¡uDB¡v©Î¡uBYTE¡vªº»yªk¬O¡G

¦r¦ê¦W  DB      ¦r¦ê¤º®e
¦r¦ê¦W  BYTE    ¦r¦ê¤º®e

¦r¦êªº¤º®e¥²¶·¥Î¤@¹ï¡u"¡v©Î¡u'¡v¬A°_¨Ó¡C

¦pªG­n©w¸q¾ã¼Æªº¸ê®ÆÃþ«¬¡A¥i¥H¥Î¡uDB¡v¡B¡uDW¡v¡B¡uDD¡v¡B¡uDQ¡v¥|ºØ°²«ü¥O¡A¨Ì·Ó©Ò¨Ï¥Îªº¾ã¼Æ½d³ò¦Ó©w¡A¦p¤Uªí¡G

°²«ü¥O¦P¸q°²«ü¥O¦WºÙªø«×
¡]¦ì¤¸²Õ¡^
¦ì¤¸¼Æ©Ò¯àªí¥Üªº¥¿¾ã¼Æ½d³ò¤¤¤å
DBBYTE¦ì¤¸²Õ180¡ã255¨â¦Ê¤­¤Q¤­
DWWORD¦r²Õ2160¡ã65,535¤»¸U¤­¤d¦h
DDDWORDÂù¦r²Õ4320¡ã4,294,967,295¥|¤Q¤G»õ¦h
DQQWORD¥|¦r²Õ8640¡ã18,446,744,073,709,551,615¤@¤d¤K¦Ê¨Ê¦h

©³¤Uªº¨Ò¤l¬O©w¸q¡uminutes¡vÅܼƬ° 60¡A¡udays¡vÅܼƬ° 365¡A¡useconds_per_day¡vÅܼƬ° 15180h¡C¦b²Õ¦X»y¨¥¤¤¡A­nªí¥Ü¤Q¤»¶i¦ì¼Æ¡A´N¦b¸Ó¼Æ­È¤§«á¥[¤W¡uh¡v©Î¡uH¡v¡F¤Q¶i¦ì¼Æ«h¦b¼Æ­È«á­±¥[¤W¡ud¡v©Î¡uD¡v¡A¤]¥i¥H¬Ù²¤¡A³o¬O¤º©wªº¡F¤K¶i¦ì¼Æ«h¦b¼Æ­È«á­±¥[¤W¡uo¡v©Î¡uO¡v¡F¤G¶i¦ì¼Æ«h¥[¤W¡ub¡v©Î¡uB¡v¡C

minutes         DB      60
days            DW      365
seconds_per_day DD      15180h  ; ¼Æ­È«á¦³¡uh¡v¡Aªí¥Ü¤Q¤»¶i¦ì¼Æ­È
year            DD      ?

¦pªGÅܼƨS¦³ªì©l­È¡A¤]¥i¥H¥Î¡u?¡vªí¥Ü¡A¦ý¥²¶·¦b¡u.DATA¡v©Î¡u.DATA?¡v°Ï¬q¤º¡A¨Ò¦p¤W­±ªº¡uyear¡vÅܼơC

¤ñ¸û¯S§Oªº¬O¡uDB¡v¡A¥i¥H©w¸q 0¡ã255 ªº¥¿¾ã¼Æ¡]µù¤T¡^¡A¥¿¾ã¼Æ¬O¼Æ¾Ç¤Wªº³N»y¡A¦b¹q¸£¥Î»y¤W±`¨Ï¥ÎµL¸¹¼Æ¡]unsigned integer¡^¡A¨âªÌ¥iµø¬°¬Û¦P¡CDB °£¤F¯à©w¸q 0¡ã255 ¤§¶¡ªºµL¸¹¼Æ¥~¡A¤]¯à©w¸q¦r¦ê¡A©ó©w¸q¦r¦ê®É¡A¬O¥Î¤@¹ï¡u"¡v©Î¡u'¡v±N¦r¦ê¬A°_¨Ó¡C

¦b¹q¸£¤¤¡A¼Æ­È¤£¶È¶È¬O¼Æ­È¡A¦³®É¤]¬O¦r¤¸¡C¬ü°ê°ê®a¼Ð·Ç¨ó·|¡]American National Standards Institute¡A²ºÙ ANSI¡^¨î©wªº ASCII ½s½X¤è¦¡´N¥Î 41H ¥Nªí­^¤å¦r¥Àªº¡uA¡v¡A42H ¥Nªí¡uB¡v¡K¡K¡]°Ñ¦Ò DOS ²Õ¦X»y¨¥ªþ¿ý¥|¡^¡C¹q¸£¬Ý¨ì 41H¡A´N·|¨Ì¾Ú¦¹¼Æ­È¨ì¦r§ÎÀɤ¤¥h§ä¥Nªí 41H ªº¦r§Î¡C·íµM³o­Ó¦r§Î¦­¤w³]­p¦¨¡uA¡vªº¼Ë¤l¤F¡A©Ò¥H´N¯à¦b¿Ã¥ú¹õ¤WÅã¥Ü¥X¡uA¡vªº¼Ë¤l¡C¥Ñ³\¦h¦r¤¸²Õ¦X°_¨Ó¡A´N§Î¦¨¦r¦ê¡C·íµM¨C­Ó¤H©Î¹q¸£³£­n¨Ï¥Î¦P¤@ºØ½s½X¤è¦¡¡A§_«h¦b¬Y³¡¹q¸£¥Í¦¨ªº¸ê®Æ©ÎÀɮסA®³¨ì¥t¤@³¡¹q¸£¤W¥h«KµLªk·¾³q¡C

¤@­Ó¦ì¤¸²Õ¥i¥Hªí¥Ü 0¡ã255 ­Ó¼Æ­È¡A¤@­Ó¼Æ­È¥Nªí¤@­Ó¦r¥À¡C¦Ó­^¤å¦r¥À¦@ 26 ­Ó¡A¦A¥[¤Wªü©Ô§B¼Æ¦r¡B¤@¨Ç²Å¸¹¡A©Ò¥H¥Î¤@­Ó¦ì¤¸²Õ´N°÷¤F¡C¦ý¬O¡A±`¥Îªº¤¤¤å¦r´N¦³¼Æ¤d¡A©Ò¥H¥²¶·¥Î¨â­Ó¦ì¤¸²Õªí¥Ü¡C¦­´Á§Ú­Ì¨Ï¥Î¸ê°T¤u·~µ¦¶i·|©Ò¨î©wªº Big5 ½s½X¤è¦¡¡A¨Ò¦p¡u0B2C4H¡v¥Nªí¡u²Ä¡v¡C

²Ä¤K¦æ¨ì²Ä¤Q¦æ¬O

.CONST
szCaption       DB      "²Ä¤@­ÓWin64µ{¦¡",0
szText          DB      "³o¬O¥Î²Õ¦X»y¨¥¼gªº64¦ì¤¸µ{¦¡¡C",0

·N«ä´N¬O»¡¡A¦¹³B¦³¤@­Ó¸ê®Æ°Ï¬q¡A¦Ó¦¹¸ê®Æ°Ï¬q¬O¦s©ñ±`¼Æªº¸ê®Æ°Ï¬q¡A¦¹³B©Ò¦s©ñªº±`¼Æ¬O¨â­Ó¦r¦ê¡AszCaption »P szText¡C¦bµ{¦¡°õ¦æ¹Lµ{¤¤¡A³£µLªk§ó§ï³o¨â¦r¦êªº¤º®e¡C·í²ÕĶ¾¹²ÕĶ«á¡A³o¨â­Ó¦r¦ê³£·|Åܦ¨¤@¦ê¼Æ­È¡A¹³ szCaption ªº²Ä¤@­Ó¦ì¤¸²Õ¬O B2H¡B²Ä¤G­Ó¦ì¤¸²Õ¬O C4H¡C

«Å§i°Æµ{¦¡¡GPROC/ENDP

«e­±¤w¸g»¡¹L¦³Ãö¥Dµ{¦¡»P°Æµ{¦¡ªº·§©À¡A©³¤U¨Ó¬Ý¬Ý¦p¦ó§â¬Y­Óµ{¦¡¤ù¬q«Å§i¦¨°Æµ{¦¡¡C«Ü²³æ¡A¨Ï¥Î PROC °²«ü¥O¡A¦Ó PROC ¥²©w­n»P ENDP °²«ü¥O·f°t¡A¥¦­Ìªº»yªk¬O¡G

label  PROC  [distance][language-type][visibility][USES ¼È¦s¾¹¦Cªí][°Ñ¼Æ¦Cªí][FRAME[:ehandler-address]]
       µ{¦¡¤ù¬q
label  ENDP

label ¬O°Æµ{¦¡ªº¦WºÙ¡A¦b Win64 ùجO°Ï¤À¤j¤p¼gªº¡A¦]¦¹©R¦W®É­nª`·N¡C¥Î[]¬A°_¨Óªº¥i¥H¬Ù²¤¡A¡udistance¡v¡]¶ZÂ÷¡^©M¡ulanguage-type¡v¡]»y¨¥Ãþ«¬¡^¥u¦³¦b 16 ¦ì¤¸©Î 32 ¦ì¤¸ªº MASM ¤¤¤~¦³®Ä¡F¡uFRAME¡v ¥u¾A¥Î©ó ML64.EXE¡A¸Ô²Óªº±¡§Î¥i¥H°Ñ¦Ò·L³nªººô­¶¡A¦ý¦¹³B¥Î¤£¨ì¥H«á¦³¾÷·|¦A»¡¡C¦¹³B¥u»¡©ú visibility¡BUSES¡B°Ñ¼Æ¦Cªí¤T¶µ¡G

  1. visibility¡G¥i¥H¬O PRIVATE¡BPUBLIC ©Î EXPORT¡CPRIVATE ªí¥Ü¥u¦³¥»¼Ò²Õ¥i¥H©I¥s¦¹°Æµ{¦¡¡FPUBLIC ªí¥Ü¹ï©Ò¦³ªº¼Ò²Õ³£¥i©I¥s¡FEXPORT ªí¥Ü¬O¾É¥Xªº¨ç¼Æ¡A·í½s¼g DLL ªº®É­Ô­n±N¬Y­Ó¨ç¼Æ¾É¥Xªº®É­Ô¥i¥H³o¼Ë¨Ï¥Î¡C¹w³]­È¬O PUBLIC¡A¤j³¡¤Àµ{¦¡ªº°Æµ{¦¡³£¨Ï¥Î³o­Ó¿ï¶µ¡C
  2. USES ¼È¦s¾¹¦Cªí¡G¦b²ÕĶ®É¡A²ÕĶ¾¹·|§â¦¹¦Cªíªº¼È¦s¾¹±À¤J°ïÅ|¡A±N¨ä­È«O¯d¤U¨Ó¡A¦b RET «ü¥O«e¥Ñ°ïÅ|¼u¥X¦Ü­ì¼È¦s¾¹¡C´«¥y¸Ü»¡¡A°Æµ{¦¡°õ¦æ§¹²¦«á¡A¦b¦¹¦Cªí¤ºªº¼È¦s¾¹¤§­È¤£·|§ïÅÜ¡C¦³Ãö¼È¦s¾¹»P°ïÅ|¡Aµy«á¦A¸Ñ»¡¡C
  3. °Ñ¼Æ¦Cªí¡G¥Dµ{¦¡­n¶Çµ¹°Æµ{¦¡ªº¸ê®Æ¡A³£¦s¦b°Ñ¼ÆùØ¡C°Ñ¼Æ¥i¯à¤@­Ó¡B¨â­Ó¡K¡K¨Ã¤£¤@©w¡A¤]¦³¤£»Ý­n°Ñ¼Æªº¡Aµø±¡ªp¦Ó©w¡C¨Ò¦p«Ø¥ßµøµ¡ªº°Æµ{¦¡¡A´N»Ý­n¶Ç¤Jµøµ¡¼ÐÃDÄ檺¤å¦r¡Bµøµ¡¼e«×¡Bµøµ¡°ª«×µ¥¸ê®Æ¡C¦]¦¹§â³o¨Ç°Ñ¼Æ°µ¦¨¤@¦C¡A¹³¡u°Ñ¼Æ1:¸ê®ÆÃþ«¬,°Ñ¼Æ2:¸ê®ÆÃþ«¬¡K¡K¡v¡A°Ñ¼Æ¦WºÙ¤£¯à©M¸ê®Æ°Ï¬q©Ò©w¸qªºÅܼƦWºÙ©Î°Ï°ìÅܼƦWºÙ¬Û¦P¡AÃþ«¬¥i¯à¬OÂù¦r²Õ¡]DWORD¡^©Î¥|¦r²Õ¡]QWORD¡^¡A¤]¬O¨Ì±¡§Î¦Ó©w¡C

PROC »P ENP ¤§¶¡ªºµ{¦¡¤ù¬q´N¬O label °Æµ{¦¡ªº¤º®e¡C·í¥Dµ{¦¡§â±±¨îÅv¥æµ¹°Æµ{¦¡®É¡A·|±q°Æµ{¦¡ªº²Ä¤@¦æ¶}©l°õ¦æ¡A³v¤@©¹¤U°õ¦æ¨C¤@¹D«ü¥O¦Ü°Æµ{¦¡³Ì«á¤@¦æ¡AµM«á§â±±¨îÅvÂkÁÙ¥Dµ{¦¡¡C

·í¨Ï¥ÎªÌ­n Windows °õ¦æ FIRST.EXE ®É¡AWindows ªº°µªk¨ä¹ê´N¬O©I¥s FIRST.EXE ¤¤ªº main °Æµ{¦¡¡A³o¼Ë´N¯à§â±±¨îÅv²¾¨ì main °Æµ{¦¡¤¤¡A¦]¬°³o­Ó¹Lµ{ Windows ¨S¦³¶Ç»¼°Ñ¼Æ¡A¦]¦¹¡umain PROC¡v¤§«á¨S¦³¨ä¥L¸ê®Æ¡C¨Æ¹ê¤W¡AWindows °õ¦æÀ³¥Îµ{¦¡®É¡A³£¬O¾ú¸g³o¼Ëªº¹Lµ{¡C

FIRST.EXE ¥u¦³¤@­Ó°Æµ{¦¡¡A¦ý¬O¦pªG­n°õ¦æªºÀ³¥Îµ{¦¡«Ü¦h°Æµ{¦¡¡A¨º»ò­þ¤@­Ó¤~¬Oµ¹ Windows ©I¥sªº©O¡H­ì¨Ó²ÕĶ®É¡A¦b¡u©R¥O´£¥Ü¦C¡v¤¤¤U¹F¡uml64 first.asm /link /entry:main¡v«ü¥O¡A¦b³oùتº¡u/entry:¡v«á­±©Ò±µªº°Æµ{¦¡¡A´N¬Oµ¹ Windows ©I¥sªº¡C¤]¥i¥H»¡¡Amain °Æµ{¦¡¬OÀ³¥Îµ{¦¡ªº¶i¤JÂI¡A·í Windows §@·~¨t²Î°õ¦æ FIRST.EXE µ{¦¡®É¡A¬O±q³oùض}©l°õ¦æ¡C©Ò¥H§Ú­Ì¥i¥H³o¼Ë·Q¡A·í FIRST.EXE °õ¦æ®É¡A¬O¥Ñ Windows ¨t²Î©I¥s main¡AWindows ¨t²Î¬O¡u¥Dµ{¦¡¡v¡Amain ¬O¡u°Æµ{¦¡¡v¡C

¶i¤J main °Æµ{¦¡¤§«á¡A¦@¦³¤Q¤@¹D«ü¥O¡]FIRST.ASM ªº²Ä 15¡ã25 ¦æ¡^¡A³o¤Q¤@¹D«ü¥O·|Åã¥Ü¤@­Óµøµ¡¡AµM«áÅý¨Ï¥ÎªÌ«ö¡u½T©w¡v«ö¶sµ²§ôµ{¦¡¡C³o¤Q¤@¹D«ü¥O¡A³£¬O«ü´§ CPU ¨Ï¨ä¶i¦æ¹Bºâ¡A¹³³o¼Ëªº«ü¥OºÙ¬° CPU «ü¥O¡A¦Ó Windows §@·~¨t²Î¤j³¡¤À³£¬O¦w¸Ë¦b x86 ®a±Úªº CPU¡A©Ò¥H³o¨Ç«ü¥O³£¬O x86 «ü¥O¡C©³¤U¤p¤ì°¸¥ý¸ÑÄÀ³o¨Ç«ü¥O¦p¦ó¹B§@¡AµM«á¦A»¡©ú¬°¦ó¨Ï¥Î³o¨Ç«ü¥O¡A´N¯àÅã¥Ü¤@­Óµøµ¡¡AµM«áÅý¨Ï¥ÎªÌ«ö¡u½T©w¡v«ö¶sµ²§ôµ{¦¡¡C

x86 «ü¥O¡GXOR

XOR ¤¤¤åºÙ¬°¡u¤¬¥¸©Î¡v¡]exclusive or¡^¡A¬OÅÞ¿è¹Bºâªº¤@ºØ¡C¥ý¬Ý¬Ý¤é±`¥Í¬¡¤¤Ãþ¦üªº¨Ò¤l¡A¨Ò¦p°ª¤¤¤G¦~¯Å¾Ç¥Í±N­±Á{¿ï¾ÜªÀ·|²ÕÁÙ¬O¦ÛµM²Õ¡A·íµM¦P­Ó¤H¥u¯à¿ï¤@²Õ´NŪ¡C¦pªG¦³¦ì¾Ç¥Í¥u¿ï¾Ü¨ä¤¤¤§¤@¡A¥Nªí¥L¤w¿ï²Õ§¹¦¨¡F¦pªG¦³¥t¤@¦ì¾Ç¥ÍÁÙ¥¼¿ï¾Ü¡A·íµM´NÁÙ¨S§¹¦¨¡F¦pªGÁÙ¦³¥t¤@¦ì¾Ç¥Í¨â²Õ³£¿ï¡A¾Ç®Õ·íµM¤£·|¦P·N³o¼Ëªº¤è¦¡¡A¤]¥Nªí¥LÁÙ¨S§¹¦¨¡C³o¤]¬O¡u¤¬¥¸©Î¡vªº¦WºÙ¥Ñ¨Ó¡AŪªÀ·|²Õ»PŪ¦ÛµM²Õ¤£¯à¦P®Éµo¥Í¡A¬O¬°¡u¤¬¥¸¡v¡F¦Ó¨âªÌ¥u¯à¿ï¾Ü¤@ºØ¡A¥u­n¥ô¿ï¤@ºØ´N¥Nªí§¹¦¨¡A¬O¬°¡u©Î¡v¡C

¥H¤W­±°ª¤G¾Ç¥Í¿ï²Õ¬°¨Ò¡A¿ï¾Ü¬Y¤@²Õ·í°µ¯u¡A¥H¡u1¡vªí¥Ü¡F¤£¿ï¬Y¤@²Õ·í°µ°²¡A¥H¡u0¡vªí¥Ü¡C¬Y¦ì¾Ç¥Í¤w§¹¦¨¿ï²Õ·í°µ¯u¡A¥H¡u1¡vªí¥Ü¡FÁÙ¥¼§¹¦¨·í§@°²¡A¥H¡u0¡vªí¥Ü¡C¥|¦ì¾Ç¥Í¤À§O¥Nªí¥|ºØ±¡§Î¡A¦C¦¨¤@±iªí¦p¤U¡C¾Ç¥Í¥Ò¥Nªí¥L³£ÁÙ¨S¿ï¾Ü¡A¬G¥¼§¹¦¨¿ï²Õ¡F¾Ç¥Í¤A¥Nªí¥L¿ïªÀ·|²Õ¡A¤w§¹¦¨¿ï²Õ¡K¡K¨ä¾l¨Ì¦¹Ãþ±À¡C

¾Ç¥Í¿ïªÀ·|²Õ¿ï¦ÛµM²Õ¬O§_¤w§¹¦¨¿ï²Õ
¥Ò000
¤A101
¤þ011
¤B110

¦b¹q¸£¤¤­n¹ê²{¬O§_§¹¦¨¿ï²Õªº¹Bºâ¡A´N¯à¨Ï¥Î¡u¤¬¥¸©Î¡v¹Bºâ¡C¦b¹q¸£¸Ì¡A¤¬¥¸©Î¹Bºâ¡B¥B¹Bºâ¡B©Î¹Bºâ¡B«D¹Bºâ¬O¥|ºØ±`¨£ªºÅÞ¿è¹Bºâ¡A¹q¸£³Ì¾Õªø³B²z¼Æ­È¡A¤×¨ä¬O¤G¶i¦ì¡A¦]¦¹¦b¹q¸£¤¤¡A±`¥H 0 ¥Nªí°°¡B°²¡B§_©wªº¡F¥H 1 ¥Nªí¯u¡B¬O¡BªÖ©wªº¡C¦b³\¦hµ{¦¡¤¤¡A¤]·|«Å§i¡uTRUE¡v¥Nªí¡u1¡v¡B¡uFALSE¡v¥Nªí¡u0¡v¡C¨â­Ó¤@¦ì¤¸ªº¹Bºâ¤¸°µ XOR ¹Bºâ¡A¦³¥|ºØ¤è¦¡¡A¦p¤Uªí¡]¹Bºâ¤¸¬O¤°»ò¡A½Ð¬ÝµùÄÀ¡^¡G

0 XOR 0¡×0
1 XOR 0¡×1
0 XOR 1¡×1
1 XOR 1¡×0

¹³³o¼Ë§âÅÞ¿è¹Bºâ¦C¦¨ªºªí®æ¡AºÙ¬°¯u­Èªí¡C¤W­±´N¬O XOR ªº¯u­Èªí¡C¦pªG§A¥J²ÓÆ[¹î¡A´N·|µo²{¡G①¨â­Ó¬Û¦Pªº¹Bºâ¤¸§@¤¬¥¸©Î¹Bºâ¡Aµ²ªG¬° 0¡F②¨â­Ó¬Û²§¹Bºâ¤¸§@¤¬¥¸©Î¹Bºâ¡Aµ²ªG¬° 1¡C¡]A XOR B¡×R ¤¤¡AA¡BB ³£ºÙ¬°¹Bºâ¤¸¡AR ºÙ¬°µ²ªG¡^

¦b x86 «ü¥OùØ¡AXOR ªº»yªk¬O¡G

XOR     ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸

XOR ªº¹Bºâ¬O¥Øªº¹Bºâ¤¸©M¨Ó·½ºâ¤¸§@¤¬¥¸©Î¹Bºâ¤§«á¡A¦A§âµ²ªG¼g¤J¥Øªº¹Bºâ¤¸ùØ¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƻP¥ß§Y­È¡C¼È¦s¾¹¬O CPU ¸Ì­±¤@¶ô¼È®É¦s©ñ¼Æ­È®e¶q«Ü¤pªº°O¾ÐÅé¡A¦ý¬O CPU ¥iª½±µ¹ï¨ä¹Bºâ¦Ó¥B³t«×«Ü§Ö¡A¦b²Õ¦X»y¨¥¤¤·|®É®É¹B¥Î¨ì¼È¦s¾¹¡C¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬OÅܼơA¦Ó¥Bªø«×¥²¶·¬Û¦P¡A¨Ò¦p³£¬O 64 ¦ì¤¸¡A¦Ó¤£¯à¤@­Ó¬O 64 ¦ì¤¸¥t¤@­Ó¬O 16 ¦ì¤¸¡C

Á|­Ó¨Ò¤l¡A­Y AL¡×6BH¡ABL¡×C2H¡A°õ¦æ¡uXOR AL,BL¡v«áªºµ²ªG¬O¤°»ò©O¡H½Ð°Ñ¦Ò¥k¹Ï¡G¡]¥k¹Ï¤w±N 6BH »P C2H ´«ºâ¦¨¤G¶i¦ì¼Æ¡A³o¼Ë¤~¯à¤@­Ó¦ì¤¸¤@­Ó¦ì¤¸¶i¦æ XOR ¹Bºâ¡^
AL ªº²Ä¹s¦ì¤¸»P BL ªº²Ä¹s¦ì¤¸§@¤¬¥¸©Î¹Bºâ¡A§Y¡u1 XOR 0¡v±o¡u1¡v¡]¬Û²§­È°µ¤¬¥¸©Î±o 1¡^
AL ªº²Ä¤@¦ì¤¸»P BL ªº²Ä¤@¦ì¤¸§@¤¬¥¸©Î¹Bºâ¡A§Y¡u1 XOR 1¡v±o¡u0¡v¡]¬Û¦P­È°µ¤¬¥¸©Î±o 0¡^

¨ä¾l¨Ì¦¹Ãþ±À¡A­ì«h´N¬O¨C¤@¦ì¤¸©M¥t¤@¬Û¹ïÀ³ªº¦ì¤¸¹Bºâ¡C³Ì«áµ²ªG´N¬O¡u6B XOR C2¡×A9¡v¡C¦]¦¹¡uXOR AL,BL¡v¤§«á¡AAL Åܦ¨ A9¡ABL ¤´¬O C2¡C

°õ¦æ XOR «ü¥O«á¡A·|¨Ì¾Ú¹Bºâµ²ªG¼vÅT CPU ¤º³¡¤@­ÓºÙ¬°ºX¼Ð¼È¦s¾¹ªº¼Æ­È¡CºX¼Ð¼È¦s¾¹¤£¥Î©ó¹Bºâ¡A¦ý¬O¥¦ªº¨C­Ó¦ì¤¸¦³¤£¦Pªº¦WºÙ¤Î¥\¯à¡A°O¿ý¹Bºâªºµ²ªG¨Ãªí¥Üª¬ºA¡A½Ð°Ñ¦Ò¡uDOS ²Õ¦X»y¨¥ªþ¿ý¤T¡v¡C¦¹³B¥ý¤¶²Ð¹s­ÈºX¼Ð¡]zero flag¡A²ºÙ ZF¡^¡C

¹s­ÈºX¼Ð¬OºX¼Ð¼È¦s¾¹ªº²Ä¤»¦ì¤¸¡C·í¹Bºâµ²ªG¬°¹s®É¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¤@¡AºÙ¬°¡u³]©w¹s­ÈºX¼Ð¡v¡A°£¿ùµ{¦¡·|¥H ZR ªí¥Ü¡F­Y¹Bºâµ²ªG¤£¬°¹s¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¹s¡AºÙ¬°¡u²M°£¹s­ÈºX¼Ð¡v¡A°£¿ùµ{¦¡·|¥H NZ ªí¥Ü¡C³o¸Ì«Ü¯S§O¡A¥i¯à¦³¤H·|¥H¬°¤p¤ì°¸¼g¿ù¡AÀ³¸Ó¡uºâµ²ªG¬°¹s®É¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¹s¡v¤~¹ï¡A¨ä¹ê¤£µM¡C¦b¹q¸£¤¤¡A¹Bºâµ²ªG¬°¯u¬O¤@¡A¬°°²¬O¹s¡C¹s­ÈºX¼ÐÀËÅçµ²ªG¬O§_¬°¹s¡A¬Gµ²ªG¬°¹s¡Aªí¥Ü¬°¯u¦]¦¹¹s­ÈºX¼Ð³]¬°¤@¡F¦pªGµ²ªG¤£¬°¹s¡Aªí¥Ü¬°°²¦]¦¹¹s­ÈºX¼Ð³]¬°¹s¡C

ºX¼Ð¼È¦s¾¹ªº²Ä¹s¦ì¤¸ªº¡u¶i¦ìºX¼Ð¡v¡]carry flag¡A²ºÙ CF¡^¡A¦ý XOR ¹Bºâ»P­É¦ì©Î¶i¦ìµLÃö¡A¦]¦¹ XOR ¤£¼vÅT¶i¦ìºX¼Ð¡A¤£½×µ²ªG«ç¼Ë³£·|³]¬°¹s¡C

XOR ¹Bºâ¦³¨â­Ó«Ü©_§®ªº¯S©Ê¡A¨º´N¬O¡G①¡u¦pªG¬Y­Ó¼Æ»P¦Û¤v§@¤¬¥¸©Î¹Bºâ¡A©Ò±oµ²ªG¬°¹s¡v¡F②¡u¬Y­Ó¼Æ»P¦P¤@¼Æ³s°µ¨â¦¸¤¬¥¸©Î¹Bºâ¤´±o¨ì­ì¼Æ¡v¡C¦b FIRST.ASM µ{¦¡¤¤ªº²Ä¤Q¤»¦æ¡A´N¬O§Q¥Î②ªº¤èªk¡A¨Ï RCX Åܬ°¹s¡]xor rcx,rcx¡^¡C

±µ¤U¨Óªº«ü¥O¬O¡upush rcx¡v¡A¦ý¦b½Í¥¦¤§«e¡A±o¥ý¤¶²Ð¡u¦ì§}¡vªºÆ[©À¡C

¦ì§}¡]Address¡^

¦b¥Á°ê 111 ¦~®É¡]¦è¤¸ 2022 ¦~¡^¡A­Ó¤H¹q¸£©Ò¦w¸Ëªº°O¾ÐÅé¡]°ÊºA°O¾ÐÅé¡^¤j¬ù 8¡ã16 GB¡AGB ¬O¤Q»õ¦ì¤¸²Õªº·N«ä¡A©Ò¥H¥i¥H»¡¬O¤K¤Q»õ¨ì¤@¦Ê¤»¤Q»õ­Ó¦ì¤¸²Õ¡C·í¹q¸£¶}¾÷®É¡A¤£ºÞ¬Oµ{¦¡½X©Î¸ê®Æ¡A³£¬OÀx¦s¦b°O¾ÐÅ餧¤¤¡C¦b³o»ò¦hªº°O¾ÐÅ餤¡A­n§ä¨ì¸ê®Æ¤@©w­n¥Î¯S§Oªº¤èªk¡A§_«h´N¹³¤j®ü¼´°w¯ë§xÃø¡C

°O¾ÐÅé¥H¤@­Ó¤@­Óªº¦ì¤¸²Õ¬°³æ¦ì¡A¥Ñ¹s¶}©l½s¸¹¡C²Ä¹s­Ó¦ì¤¸²Õ½s¸¹¬O¹s¡B²Ä¤@­Ó¦ì¤¸²Õ½s¸¹¬O¤@¡K¡K¡A¨Ì¦¹Ãþ±À¡A¤@ª½¨ì´X¤Q»õ©Î´X¦Ê»õ¬°¤î¡Aµø¹q¸£¤¤¸Ë¦³¦h¤Ö°O¾ÐÅé¨M©w¡C³oùتº 0¡B1¡B2¡B3¡Kµ¥½s¸¹¡AºÙ¬°¦ì§}¡C·í¹q¸£­n§â¸ê®Æ¦s¤J°O¾ÐÅé¡A©Î¥Ñ°O¾ÐÅéŪ¨ú¸ê®Æ®É¡A³£­n«ü©w¨ì­þ¤@­Ó¦ì§}ªº°O¾ÐÅé¥h¦s¨ú¡C¤]´N¬O»¡¡A¦b³o¯EÃvªº°O¾ÐÅé¸Ì¡ACPU ¬O¾a¦ì§}¨Ó§â¸ê®Æ¦s¤J°O¾ÐÅ餤¡A¤]¬O¾a¦ì§}±q°O¾ÐÅ餤Ū¨ú¸ê®Æ¡C

³oºØ±¡§Î´N¦n¤ñ¤@®y®ÈÀ]ªº¨C­Ó©Ð¶¡¤@¼Ë¡A³o¨Ç©Ð¶¡³£¦³¦Û¤v¿W¤@µL¤Gªº©Ð¸¹¡C¾ã®y®ÈÀ]¦n¤ñ°O¾ÐÅé¡A¦U©Ð¶¡¦n¤ñ°O¾ÐÅ餤ªº¨C­Ó¦ì¤¸²Õ¡A©Ð¸¹¦n¤ñ¬O¦ì§}¡A§ë±Jªº®È«È«h¬O°O¾ÐÅ餺ªº¸ê®Æ¡C·í®È«È§ë±J®É¡AªA°È¤H­û¤À°t¸Ó®È«È¨ì­þ¤@­Ó©Ð¶¡¥h¡A®È«È¨Ì¾Ú¸Ó©Ð¸¹¶i¤J¸Ó©Ð¶¡¹L©]¥ð®§¡C³o®É­Ô´N¦n¹³ CPU¡]¦n¤ñªA°È¤H­û¡^«ü©w¬Y¤@µ§¸ê®Æ¦s¤J¬Y­Ó¦ì§}ªº°O¾ÐÅ餺¡C

¤U¹Ï¬O§Q¥Î x64dbg ¸ü¤J FIRST.EXE «áªºµ²ªG¡]²Ä¤G³¹®É¡A¤p¤ì°¸·|¤@¨B¤@¨B»¡©ú¦p¦ó°µ¡^¡GÆ[¹î¤W¹Ï©³¤UªºÂŦâ®Ø®Ø¤º¡A³Ì¥kÃ䪺¤¤¤å¦r¦ê¡A³o´N¬O¦b FIRST.ASM ¤¤²Ä¤E¡B¤Q¦æ¥H¡uDB¡v©Ò©w¸qªº szCaption¡BszText ¨â­Ó¦r¦ê¡C¦Ó¤¤¶¡«h¬O³o¨Ç¤¤¤å¦r©Î­^¤å¦r¥À©Ò¥Nªíªº¼Æ­È¡A§¡¥H¤Q¤»¶i¦ìªí¥Ü¡A§A¥i¥H¬Ý¨ì¡u²Ä¡vªº Big5 ½s½X¬O B2C4H¡B¡u¤@¡vªº Big5 ½X¬O A440H¡C³Ì¥ªÃä«h¬O¨ä¦ì§}¡C§A¥i¥H¬Ý¨£ szCaption ¦b¦ì§} 13F752020 ³B¡AszText ¦b 13F752030 ³B¡C

¤£¶È¶È¸ê®Æ¬O¦s©ñ¦b°O¾ÐÅ餺¡A¨C¤@µ§¸ê®Æ³£¦³¨ä¦ì§}¡Fµ{¦¡½X¤]¬O¦s©ñ¦b°O¾ÐÅ餺¡A¤]¦³¨ä¦ì§}¡C¨Ò¦p¤W¹Ïªºµµ¦â®Ø¤ºªº²Ä¤@¦æ¡A¬O¡uxor rcx,rcx¡v«ü¥O¡A¥ªÃ䪺¡u13F751000¡v´N¬O¨ä¦ì§}¡F¤]´N¬O»¡¡uxor rcx,rcx¡v«ü¥Oªº©Ò¦b¦ì§}¬O 13F751000¡C±q³o¨à¡A§AÀ³·í¥i¥H±o¨ì¡u¦b­ì©lµ{¦¡¤¤©w¸qªºÅܼƩΦr¦ê¡A¤D¦Ü¨ì¨C¹D«ü¥O¡A³£·|¦b°O¾ÐÅ餤ªº¬Y­Ó¦ì§}¤W¡v¡C

§A©Ò¬Ý¨ìªº³o¨Ç¦r¦ê©Î«ü¥Oªº¦ì§}¡A«D±`¦³¥i¯à·|»P¤W¹Ï¤£¤@¼Ë¡A³o«D±`¥¿±`¡C¦]¬° Windows ¦b¶}¾÷®É¸ü¤JªºÅX°Êµ{¦¡¡BªA°Èµ{¦¡ªº¦h¹è¡AÁÙ¦³¨Ï¥ÎªÌ°õ¦æµ{¦¡ªº¦h¹è¡A³£·|¼vÅT¨ì¨Ï¥Î°O¾ÐÅ骺±¡§Î¡C°õ¦æªºµ{¦¡¶V¦h¦û¥Î°O¾ÐÅé¶V¦h¡A§A¬Ý¨ìªº¦ì§}´N·|¶V©¹°ª¦ì§}²¾¡C

x86 «ü¥O¡GPUSH¡BPOP »P°ïÅ|¡]Stack¡^

°ïÅ|¬O¤@¶ô¯S®íªº°O¾ÐÅé¡A³o¸ÌÁ¿ªº¯S®í¨Ã¤£¬O¦¹°O¾ÐÅé§÷®Æ¡B»s³y¤è¦¡¡A¦Ó¬O«ü¦s¨ú¤è¦¡¡C¯S®í¤§³B¦³¤G¡G①¦s¤J¸ê®Æ»PŪ¨ú¸ê®Æ®É±Ä¥Î¥ý¶i«á¥Xªº¤è¦¡¡F②¸ê®Æ¦s¤J°ïÅ|®É¥Ñ°ª¦ì§}©¹§C¦ì§}¤è¦V¤@µ§¤@µ§¦a¦s¤J¡C¥ý¶i«á¥Xªº·N«ä¬O«ü¡A¶V¥ý¦s¤Jªº¸ê®Æ¤Ï¦Ó¬O¶V«á­±Åª¨ú¡C¦n¹³À\ÆU¸Ìªº½L¤l¤@¼Ë¡AÅ|¦b¶V©³¤Uªº½L¤l¬O¶V¥ý©ñªº¡A¶V¤W­±ªº½L¤l¬O¶V±ß©ñªº¡C·í¤H­Ì­n¥Î½L¤l®É¡A³£¬O¥ý¨ú¥X³Ì¤W­±ªº½L¤l¡C°ïÅ|¤ºªº¸ê®Æ¡A´N¹³³o¨Ç½L¤l¡A¶V¥ý©ñªº½L¤l¡A¶V±ß¨ú¥Î¡C¸ê®Æ¥Ñ°ª¦ì§}¦V§C¦ì§}¦s¤J¬O«ü¡A¥ý¦s¤Jªº¸ê®Æ©ñ¦b°ª¦ì§}¡A¦Ó«á¦s¤Jªº¸ê®Æ«h¦b¤W¤@µ§¸ê®Æªº¸û§C¦ì§}³B¡C

¬°¤F¹F¨ì³o¨â­Ó¥Øªº¡A¦s¨ú°ïÅ|¤Wªº¸ê®Æ®É¡A¬O¥Ñ¨â­Ó x86 «ü¥O PUSH¡BPOP ·f°t RSP ¼È¦s¾¹¦s¨ú¡CRSP ¼È¦s¾¹ºÙ¬°°ïÅ|«ü¼Ð¼È¦s¾¹¡]stack pointer register¡^¡ARSP ³£·|«ü¦V°ïÅ|³»ºÝ¡A¦b°ïÅ|³»ºÝ¥H¤Î§ó°ª¦ì§}³£¤w¦s¦³¸ê®Æ¡A¤ñ°ïÅ|³»ºÝ¦ì§}§Cªº°O¾ÐÅ餺ªº¸ê®Æ¬OµL¥Îªº¡A¤]¥i¥H»¡¡A°ïÅ|³»ºÝ¬O¦s¦³¸ê®Æªº³Ì§C¦ì§}¡C¦pªG¬Ý¤£À´¡Aµ¥¤@¤U¨Ò¤lÁ¿§¹´N·|À´¤F¡CPUSH »P POP ªº»yªk¬O¡G

PUSH    ¹Bºâ¤¸
POP     ¹Bºâ¤¸

¦]¬°¥»³¹½Í½×ªº³£¬O 64 ¦ì¤¸ªºµ{¦¡¡A©Ò¥H³o¸Ì PUSH »P POP ªº¹Bºâ¤¸¬O 64 ¦ì¤¸ªº¾ã¼Æ¡A¤]´N¬O¤K­Ó¦ì¤¸²Õ¡CPUSH «á­±±µµÛªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƩα`¼Æ¡F¦Ó POP ªº¹Bºâ¤¸¥u¯à¬O¼È¦s¾¹©ÎÅܼơCPUSH ·|¥ý§â RSP ´î¥h¤K¡A¨Ï°ïÅ|³»ºÝ©¹§C¦ì§}²¾¤K­Ó¦ì¤¸²Õ¡A¦A§â PUSH «á­±±µµÛ¹Bºâ¤¸¦s¤J°ïÅ|¡A³o­Ó°Ê§@ºÙ¬°±À¤J°ïÅ|¡CPOP «ü¥O«h¬O¥ý±q RSP ©Ò«üªº°ïÅ|³»ºÝ¨ú¥X¼Æ­È¡A¦s¤J¨ä«á±µµÛªº¹Bºâ¤¸¤º¡A¦A±N RSP ¥[¤K¡A³o­Ó°Ê§@ºÙ¬°¼u¥X°ïÅ|¡C

¥Ñ¦¹±oª¾¡APUSH ·|¨Ï°ïÅ|½d³òÂX¤j¡A°ïÅ|³»ºÝ©¹§C¦ì§}²¾°Ê¡F¦Ó POP «h¨Ï°ïÅ|½d³ò´î¤p¡A°ïÅ|³»ºÝ©¹°ª¦ì§}²¾°Ê¡C¥H©³¤Uªº¨Ò¤l»¡©ú¡G

        mov     rsp,2bfc38h
        mov     r8,12CH
        push    r8
        push    190H
        pop     rax

¤U¹Ï¤¤¡A¨C­Ó¬õ¦âªº¤è¶ô¬O¤K¦ì¤¸²Õªº°O¾ÐÅé¡A°²³] RSP ¬° 2BFC38H¡A¥ç§Y°ïÅ|³»ºÝ¦ì©ó¦¹¦ì§}¡C¦b 2BFC38H ³B¥H¤Î¸û°ª¦ì§}ªº°ïÅ|¡A§¡¤w¦s¦³¸ê®Æ¡A¦]¦¹»¡ RSP «ü¦V¦s¦³¸ê®Æªº³Ì§C¦ì§}¡A¦p¤U¹Ï¤@¡C·í°õ¦æ¨ì¡uPUSH R8¡v®É¡A¥ý§â RSP ´î 8¡A«ü¦V 2BFC30H ³B¡A¦A§â R8 ¤§­È¡A12CH¡]µ¥©ó¤Q¶i¦ìªº 300¡^¦s¤J¦¹¦ì§}ªº°O¾ÐÅ餺¡C³o¼Ëªº¸Ü¡ARSP ¤´¬O«ü¦V¤w¦s¦³¸ê®Æªº³Ì§C¦ì§}¡A°ïÅ|³»ºÝ¦V§C¦ì§}©µ¦ù¤K­Ó¦ì¤¸²Õ¡A¦p¤U¹Ï¤G¡C±µµÛ PUSH 190H¡A¸ò¤W­±¤@¼Ëªº¹Lµ{¡A§â RSP ´î¤K¡AÅܦ¨ 2BFC28H¡AµM«á§â 190H¡]¤Q¶i¦ì¬° 400¡^¦s¤J 2BFC28H ¦ì§}ªº°O¾ÐÅ餺¡C±µµÛªº«ü¥O¬O¡uPOP RAX¡v¡A¥¦·|§â RSP ©Ò«ü¦ì§}ªº°O¾ÐÅ餺®e¡A¦s¤J CPU ªº RAX ¼È¦s¾¹¸Ì­±¡AµM«á¦A¨Ï RSP ¥[¤W¤K¡F©Ò¥H RAX ¤§­È·|§ïÅܦ¨ 190H¡A¦P®É°ïÅ|³»ºÝÅܦ¨ 2DFC30H¡C

x86 «ü¥O¡GMOV

MOV «ü¥Oªº»yªk¬O

MOV     ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸

¨ä¥\¯à¬O§â¨Ó·½¹Bºâ¤¸¤ºªº¼Æ­È¦s¤J¥Øªº¹Bºâ¤¸¸Ì¡C¥Øªº¹Bºâ¤¸¥i¥H¬OÅܼƩάO¼È¦s¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬OÅܼơB¼È¦s¾¹©Î±`¼Æ¡C¨Ò¦p

x       dq      ?           ;©w¸q x ÅܼƬ°¥|¦r²Õ¾ã¼Æ
        ⁝
        mov     rcx,2       ;¨Ï RCX Åܬ° 2
        mov     x,rcx       ;§â RCX ¤§­È²¾¤JÅÜ¼Æ x ¸Ì¡A¬G«á¨Ó x¡×2

­nª`·Nªº¦³¨âÂI¡C²Ä¤@¬O¨Ó·½¹Bºâ¤¸©M¥Øªº¹Bºâ¤¸¤j¤p¥²¶·¬Û¦P¡A¨Ò¦p³£¬O 64 ¦ì¤¸ªº¼È¦s¾¹©Î³£¬O 32 ¦ì¤¸ªº¼È¦s¾¹¡A¤£¥i¤@­Ó¬O 64 ¦ì¤¸¡A¥t¤@­Ó¬O 32 ¦ì¤¸¡C²Ä¤G¬O¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬°ÅܼơC

¤W­±ªº²Ä¤G­Ó¨Ò¤l¡A¡umov x,rcx¡v¡A¬O§â¼È¦s¾¹¤§­È¦s¤JÅܼƤ§¤¤¡A¦¹ÅܼƷíµM¬O¬Y­Ó¦ì§}ªº°O¾ÐÅé¡A

¦ý¬O¦b FIRST.ASM ªº²Ä¤Q¤C¦æ¬O¡umov rdx,OFFSET szText¡v¡AÅãµM¬O§â¡uOFFSET szText¡v¦s¤J RDX ¸Ì¡A¨º¤°»ò¬O¡uOFFSET szText¡v©O¡H¦b FIRST.ASM ¸Ì¡A²Ä¤Q¦æ©w¸q¤F szText ¬O¤@­Ó¦r¦ê¡A¨º¤°»ò¬O¡uOFFSET¡v©O¡H­n¸ÑÄÀ¡uOFFSET¡v­n¥ýÁA¸Ñ¦ì§}¡C

OFFSET ¹Bºâ¤l

OFFSET ¹Bºâ¤lªº»yªk¬O

OFFSET ¹Bºâ¤¸

OFFSET ¬O«ü¥Ü ML64.EXE ²ÕĶ¾¹¦b²ÕĶªº®É­Ô¡A§â¹Bºâ¤¸ªº¦ì§}­pºâ¥X¨ÓµM«á¦A§@¬Y¨Ç³B²z¡A¦¹³Bªº¹Bºâ¤¸¥i¥H¬OÅܼƩμаO¡]label¡^¡C·í ML64.EXE ²ÕĶ¾¹­pºâ±o¨ì¨ä¦ì§}«á¡A¨ä¹ê´N¬O¤@­Ó±`¼Æ¡CFIRST.ASM ªº²Ä¤Q¤C¦æ¡A¡umov rdx,OFFSET szText¡v¡Aªº·N«ä¬O§â szText ¦r¦êªº¦ì§}¦s¤J RDX ¼È¦s¾¹¸Ì¡C¨Ì¾Ú¤W¹Ï¡A³Ì«á RDX ¬° 13FD92030¡C

x86 «ü¥O¡GLEA

LEA «ü¥O¬O¥Î¨Ó¨ú±o¦r¦ê¡BÅܼƩΰƵ{¦¡ªº¦ì§}¡A¨ä»yªk¬O

LEA     ¼È¦s¾¹,¹Bºâ¤¸

¹Bºâ¤¸¥i¥H¬O¦r¦ê¡BÅܼƩΰƵ{¦¡¦WºÙ¡A°õ¦æ§¹ LEA «ü¥O«á¡A¼È¦s¾¹ªº¼Æ­È´N·|Åܦ¨¨ä«á©Ò±µ¦r¦ê¡BÅܼƩΰƵ{¦¡ªº°_©l¦ì§}¡C­nª`·Nªº¬O¡A¦b Win64 ùØ¡A¦ì§}¬O 64 ¦ì¤¸¡A¦]¦¹¼È¦s¾¹¤]±o­n¥Î 64 ¦ì¤¸¡A¨Ò¦p RAX¡BRCX¡K¡Kµ¥¡A¤£¥i¥H¥Î EAX¡BAX ³o¨Ç 32 ¦ì¤¸©Î 16 ¦ì¤¸ªº¼È¦s¾¹¡C

¡uLEA¡v»P¡uMOV ·f°t OFFSET¡v¡A³£¬O¥Î¨Ó¨ú±o¦ì§}¡A¦ü¥G¤@¼Ë¡A¨ä¹ê¤£µM¡C¡uMOV ·f°t OFFSET¡v¥u¯à¥Î©ó²ÕĶ¶¥¬q´N¤w¸g½T©w¦ì§}ªº¹Bºâ¤¸¡F¦ý¬O¹³¥~³¡ÅܼơB¼Ð°Oµ¥¡A©Î¬O°Ï°ìÅܼơA³£¥u¯à¦b°õ¦æ¹Lµ{¤¤¤~¯à½T©w¦ì§}¡A³o®É­Ô¥u¯à¥Î¡uLEA¡v«ü¥O¡C

¦b FIRST.ASM ªº²Ä¤Q¤K¦æ¬O¡ulea r8,szCaption¡v¡A´N¬O¨ú±o szCaption ªº¦ì§}¡A¦Ó«á±N¨ä¦s¤J R8 ¸Ì­±¡C¨Ì¾Ú¤W¹Ï¡A³Ì«á R8 ¬° 13FD92020¡C

x86 «ü¥O¡GSUB

SUB «ü¥O¬O´îªk«ü¥O¡]subtract¡^¡A¥¦ªº»yªk¬O¡G

SUB     ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸

SUB ·|§â¥Øªº¹Bºâ¤¸ùØ­±ªº¼Æ­È´î¥h¨Ó·½¹Bºâ¤¸ùØ­±ªº¼Æ­È¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¦]¦¹°õ¦æ§¹«á¡A¥Øªº¹Bºâ¤¸¤§­È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§­È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬OÅܼƩμȦs¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬O±`¼Æ¡BÅܼƩμȦs¾¹¡A¦ý¬O¥Øªº¹Bºâ¤¸©M¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬°ÅܼơA¦Ó¥B¨âªÌªº¦ì¤¸¼Æ¥²¶·¬Û¦P¡C¨Ò¦p©³¤Uªº¨Ò¤l¡C

        sub     rax,rcx     ;¥¿½T¡ARAX¡BRCX §¡¬° 64 ¦ì¤¸¡C¹Bºâ«á¡ARCX ¤£ÅÜ¡ARAX ·|§ïÅÜ
        sub     rax,dx      ;¿ù»~¡ARAX¬° 64 ¦ì¤¸¦Ó DX ¬° 16 ¦ì¤¸

¤W­±²Ä¤@­Ó¨Ò¤l¬O§â RAX ¼È¦s¾¹´î¥h RCX ¼È¦s¾¹¡A¦A§â©Ò±o¤§®t¦s¤J RAX ¸Ì­±¡C

¶i¦ìºX¼Ð»P¹s­ÈºX¼Ð

°õ¦æ SUB «ü¥O¤Î¤@¨Ç x86 ¹Bºâ«ü¥O«á¡A·|¼vÅT CPU ¤º³¡ªº¤@­ÓºÙ¬°ºX¼Ð¼È¦s¾¹ªº¼Æ­È¡CºX¼Ð¼È¦s¾¹¤¤ªº¨C­Ó¦ì¤¸¡A°£¤F¨S¥Îªºªº¥H¥~¡A¦U¦³¦Û¤vªº¦WºÙ¡A¦ý¤p¤ì°¸¥u¤¶²Ð²Ä¹s¦ì¤¸ªº¡u¶i¦ìºX¼Ð¡v¡]carry flag¡A²ºÙ CF¡^»P²Ä¤»¦ì¤¸ªº¹s­ÈºX¼Ð¡]zero flag¡A²ºÙ ZF¡^¡C

¶i¦ìºX¼Ð»P¶i¦ì¸ò­É¦ì¦³Ãö¡A­É¦ìªºÆ[©À¦b¤p¾Ç®É¾Ç²ß´îªk¤@¼Ë¡A¨Ò¦p 15¡Ð3¡A³Q´î¼Æªº­Ó¦ì¼Æ¬O 5¡A¤j©ó 3¡A¤£¥²­É¦ì¡F¦ý­Y¬O 15¡Ð9¡A³Q´î¼Æªº­Ó¦ì¼Æ¬O 5¡A´î¼Æ¬O 9¡A¤£°÷´î´N­n­É¦ì¡C

SUB ªº­É¦ì»P§_¡A«h¬O¥Ñ¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸ªº¤j¤p¨M©w¡A¦pªG¥Øªº¹Bºâ¤¸¤j©ó©Îµ¥©ó¨Ó·½¹Bºâ¤¸´N¤£¶·­É¦ì¡A¹Bºâ¤§«á¡A¶i¦ìºX¼Ð·|³Q CPU ³]¬°¹s¡A¦³®É­Ô¤]ºÙ¡u²M°£¶i¦ìºX¼Ð¡v¡A¦Ó°£¿ùµ{¦¡·|Åã¥Ü NC¡F¦pªG¥Øªº¹Bºâ¤¸¤p©ó¨Ó·½¹Bºâ¤¸´N·|µo¥Í­É¦ì¡ACPU ·|§â¶i¦ìºX¼Ð³]¬°¤@¡A¤]ºÙ¡u³]©w¶i¦ìºX¼Ð¡v¡A¦Ó°£¿ùµ{¦¡·|Åã¥Ü CY¡C

¶i¦ìºX¼Ð³o­Ó¦WºÙ¬O¨Ì¾Ú¥[ªk¹Bºâ¨Óªº¡A¦pªG³Ì°ª¦ì¤¸¬Û¥[µ²ªGµo¥Í¶i¦ì¡A¶i¦ìºX¼Ð·|³Q CPU ³]¬°¤@¡A¤Ï¤§³]¬°¹s¡C

¹s­ÈºX¼Ð¬OÀˬd SUB «áµ²ªG¬O§_¬°¹s¡A¦pªG¤£¬°¹s¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¹s¡AºÙ¬°¡u²M°£¹s­ÈºX¼Ð¡v¡A°£¿ùµ{¦¡Åã¥Ü NZ¡F­Y¹Bºâµ²ªG¬°¹s¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¤@¡AºÙ¬°¡u³]©w¹s­ÈºX¼Ð¡v¡A°£¿ùµ{¦¡Åã¥Ü ZR¡C°Ñ¦Ò«e­±ªº XOR «ü¥O¡C

x86 «ü¥O¡GCALL¡BRET

CALL ¬O©I¥s°Æµ{¦¡ªº«ü¥O¡ARET ¬O¦Û°Æµ{¦¡ªð¦^¥Dµ{¦¡ªº«ü¥O¡A¨ä»yªk¤À§O¬O

CALL    °Æµ{¦¡¦W
RET

CALL ·|§â¤U¤@­Ó­n°õ¦æªº«ü¥O¦ì§}±À¤J°ïÅ|¡A¦¹¦ì§}ºÙ¬°ªð¦^¦ì§}¡AµM«á§â±±¨îÅvÂಾ¨ì°Æµ{¦¡©Ò¦b¦ì§}°õ¦æ¡CRET «ü¥O·|§â RSP ©Ò«ü°ïÅ|³»ºÝªºªð¦^¦ì§}¨ú¦^¡A¨Ã¨Ï RSP ¥[¤W¤K¡AµM«á±N±±¨îÅvÂಾ¨ì­è¥Ñ°ïÅ|³»ºÝ¨ú¥Xªºªð¦^¦ì§}¤Wªº«ü¥O¡AÄ~Äò°õ¦æ¡C

¥k¹Ï¬O FIRST.EXE ©I¥s MessageBoxA Windows API ªº·Q¹³¹Ï¡C·í°õ¦æ¨ì¡ucall MessageBoxA¡v®É¡ACALL ·|§â¤U¤@¹D«ü¥O¡APOP RCX¡Aªº¦ì§}±À¤J°ïÅ|¡A¦¹¦ì§}´N¬Oªð¦^¦ì§}¡AµM«á§â±±¨îÅv¥æµ¹ MessageBoxA ªº¶i¤JÂI¡Cµ¥ MessageBoxA °õ¦æ³Ì«á¤@¹D«ü¥O¡ARET¡A¥¦·|±q°ïÅ|³»ºÝ¨ú¦^ªð¦^¦ì§}¡A¨Ï RSP ¥[¤K¡AµM«á§â±±¨îÅvÂkÁÙµ¹ªð¦^¦ì§}¤Wªº«ü¥O¡A¤]´N¬O POP RCX¡C

§Ú­Ì¦b¼¶¼g Win64 µ{¦¡¡AµL¥iÁקK­n©I¥s Windows API ¨Ó²¤Æµ{¦¡¡C¦pªG¤£³o»ò°µ¡A¥i¥H·Q¹³±o¨ì¡A¥ú¬O«Ø¥ßµøµ¡¤Ö»¡´N­n¼g¼Æ¦Ê¦æµ{¦¡½X¤F¡C«e­±´£¹L¡AWindows API ¥i¥H¬Ý¦¨¬O·L³n¼g¦n¡AÅý§Ú­Ì©Ò¼¶¼gªºµ{¦¡©I¥sªº°Æµ{¦¡¡A¥i¥H¥Î CALL «ü¥O©I¥s¥¦­Ì¡C

«e­±¤w¤¶²Ð¹L«Å§i°Æµ{¦¡ªº¤èªk¡APROC/ENDP¡A«Ü¦h¤H·|¯Ç´e¡AENDP ¤£´N¬Oµ²§ô°Æµ{¦¡¶Ü¡H¬°¦óÁÙ­n¦³ RET «ü¥O©O¡H¹ê»Ú¤W¡APROC/ENDP ¥u¬O¥Î¨Ó§i¶D²ÕĶ¾¹©Î¬OÅý¤H­Ì¾\Ū¤è«K¡A¦b PROC/ENDP ¤§¶¡ªºµ{¦¡¤ù¬q¬O°Æµ{¦¡¡A¦ý¬O¯u¥¿ÂkÁÙ±±¨îÅvµ¹¥Dµ{¦¡ªº¬O RET¡C¦]¦¹ PROC/ENDP ¬O°²«ü¥O¡ARET ¤~¬OÅý CPU ¯u¥¿°õ¦æªº«ü¥O¡C

x86 «ü¥O¡GADD

ADD «ü¥O¬O¨Ï CPU ¶i¦æ¥[ªk¹Bºâ¡C»yªk¬O¡G

ADD     ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸

ADD ·|§â¥Øªº¹Bºâ¤¸ùØ­±ªº¼Æ­È¥[¤W¨Ó·½¹Bºâ¤¸ùØ­±ªº¼Æ­È¥H«á¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¦]¦¹°õ¦æ§¹«á¡A¥Øªº¹Bºâ¤¸¤§­È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§­È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬OÅܼƩμȦs¾¹¡A¨Ó·½¹Bºâ¤¸¥i¥H¬O±`¼Æ¡BÅܼƩμȦs¾¹¡A¦ý¬O¥Øªº¹Bºâ¤¸©M¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬°ÅܼơA¦Ó¥B¨âªÌªº¦ì¤¸¼Æ¥²¶·¬Û¦P¡C

ADD «ü¥O·|¼vÅTºX¼Ð¼È¦s¾¹¡A¦b³o¸Ì¤p¤ì°¸¶È¤¶²Ð¶i¦ìºX¼Ð©M¹s­ÈºX¼Ð¡C¦pªG¬Û¥[¤§©Mµo¥Í¶i¦ì¡A¨º»ò¶i¦ìºX¼Ð·|Åܬ°¤@¡A§_«h¬°¹s¡Cª`·N¡A³o¸Ìªº¶i¦ì¬O«ü³Ì°ª¦ì¤¸µo¥Í¶i¦ì¤~ºâ¡A¨ä¥L¦ì¤¸¶i¦ì¤£ºâ¡C¦pªG¬Û¥[¤§©M¬°¹s¡A¨º»ò¹s­ÈºX¼Ð·|Åܬ°¤@¡A§_«h¬°¹s¡C

©³¤U¥»¸Ó¤¶²Ð©I¥s Windows API ªº³W«h¡AÁÙ¦³ FIRST.ASM ©I¥sªº¨â­Ó API¡GMessageBoxA »P ExitProcess¡A«eªÌ²£¥Í¤@­Ó¦³¼ÐÃDÄæ¤Î¦³¤@¬q¤å¦rªºµøµ¡¡A«áªÌ¬Oµ²§ôµ{¦¡¡C¦ý¥»³¹¤w¸gÁ¿±o¤Ó¦h¤F¡A¯d«Ý¤U¤@³¹Ä~Äò§a¡I


µùÄÀ

µù¤@¡G¹Bºâ¤¸¡]Operant¡^»P¹Bºâ¤l¡]Operator¡^

¦b¼Æ¾Ç¤W¡A¥[¡B´î¡B­¼¡B°£¬O§Ú­Ì³Ì¦­¾Çªº¹Bºâ¡A¥¦ªº¹ï¶H¦³³\¦hºØ¡A¥i¯à¬O±`¼Æ¡BÅܼơK¡K¡A³o¨Ç±`¼Æ¡BÅܼơK¡K³£ºÙ¬°¹Bºâ¤¸¡]operand¡^¡A¦Ó¹Bºâªº°Ê§@ºÙ¬°¹Bºâ¤l¡]operator¡^¡C¨Ò¦p¡u10¡Ð8¡×2¡v¤¤¡A10 ¬O³Q´î¼Æ¡A8 ¬O´î¼Æ¡A2 ¬O®t¡F¦b¹q¸£¤¤ªº³N»y¡A¦¹¤GªÌ¬Ò¬°¹Bºâ¤¸¡B¡u¡Ð¡vºÙ¬°¹Bºâ¤l¡C

¥|«h¹Bºâªº¹Bºâ¤¸³£¬O¨â­Ó¡A¦ý¤]¦³¨Ç¹Bºâ¤l¥u¶·¤@­Ó¹Bºâ¤¸¡A¬Æ¦Ü«Ü¦h¡C¨Ò¦p­t¸¹¤]¥i¥H¬Ý¦¨¬O¤@ºØ¹Bºâ¡A¥¦´N¥u¦³¤@­Ó¹Bºâ¤¸¡C¹³¥»³¹©Ò´£ªº¡uOFFSET¡v¤]¬O¹Bºâ¤l¡A¨ä¹Bºâ¤¸¤]¥u¦³¤@­Ó¡C

µù¤G¡G°Ñ¼Æ¡]Parameter¡^»P¤Þ¼Æ¡]Argument¡^

°Ñ¼Æ©M¤Þ¼Æ¬O©I¥s°Æµ{¦¡®É¡A¥Ñ¥Dµ{¦¡¶Çµ¹°Æµ{¦¡ªº¸ê®Æ¡A±`±`²V¦b¤@°_¡AÅý¤H·d¤£²M·¡¡C¦³®É¤£°Ï¤À¥¦­Ì¡A¤]¥¼¹Á¤£¥i¡C¦pªG¤@©w­n°Ï¤À¡A¥i¥H³o¼Ë¤À¡G°Ñ¼Æ¬O¥Î¦b©w¸q°Æµ{¦¡®É©Ò¨Ï¥ÎªºÅܼơA¦Ó¤Þ¼Æ«h¬O©I¥s°Æµ{¦¡®É¡A¹ê»Ú¶Çµ¹°Æµ{¦¡ªº¼Æ­È¡C

Á|­Ó¨Ò¤l¨Ó»¡¡A°²³]¦³­Ó°Æµ{¦¡¡]gcd¡^¬O­pºâ¨â­Ó¾ã¼Æªº³Ì¤j¤½¦]¼Æ¡A¨º»ò³o­Ó°Æµ{¦¡¥i¥H³o¼Ë©w¸q¡G

gcd     PROC    int1:QWORD,int2:QWORD
        ⁝
        ret
gcd     ENDP

°²³]²{¦b­n­pºâ 48 ©M 18 ªº³Ì¤j¤½¦]¼Æ¡A¨º»ò·|³o¼Ë©I¥s¡]²Ä¤»³¹¤~·|¤¶²Ð INVOKE¡A²{¦b¥u­nª¾¹D¥¦¬O¥Î¨Ó©I¥s°Æµ{¦¡ªº¡u«ü¥O¡v§Y¥i¡A©I¥s®É int1 ·|¥H 48 ¥N¤J¡Aint2 ·|¥H 18 ¥N¤J¡AµM«á±N±±¨îÅvÂಾ¨ì gcd °Æµ{¦¡¥h­pºâ³o¨â¼Æªº³Ì¤j¤½¦]¼Æ¡^¡G

        INVOKE  gcd,48,18

¦b¤W­±ªº¨Ò¤l¤¤¡Aint1 ©M int2 ¬O°Ñ¼Æ¡A48 ©M 18 ¬O¤Þ¼Æ¡C

µù¤T¡G¤G¶i¦ì¼Æ­È»P¤Q¤»¶i¦ì¼Æ­È

¦Û¤HÃþ¶}©l­pºâ¼Æ¦r¥H¨Ó¡Aµo©ú¤F³\¦h°O¿ý¼Æ¦rªº¤èªk¡A³Ìª½±µªº¤èªk´N¬O¤@±ø½u¥Nªí¤@¡A¨â±ø½u²{¥Nªí¤G¡K¡K¡A¦ý¬OÁ`¤£¯à¥H¤Q­Ó½u±øªí¥Ü¤Q¡A¥H¤@¦Ê­Ó½u±øªí¥Ü¤@¦Ê¡]¨Æ¹ê¤W¡A¦³¨Ç¦a°Ïªº¤H¡A¤@¶}©l¥u¯à­pºâ¨ì¤T¡A¤T¥H¤W´N³Q»{¬°«Ü¦h¡A¤HÃþ­p¼Æ¡A¤]¬O¤@³¡¸g¾ú¼Æ¸U¦~ªº¾ú¥v¡^¡C¦³³\¦h¥Á±Ú·Q¥X¤F¸Ñ¨M¤§¹D¡Aù°¨¤H¬O¨ä¤¤¤§¤@¡A¥L­Ì¥Î¤@­Ó²Å¸¹¥Nªí¤­¡A¥t¤@­Ó²Å¸¹¥Nªí¤Q¡A

I    ªí¥Ü¤@        X  ªí¥Ü¤Q          M  ªí¥Ü¤@¤d
II   ªí¥Ü¤G        L  ªí¥Ü¤­¤Q
III  ªí¥Ü¤T        C  ªí¥Ü¤@¦Ê
V    ªí¥Ü¤­        D  ªí¥Ü¤­¦Ê

²{¦b¦³¨Ç®ÉÄÁÄÁ­±¤W¡A¤´¥Îù°¨¼Æ¦rªí¥Ü¡C³oºØ¤è¦¡ÁöµM¬O«Ü¤jªº¶i¨B¡A¦ý­nªí¥Ü¦Ê¡B¤d¡B¸U´N³Â·Ð¤F¡C¨Ò¦p¦b¹qª± 3A ¤j§@´cÆF¥j³ù 4 ­«»sª©¡]Resident Evil 4 Remaker¡^¤¤¡AÂļw°Ç®a±Úªº±VÃä¸O¤å¦~¥N¬O MDCCCXXVII¡A«ÜÃø¤@²´´Nª¾¹D¬O¦è¤¸ 1827 ¦~¡C

§Ú­Ì²{¦b¥Îªº¼Æ¦r¨t²Î¬O¦L«×¤Hµo©úªº¡]¦³¤@»¡¬Oªü©Ô§B¤H¡^©M¤@¯ëªí¥Ü¼Æ¦rªº¤èªk¦³¨âÂI¤£¦P¡A¤@¬O¹sªºµo©ú¡A¤@¬O¥Î¦ì¸mªí¥Ü¦ì¼Æ¡C¥¦¥Î 1 ¥Nªí¤@¡B2 ¥Nªí¤G¡A¤@ª½¨ì¤F¤EÅܦ¨¤Qªº®É­Ô´Nµo¥Í¶i¦ì¡A³o®É¥Î 1 ªí¥Ü¤Q¦ì¼Æ¡A«á­±¥Î 0 ªí¥Ü­Ó¦ì¼Æ¡Aªí¥ÜªÅ¦ì©Î¨S¦³ªº·N«ä¡A©ó¬O´NÅܦ¨¤F 10 ªí¥Ü¤Q¡C¦]¦¹¼Æ¦r©Ò¦bªº¦ì¸m¤£¦P¡A¥Nªíªº·N¸q´N¤£¦P¡A¤p¾Ç¥Í³£ª¾¹D 100 ³o­Ó¼Æ¦³¨â­Ó 0¡A¦ý³o¨â­Ó¹s¬O¤£¤@¼Ëªº¡C¹sªºµo©ú¡A¦b­p¼Æ¤W¦³«Ü­«­nªº·N¸q¡C

©Î³\§A·|°Ý¡A¬°¤°»ò¨ì¤Q¤~µo¥Í¶i¦ì¡A¤£¦b¨ä¥L¼Æ¦rµo¥Í¶i¦ì©O¡H¤HÃþ±Ä¥Î¤Q¶i¦ì­p¼Æ¡A¨Ã¨S¦³¤°»ò¯S®íªº²z¥Ñ¡A³o§¹¥þ¬O¦]¬°¤HÃþ¦³¤Q­Ó¤â«üÀY¡A§Aª¾¹D¶Ü¡H¦³¨Ç¦a¤è³s¸}³kÀY¤]¥Î¨Ó­p¼Æ¡A©Ò¥H¬O¤G¤Q¶i¦ì¡Aº¿¶®¤H´N¬O¦p¦¹­p¼Æ¡C¦pªG¦³¥~¬P¤H¦³ 8 ­Ó¤â«üÀY¡A»¡¤£©w¥L­Ì´N¬O¥Î¤K¶i¦ì¡C¦Ó¹q¸£¥u¦³¨â­Ó¡u¤â«üÀY¡v¡A¤@­Ó°O¾ÐÅ餤ªº¹qÀ£¥i¯à¬O°ª¹qÀ£©Î§C¹qÀ£¡A¦]¦¹¦pªG°ª¹qÀ£¥Nªí¤@¡B§C¹qÀ£´N¥Nªí¹s¡A©Ò¥H¹q¸£¥Î¡u¤G¶i¦ì¡v¡C

¦pªG¥u¦³¤@­Ó°O¾ÐÅé¡A¨º»ò´N¥u¦³ 0 ¸ò 1 ¨âºØªí¥Ü¤è¦¡¡A¤]¥u¯àªí¥Ü 0 ¸ò 1 ¨âºØ¼Æ¡C¦pªG¦³¨â­Ó°O¾ÐÅé¡A´N¦³¥|ºØªí¥Ü¤èªk¡A¤À§Oªí¥Ü 0¡B1¡B2¡B3 ¥|ºØ¼Æ¡G

00    ªí¥Ü 0
01    ªí¥Ü 1
10    ªí¥Ü 2
11    ªí¥Ü 3

¦pªG¦³¤T­Ó°O¾ÐÅé¡A´N¦³¤KºØªí¥Ü¤èªk¡A¥i¥Hªí¥Ü 0 ¨ì 7 ªº¼Æ¡G

000    ªí¥Ü 0
001    ªí¥Ü 1
010    ªí¥Ü 2
011    ªí¥Ü 3
100    ªí¥Ü 4
101    ªí¥Ü 5
110    ªí¥Ü 6
111    ªí¥Ü 7

§A¥i¥H¬Ý±o¥X¨Ó¡A¦pªG¨C¥[¤J¤@­Ó°O¾ÐÅé¡A¥i¥H­p¼Æªº­Ó¼Æ´NÅܦ¨­ì¨Óªº¨â­¿¡C¦b¹q¸£¤¤¥Î¤K­Ó°O¾ÐÅé¡]¤]´N¬O¤K¦ì¤¸¡^ªí¥Ü 0 ¨ì 255 ¦@¦³ 256 ­Ó¼Æ¦r¡]§Y 28¡^¡C

0000 0000    ªí¥Ü 0
0000 0001    ªí¥Ü 1
0000 0010    ªí¥Ü 2
0000 0011    ªí¥Ü 3
0000 0100    ªí¥Ü 4
   ⁝
1111 1111    ªí¥Ü 255

¨Æ¹ê¤W¡A¤W­±³o¨Ç¨Ò¤lªº¥ªÃä¤@¤j°ïªº 0 ©M 1 ´N¬O©Ò¿×ªº¤G¶i¦ì¼Æ¡A¤]´N¬O¹q¸£¬Ý±oÀ´ªº¼Æ¡A¥kÃä´N¬O§Ú­Ì©Ò¼ôª¾ªº¤Q¶i¦ì¼Æ¡C¨º¤G¶i¦ì©M¤Q¶i¦ì¤§¶¡­n«ç»òÂà´«©O¡H

§Ú­Ì¥ý¨Ó¬Ý¬Ý¤Q¦ì¼Æ§a¡I°²³]¦³¤@­Ó¤Q¦ì¼Æ­È¡A234¡A³o¤T­Ó¼Æ­þ¤@­Ó³Ì¤j¡H§Ú·Q§A¤£·|»¡¬O¡u4¡v³Ì¤j§a¡H¨Æ¹ê¤W¡A¥¦­Ì©Ò¦bªº¦ì¸m¤£¦P·N¸q¤]¤£¦P¡C2 ¨ä¹ê­n­¼¥H 100 ¤~¬O¥¦©Ò¥Nªíªº¼Æ­È¡F3 ­n­¼¥H 10¡A¤~¬O¥¦©Ò¥Nªíªº¼Æ­È¡K¡K¡A¦pªG¼g¦¨¼Æ¾Ç¦¡¡A¥i¥H¼g¦¨¬O

2¡Ñ102¡Ï3¡Ñ101¡Ï4¡Ñ100

¤]´N¬O¥Ñ­Ó¦ì¼Æ¶}©l¡A¨C¦ì¼Æ¨Ì¦¸­¼¥H¤Qªº¾­¦¸¤è¡C¤G¶i¦ì¼ÆÅܦ¨¤Q¶i¦ì¼Æ¤]¬O¦P¼Ëªº¹D²z¡A¤]´N¬O»¡¥Ñ³Ì¥kÃ䪺¨C¤@¦ì¼Æ¶}©l¡A¨Ì¦¸­¼¥H¤Gªº¾­¦¸¤è¡A¤]´N¬O 20¡×1¡B21¡×2¡B22¡×4¡B23¡×8¡K¡K¡CÁ|¨Ò¨Ó»¡¡A¤U¹Ïªº¤G¶i¦ì¼Æ 1010 1011 ¬Û·í©ó¤Q¶i¦ìªº 171¡]128+32+8+2+1=171¡^¡C¦pªG­n¼g¦¨§¹¾ãªº¹Bºâ¦¡¡A´N¬O¹³¤U­±ªº¦¡¤l¡G

1¡Ñ27¡Ï0¡Ñ26¡Ï1¡Ñ25¡Ï0¡Ñ24¡Ï1¡Ñ23¡Ï0¡Ñ22¡Ï1¡Ñ21¡Ï1¡Ñ20

¥Ñ¤W­±ªº»¡©ú¥iª¾¡A¤@¼Æªº¥kÃä²Ä¤G¦ì¶}©l©¹¥ªÃ䪺¦ì¼Æ¡A¨ä­È§¡¬°¤Gªº­¿¼Æ¡A©Ò¥H³Ì¥kÃ䨺¦ì¼Æ¨M©w¤F¦¹¼Æ¬O©_¼ÆÁÙ¬O°¸¼Æ¡C°²¦p¬O¤@¡A¦¹¼Æ¥²¬°©_¼Æ¡F¬°¹s¡A¥²¬°°¸¼Æ¡C

¦pªG¼¶¼g²Õ¦X»y¨¥µ{¦¡¥Î¤G¶i¦ì¡A¦ì¼Æ·|Åܱo«Ü¤j¡A«D±`³Â·Ð¡A¦]¦¹¥Î§é°Jªº¤èªk¡A¥i¥Î¤Q¤»¶i¦ì¡C¤G¶i¦ì¨C¥|¦ì²Õ¦X°_¨Ó¡A«ê¦n¥i¥Hªí¥Ü¤Q¤»­Ó¼Æ¡A±Ä¥Îªü©Ô§B¼Æ¦r 0¡ã9¡A¦A¥[¤W­^¤å¦r¥À¡uA¡v¡ã¡uF¡v¡C¤]´N¬O»¡¡G

1010    ªí¥Ü A
1011    ªí¥Ü B
1100    ªí¥Ü C
1101    ªí¥Ü D
1110    ªí¥Ü E
1111    ªí¥Ü F

¦]¦¹¤G¶i¦ìªº 1010 1011¡A¬Û·í©ó¤Q¤»¶i¦ìªº AB¡A¤]´N¬O¤Q¶i¦ìªº 171¡C

¤Q¤»¶i¦ì¥i¥Hª½±µÂàÅܦ¨¤Q¶i¦ì¡A­ì²z¸ò¤G¶i¦ìÂà´«¦¨¤Q¶i¦ì¤@¼Ë¡A¦ý³o¦¸¬O­n±Ä¥Î 16 ªº¾­¦¸¤è¡C¨BÆJ¦p¤U¡G①¥ý§â¡uA¡v¡B¡uB¡v¡B¡uC¡v¡K¡Kµ¥Âà´«¦¨¡u10¡v¡B¡u11¡v¡B¡u12¡v¡K¡Kµ¥¤Q¶i¦ì¼Æ¡C②¥Ñ³Ì¥kÃä¶}©l¡A±N³o¨Ç¤Q¶i¦ì¼Æ­¼¥H 16 ªº¾­¦¸¤è¡A16 ªº¾­¦¸¤è¥Ñ 160 ¶}©l¡C③¥þ³¡¥[°_¨Ó´N¬O³Ì«áªºµ²ªG¡C

¨Ò¦p§â¡uA4B¡vÅܤQ¶i¦ì¡A¡uA¡v¬O¤Q¶i¦ìªº¡u10¡v¡A¡uB¡v¬O¤Q¶i¦ìªº¡u11¡v¡A©Ò¥H­pºâ¹Lµ{¬O

10¡Ñ162¡Ï4¡Ñ16111¡Ñ160¡×2635