«e¤@³¹¤w¸g³]©w¦n¼¶¼g Win64 ²Õ¦X»y¨¥ªºÀô¹Ò¤F¡A³o¤@³¹´N¥Î²Õ¦X»y¨¥¼g²Ä¤@Ó¡uµ{¦¡¡v¡AFIRST¡C¦ý FIRST °õ¦æ¤§«á¨Ã¤£·|²£¥Íµøµ¡¡AWindows ¤]¨S¦³¥ô¦ó¤ÏÀ³´Nµ²§ô¤F¡CFIRST ªº°ß¤@¥Øªº¬O¤¶²Ð²Õ¦X»y¨¥ªº³Ì°ò¥»·§©À¡C
¥Îµ{¦¡»y¨¥©Ò¼¶¼gªºµ{¦¡¡A¤£½×¬O C/C¡Ï¡Ï¡BPython¡K¡K³£¬O¯Â¤å¦rÀÉ¡AºÙ¬°¡uì©lµ{¦¡¡v¡]source code¡A¤]¥i½Ķ¬°ì©l½X©Î·½½X¡^¡A¹q¸£¬O¬Ý¤£À´ªº¡A¦]¬°¹q¸£¥u¯à¬Ý±oÀ´¤@³s¦êªº¹s»P¤@¡C©Ò¥H¡Aì©lµ{¦¡¥²¶·¸g¹L²ÕĶ»P³sµ²ªº¹Lµ{¡A¤~¯à§â¯Â¤å¦r¡u½Ķ¡v¦¨¥i°õ¦æÀÉ¡]°ÆÀɦW³q±`¬O EXE¡^¡C¥i°õ¦æÀɤºªº«ü¥O¬O¤@³s¦êªº¤G¶i¦ì¼Æ¡A³o¤~¬O¹q¸£¬Ý±oÀ´¨Ã¥B¯à°õ¦æªº«ü¥O¡C
¹ï²Õ¦X»y¨¥¨Ó»¡¡A¨äì©lµ{¦¡ªº°ÆÀɦW³q±`¬O ASM¡C©³¤U´N¨Ó¬Ý¬Ý²Õ¦X»y¨¥ªºì©lµ{¦¡¡AFIRST.ASM ªøªº¤°»ò¼Ë¤l¡H
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 |
OPTION CASEMAP:NONE
OneTwo EQU 12345h
;***************************************
.DATA
Number DQ OneTwo
Sum DQ 111222h
;***************************************
.CODE
;---------------------------------------
main PROC
mov rax,OneTwo+0b000000h
add rax,Number
push rax
pop Sum
main ENDP
;***************************************
END |
º¥ý¥Î°O¨Æ¥»©Î UltraEdit 32 µ¥¤å®Ñ³B²z¾¹¡A¿é¤J¤W±¤º®e¡AµM«á¥H¡uANSI¡v©Î¡uASCII¡vªº½s½X¤è¦¡¡]¤£n¥Î UTF-8 ©Î¨ä¥L½s½X¤è¦¡¦sÀÉ¡^¡AÀx¦s¦b¡uE:\HomePage\SOURCE\Win64\FIRST\FIRST.ASM¡vÀÉ®×ùØ¡C²Ä¤G¨B¡A¶}±Ò¡u©R¥O´£ÃѦr¤¸¡v¡A¿é¤J¥H¤U«ü¥O´N¯à²£¥Í FIRST.EXE¡C³Ì«á°õ¦æ FIRST.EXE¡C
Microsoft Windows [ª©¥» 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\wanker>path E:\masm64\bin64;%path% C:\Users\wanker>set link=/subsystem:windows /entry:main C:\Users\wanker>cd E:\HomePage\SOURCE\Win64\FIRST C:\Users\wanker>E: E:\HomePage\SOURCE\Win64\FIRST>ml64 first.asm 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>first ¡÷°õ¦æ FIRST.EXE
¦b¤Wz¹Lµ{¤¤¡A¦pªG¨S¦³¿ù»~°T®§¡Aªí¥Ü¤w¦¨¥\»s§@¦n FIRST.EXE¡A·|¦b¡uE:\HomePage\SOURCE\Win64\FIRST\¡v¤l¥Ø¿ý¤º¥Í¦¨¤@Ó FIRST.EXE ¥i°õ¦æÀɮסC¦pªGn°õ¦æ¥i°õ¦æÀÉ¡A¶È¶·¿é¤J¥DÀɦW¡A¥B¤j¤p¼g¤£©ë¡A¨£¤W±¹Lµ{ªº³Ì«á¤@¦æ©ÒÅã¥Üªº¡C¡]¦³ÃöÀɮצWºÙªº³W«h¡A½Ð°Ñ¾\ DOS ²Õ¦X»y¨¥ªþ¿ý¤»¡^
¨ì¦¹¨Ã«D´Nµ²§ô¤F¡AÁÙn¬Ý¬Ý°õ¦æµ²ªG¬O§_¦p¹w´Á¡A¦pªG¬O¡A´Nªí¥Ü¦¹µ{¦¡¤w¼¶¼g§¹¦¨¡F¦pªG¤£¬O¡Aªí¥Üµ{¦¡¥i¯à¥Ç¤FÅÞ¿è¤Wªº¿ù»~©Î¨ä¥L¿ù»~¡A¥²¶·«·sÀˬd¨º¨à¥X¿ù¤F¡C³o®É¥i¯à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ªº¥Øªº¬On§â§Ú̼¶¼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
¤W±²ÕĶ»P³sµ²ªº¹Lµ{¤¤¡A¨Ï¥Î ML64.EXE ²ÕͮɡA¦pªG²Õͦ¨¥\¡AML64.EXE ·|¦Û°Ê°õ¦æ LINK.EXE ¶i¦æ³sµ²¡CML64.EXE ·|¥ý¨ì·í«e¥Ø¿ý¤¤´M§ä LINK.EXE¡A¦pªG§ä¤£¨ì«K·|¨ì PATH ©Ò³]©wªº¥Ø¿ý¥h§ä¡A³o¤]´N¬On¥ý³]¦n¡upath E:\masm64\bin64;%path%¡vªº½t¬G¡C
±µ¤U¨Ó¬O¡uset link=/subsystem:windows /entry:main¡v¡A³o¬Oµ¹ LINK.EXE ªº°Ñ¼Æ¡C¡u/subsystem:windows¡vªí¥Ü»s§@¥X¨Óªºµ{¦¡·|²£¥Íµøµ¡¡F¡u/entry:main¡vªí¥Üµ{¦¡ªº¶i¤JÂI¡A¤]´N¬O°õ¦æµ{¦¡®Éªº²Ä¤@¹D«ü¥O¡A©Ò¥H¦bì©lµ{¦¡¤¤¡A©ó²Ä¤@¹D«ü¥O«e«ü©w main ¼Ð°O¡CFIRST.ASM ªº²Ä 10 ¦æ¤@¶}©l´N¬O main¡Aªí¥Ü FIRST.EXE ¥Ñ¦¹¶i¤J¡A¤]¬O¥Ñ¦¹³B¶}©l°õ¦æ¡C
¦pªG¨C¦¸²ÕĶ¤Î³sµ²ì©l½X®É¡A³£n¿é¤J«e¥|¦æ«ü¥O³]©w¦n²ÕĶ»P³sµ²©Ò»Ý³]©w¡A«D±`³Â·Ð¡C¨Æ¹ê¤W¡A³o¥|¦æ«ü¥O¥u¶·°õ¦æ¤@¦¸³]©w¦n¤§«á¡A¦An²ÕĶ©Î³sµ²¡A¤£¶·¦A¦¸³]©w¡C©Ò¥H¡A¬°¤F§ïµ½®Ä²v¡A¥i¥H¥Î¤å®Ñ³B²z³nÅé¡A¨Ò¦p°O¨Æ¥»¡BUltraEdit 32 µ¥¡A¿é¤J¤U±¤º®e¡A¨ÃÀx¦s¦b¡uC:\Users\wanker\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¡]¦³Ãö§å¦¸Àɪº»¡©ú¡A½Ð°Ñ¦Ò DOS ²Õ¦X»y¨¥ªþ¿ý¤»¡^
path E:\masm64\bin64;%path% set link=/subsystem:windows /entry:main cd E:\HomePage\SOURCE\Win64 E:
¦Ò¼{¨ì©¹«án¥Î²Õ¦X»y¨¥¼¶¼g³\¦h¤£¦Pªºµ{¦¡¡A¦U¦Û¦s©ñ¦b¤£¦P¥Ø¿ýùØ¡A©Ò¥H²Ä¤T¦æ§ï¦¨¡ucd E:\HomePage\SOURCE\Win64¡v¡C
¦³¤F§å¦¸Àɤ§«á¡A¶}±Ò©R¥O´£¥Ü¦r¤¸¡A¥u»Ý¿é¤J masm64¡A«ö¤U Enter Áä¡A´N¯à¦Û°Ê³]¦n²ÕĶ»P³sµ²©Ò»ÝÀô¹Ò¡C¦p¤U¡A¥u»Ý¿é¤J¶À¦rªº³¡¤À§Y¥i¡A¦pªGn²ÕĶ»P³sµ² FIRST.ASM¡A¥ý¤Á´«¶i FIRST ¥Ø¿ý¡A¦A¿é¤J¡uml64 first.asm¡v§Y¥i¡C³o¼Ë¬O¤£¬O«Ü¤è«K©O¡H
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\wanker>masm64 C:\Users\wanker>path E:\masm64\bin64;C:\Windows\system32;C:\Windows;C:\Windows\S ystem32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Users\wanker>set link=/subsystem:windows /entry:main C:\Users\wanker>cd E:\HomePage\SOURCE\Win64 C:\Users\wanker>e: E:\HomePage\SOURCE\Win64>cd first E:\HomePage\SOURCE\Win64\FIRST>ml64 first.asm ¡÷©¹«án²ÕĶ¡B³sµ²¡A¥u¶·¿é¤J¡uml64 first.asm¡v§Y¥i
¨Æ¹ê¤W¡AFIRST ¨Ã¤£¬O§¹¾ãªºµ{¦¡¡A¦]¬°¥¦µ²§ôµ{¦¡ªº¤èªk¿ù»~¡Cnµ²§ô Win64 À³¥Îµ{¦¡¡A¥²¶·©I¥s Win64 API¡A²Ä¤G³¹¦A»¡©ú¡C²{¶¥¬q¥u¶·ª¾¹D¡AFIRST ÁöµM¤£·|¤Þ°_·í¾÷¡A¦ý¨Ã«D¥¿½Tªº¼gªk¡C¨º¬°¦óÁÙn¤¶²Ð FIRST ©O¡H¨º¬O¦]¬°¦pªGn¤¶²Ð§¹¾ã¥B¥¿½Tªºµ{¦¡¡A¨º»ò¥»³¹ªº½g´T·|«Ü¦h¡A¹ï©óªì¾Ç²Õ¦X»y¨¥ªº¤H¨Ó»¡¡A¬O«Ü¦Y¤Oªº¡C©Ò¥H³o¤@³¹¥u¬O¥Î¨Ó¤¶²Ð Win64 ²Õ¦X»y¨¥ªº¬[ºc¡B°O¾ÐÅé¦ì§}¡B°ïÅ|µ¥Æ[©À¡A¨Ã¥B¤]·|¤¶²Ð MOV¡BADD¡BPUSH¡BPOP µ¥´XÓ x64 «ü¥O¡C
©³¤Uªº¤º®e¬O¤p¤ì°¸³v¦æ¸Ñ»¡ FIRST.ASM¡C¦ý¦]¬°ªì¾ÇªÌ¥²©w¦³³\¦hÆ[©À¡A¹³èè´£¨ìªº°O¾ÐÅé¦ì§}¡B°ïÅ|µ¥¡A¬Oªì¦¸¹J¨ì¡A¨Ã¤£ÁA¸Ñ¡A©Ò¥H·|¥ý¸Ñ»¡³o¨ÇÆ[©À¡Aµ¥©ú¥Õ¤§«á¡A¦A¦^¨Ó¬Ýì©lµ{¦¡´N·|ÁŵM¶}®Ô¡C
FIRST.ASM ²Ä¤@¦æ¬O¡uOPTION CASEMAP:NONE¡v¡A¡uOPTION¡v¬O²Õ¦X»y¨¥ªº«O¯d¦r¡A¤]¬O¤@ºØ°²«ü¥O¡A¥¦¥i¥H³]©w¦h¨Æ±¡¡A¤£¹L¦b³oùضȤ¶²Ð¡uOPTION DOTNAME¡v»P¡uOPTION CASEMAP:maptype¡v¡C
¡uOPTION DOTNAME¡v¬OÅý ML64 ¤¹³\ÅܼƦW¡B°Æµ{¦¡¦W¡K¡Kªº²Ä¤@Ó¦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ÅܼƦW¡B°Æµ{¦¡¦W¡K¡Kµ¥¡F¦Ó«O¯d¦r¬O¤£¨ü¡uOPTION CASEMAP¡vªº¼vÅT¡Cmaptype ¦³¨âºØ¿ï¾Ü¡G
EQU »P = ³£¥Î¨Ó§â¤@ӲŸ¹«Å§i¬°¤@Ó¾ã¼Æ¡A¦Ó¨Ï±o¨ä«áªºµ{¦¡¯à¥Î¦¹²Å¸¹¥N´À¸Ó¾ã¼Æ¡C¥¦Ìªº»yªk¬O¡G
²Å¸¹ EQU ºâ³N¹Bºâ¦¡ ²Å¸¹ = ºâ³N¹Bºâ¦¡
¦¹³Bªººâ³N¹Bºâ¦¡¬O«ü¥i¥H¬O¥Îºâ³Npºâªº¼Æ¾Ç¦¡¤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
¦pªGn§â²Å¸¹«Å§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
¦b FIRST.ASM ªº²Ä¤G¦æ¬O¡uOneTwo EQU 12345h¡v¡A·N«ä¬O§â 12345h ¥Î OneTwo ²Å¸¹¥N´À¡A©¹«áªºµ{¦¡¤¤¹J¨£ OneTwo ´N¬O 12345h¡A¦Ó 12345h ¬O¤Q¤»¶i¦ì¼ÆÈ¡C¦b²Õ¦X»y¨¥¤¤¡Anªí¥Ü¤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¦pªG§A¤£¼ô±x¨ä¥L¶i¦ìªk¡A½Ð¸Ô¾\ DOS ²Õ¦X»y¨¥ªþ¿ý¤G¡A¤×¨ä¬O¤Q¤»¶i¦ì¡A±N·|«D±`ÀWÁcªº¨Ï¥Î¡C
¦b FIRST ¸Ì¦³¨â³B¦a¤è¥Î¨ì 12345h¡A©Ò¥H¥Î OneTwo ¨Ó¥N´À¡C¦pªGn×§ï³oÓ¼ÆÈ¡A¨º»ò¥u¶·§â 12345h §ï¦¨¨ä¥L¼Æ§Y¥i¡A¤ñ¸û¤è«K¡C·íµM¦b¤pµ{¦¡¤¤¡A¬Ý¤£¥X¨Ó³o¼ËªºÀuÂI¡A¦ý¦b¤jµ{¦¡¤¤´N«Ü©úÅã¤F¡C
FIRST.ASM ²Ä¤T¦æ¬O¡u;¡v¡A¨ä«á¬O¬P¸¹¡C¤Z¬O¦b¡u;¡v¤§«áªº¤å¦r³£·|³Q ML64.EXE ©Ò©¿²¤¡A¥i¥H¼g¤U¥ô·N¤å¦r¡A«Ü¾A¦X·í¦¨µù¸Ñ¡C¡u;¡v¥i¥H¦b¤@¦æªº¶}ÀY¡A¤]¯à¦b¨ä¥L¦ì¸m¡F¤£½×¦bþ¨à¡A¦b¡u;¡v¤§«á¨ì¦¹¦æªºµ²§ô¡A³£·|³Q ML64.EXE ©¿²¤¦Ó·í¦¨µù¸Ñ¡C
µù¸Ñ¬OÅý¤H¡]¥]§t³]p³oÓµ{¦¡ªº¤H»P§O¤H¡^ª¾¹D¡A³o¤@¦æ©Î³o´X¦æµ{¦¡ªº§@¥Î¡AÁA¸Ñµ{¦¡¹B§@¡A¶i¦Ó×§ï©Î°£¿ù¡Cµ{¦¡³]p®vÀ³¾¨¶q¯d¤Uµù¸Ñ¡A¥H«K¤é«á×§ï¡C§Y¨Ï¦b§A½s¼gµ{¦¡ªº·í¤U¡A«Ü²M·¡¦UºØ²Ó¸`¡F¦ý¹L¤F´X¶g¡B´XÓ¤ë´N·|²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¤¸
¦b COMMENT ¤§«áªº¤À¹j¦r¤¸¥i¥H¬O¥ô·N¦r¤¸¡A²Õ;¹·|©¿²¤¦¹¤À¹j¦r¤¸¤§«áªº¤å¦r¡A©Ò¥H³o¨Ç¤å¦r¥i¥H°µ¬°µù¸Ñ¡Fª½¨ì¦A¦¸¥X²{¸Ó¤À¹j¦r¤¸¡Aªí¥Üµù¸Ñµ²§ô¡C¤À¹j¦r¤¸¤£¥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
¦r¤¸¡]character¡^¬O«ü¥i³Q¹q¸£½s½X¡BÀx¦s¡B³B²zªº³Ì¤p²Å¸¹³æ¦ì¡C¨Ò¦p¡uA¡v¬O¦r¤¸¡A¥¦ªº½s½X¬O 41h¡A¤]´N¬O¥Î¼ÆÈ 41h ¥h¥N´À¡uA¡v¡C¦]¬°¹q¸£¥u¯à³B²z¼ÆÈ¡A©Ò¥H¥²¶·§â¤å¦r¥[¥H½s½X¶i¦ÓÅý¹q¸£¯à³B²z¡BÀx¦s¡CCOMMENT ªº¤À¹j¦r¤¸¡A¥i¥H¬O¥ô·N¦r¤¸¡F¦ý¬O³Ì¦n¨Ï¥Î¯S®í²Å¸¹¡A¹³¡u#¡v¡B¡u@¡v¡K¡K¡A³Ì¦n¤£n¨Ï¥Î^¤å¦r¥À©Îªü©Ô§B¼Æ¦r¡A°£«D½T©wµù¸Ñ¤å¦r¤¤¨S¦³¥¦Ì¡C
FIRST.ASM ²Ä¤T¦æ¬O¡u.DATA¡v¡AnÁA¸Ñ¨ä·N¸q¡A»Ý¥ý©ú¥Õ¡u°Ï¬q¡v¡]section¡^¡C
²³æªº»¡¡Aµ{¦¡¬O³B²z¸ê®Æªº¤èªk¡A©Ò¥Hµ{¦¡¤º·|¦³¸ê®Æ¡A·|¦³³B²zªº¤èªk¡C¨Ò¦pÅý CPU ¹Bºâ 2¡Ï3¡×5¡A2 »P 3 ¬O¸ê®Æ¡A¡u¡Ï¡v©M¡u¡×¡v¬Oµ{¦¡½X¡C²{¥Nªºµ{¦¡¡A³£§â¸ê®Æ¶°¤¤¦b¤@°_¡AºÙ¬°¸ê®Æ°Ï¬q¡]section¡^¡Fµ{¦¡½X¤]¶°¤¤¦b¤@°_¡A©ñ¦b¥t¤@°Ï¬q¡AºÙ¬°µ{¦¡½X°Ï¬q¡C
¦Ó Win64 µ{¦¡¤¤¡A¥i¥H¤À¦¨¤TºØ°Ï¬q¡G¸ê®Æ°Ï¬q¡Bµ{¦¡½X°Ï¬q©M°ïÅ|°Ï¬q¡]µy«á¤¶²Ð¡^¡C¤@ӰϬq¶}©lªº¦a¤è¡A´N¬O¥t¤@ӰϬqªºµ²§ô¤§³B¡A¦]¦¹¤£¥²¼g¥X°Ï¬q¦bþ¨àµ²§ô¡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ªí¤¤ªº²Ä¤GÄæ¬O«Å§i«á°Ï¬q¦WºÙ¡A¬O²Õ;¹¹w³]ªº¡C
| «Å§i | ¦WºÙ | »¡¡@¡@©ú |
| .CODE | _TEXT | µ{¦¡½X°Ï¬q¡A³q±`·|¦³³\¦h x64 «ü¥O¤Î»P¤§°t¦Xªº°²«ü¥O¡C |
| .CONST | CONST | ¦s©ñ±`¼Æ¸ê®Æªº°Ï¬q¡A¦b³oºØ°Ï¬q¤ºªº¸ê®Æ¥u¯àŪ¨ú¤£¯à§ó§ï¡C |
| .DATA? | _BBS | ¦s©ñÅÜ¼Æ¸ê®Æªº°Ï¬q¡A¦b³oºØ°Ï¬q¤ºªº¸ê®Æ¥i¥HŪ¨ú¤]¥i¥H§ó§ï¡F¦¹¥~¦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¦¹¥~¦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 ¤¤ªº²Ä¤T¡B¤C¡B¤Q¤»¦æ¬Oµù¸Ñ¡A¦Ó¥B¾ã¦æµù¸Ñ¡C³o¼Ë§@ªº¥Øªº¡A¥u¬O¬°¤F°Ï¹j¨âӰϬq¡A¥H¤è«K¾\Ū¡A¨S¦³¯S§Oªº¥\¥Î¡C§AÁÙ¥i¥H¬Ý¨£¡A§@¬°²Ä¤@Óµ{¦¡¡AFIRST.ASM ªºì©lµ{¦¡¥u¦³¨âӰϬq¡A¤À§O¦b²Ä¥|¡B¤K¦æ«Å§i¤F¸ê®Æ°Ï¬q»Pµ{¦¡½X°Ï¬q¡A¥i»¡¬Û·í²³æ¤F¡C
FIRST.ASM ¦b²Ä¥|¦æ«Å§i¡u.DATA¡v¡A´Nªí¥Ü¸ê®Æ°Ï¬q±q³o¨à¶}©l¡A©Ò¥H²Ä¤¡B¤»¨â¦æ¬O¸ê®Æ°Ï¬q¡C±µ¤U¨Óªº²Ä¤C¦æ¬Oµù¸Ñ¡A©¿²¤¥¦¡C²Ä¤K¦æ«Å§i¡u.CODE¡v¡Aªí¥Üµ{¦¡½X°Ï¬q±q³o¨à¶}©l¡A¤]¥Nªí¸ê®Æ°Ï¬q¦b³o¨àµ²§ô¡Cµ{¦¡½X°Ï¬q±q¶}©l³B¤@ª½¨ì²Ä 17 ¦æµ{¦¡µ²§ô¡A³£¨S¦³¨ä¥L«Å§i°Ï¬qªº°²«ü¥O¡A©Ò¥Hµ{¦¡½X°Ï¬q¤@ª½©µ¦ù¨ìµ{¦¡µ²§ôªº¦a¤è¡C
FIRST.ASM ²Ä¤¡B¤»¦æ«D±`¬Û¦ü¡A¥¦Ì©w¸q¤F Number¡BSum ¨âÓÅܼơA¨ä¤¤ªº DQ ¬O°²«ü¥O¡A¥t¥~ÁÙ¦³ DB¡BDW¡BDD »P DQ Ãþ¦ü¡A¥¦Ì³£»P¸ê®ÆÃþ«¬¡]data type¡^¦³Ãö¡C
¸ê®ÆÃþ«¬¬O§i¶D¹q¸£¡A³o¥÷¸ê®Æ¡u¬O¤°»ò¼ËªºªF¦è¡v¥H¤Î¡u¥i¥H«ç»ò¨Ï¥Î¡v¡A¨Ò¦p¥e¥Î¦h¤Ö¦ì¤¸²Õªº°O¾ÐÅé¡B¦p¦ó¸ÑŪ³o¨Ç¦ì¤¸¡]¬O¾ã¼Æ¡B¦r¦êÁÙ¬O¯BÂI¼Æ¡^¡B¥i¥H«ç»ò¹Bºâ¡]°µ¥|«h¹Bºâ¡AÁÙ¬O¤ñ¸û¡A©Î¬O·í°µ¦ì§}¨Ï¥Î¡^¡C¦b Win64 ²Õ¦X»y¨¥¤¤¡A³Ì±`¨£ªº¸ê®ÆÃþ«¬¦³¾ã¼Æ¡B¦r¦ê¡C
²Õ¦X»y¨¥¤¤¡A¦pªGn©w¸q¾ã¼Æªº¸ê®ÆÃþ«¬¡A¥i¥H¥Î¡uDB¡v¡B¡uDW¡v¡B¡uDD¡v¡B¡uDQ¡v¥|ºØ°²«ü¥O¡A¨Ì·Ó©Ò¨Ï¥Îªº¾ã¼Æ½d³ò¦Ó©w¡A¨£¤Uªí¡G
| °²«ü¥O | ¦P¸q°²«ü¥O | ¦WºÙ | ªø«× ¡]¦ì¤¸²Õ¡^ | ¦ì¤¸¼Æ | ©Ò¯àªí¥Üªº¾ã¼Æ½d³ò | ¤¤¤å |
| DB | BYTE | ¦ì¤¸²Õ | 1 | 8 | 0¡ã255 | ¨â¦Ê¤¤Q¤ |
| DW | WORD | ¦r²Õ | 2 | 16 | 0¡ã65,535 | ¤»¸U¤¤d¦h |
| DD | DWORD | Âù¦r²Õ | 4 | 32 | 0¡ã4,294,967,295 | ¥|¤Q¤G»õ¦h |
| DQ | QWORD | ¥|¦r²Õ | 8 | 64 | 0¡ã18,446,744,073,709,551,615 | ¤@¤d¤K¦Ê¨Ê¦h |
¤p¤ì°¸¥Î¡uDB¡v»¡©ú¥¦Ìªº»yªk¡C°²¦pn©w¸q¤@Ӧ줸²Õªº¾ã¼Æ¡A´N¥Î°²«ü¥O¡uDB¡v¡]DB ¬O define byte ªº·N«ä¡^©Î¡uBYTE¡v¡A³o¨âÓ«ü¥O¨ä¹ê¬O¤@¼Ëªº¡A¨ä»yªk¦p¤U¡G
ÅܼƦW DB ¼ÆÈ ÅܼƦW BYTE ¼ÆÈ
¨ä¾lªº DW¡BDD¡BDQ ¤]³£Ãþ¦ü¡A¥ç§Y DW »P WORD ¦P¸q¡BDD »P DWORD ¦P¸q¡BDQ »P QWORD ¦P¸q¡C©³¤Uªº¨Ò¤l¬O©w¸q¡uminutes¡vÅܼƪì©lȬ° 60¡A¡udays¡vÅܼƬ° 365¡A¡useconds_per_day¡vÅܼƬ° 15180h¡C
.DATA minutes DB 60 days DW 365 seconds_per_day DD 15180h ; ¼ÆÈ«á¦³¡uh¡v¡Aªí¥Ü¤Q¤»¶i¦ì¼ÆÈ year DWORD ? ; DWORD »P DD ¦P¸q¡A¤£³]ªì©lÈ
¦pªGÅܼƨS¦³ªì©lÈ¡A¤]¥i¥H¥Î¡u?¡vªí¥Ü¡A¦ý¦¹Åܼƥ²¶·¦b¡u.DATA¡v©Î¡u.DATA?¡v°Ï¬q¤º¡A¨Ò¦p¤W±ªº¡uyear¡vÅܼơC
DB ©Î BYTE °£¤F©w¸q¾ã¼Æ¥~¡A¤]¥i¥H¥Î¨Ó©w¸q¦r¦ê¡C¦r¦êªº^¤å¬O string¡A¥i¥H§â¥¦·Q¦¨¤@¬q¥Ñ¦r¤¸©Ò²Õ¦¨ªº¸ê®ÆÃþ«¬¡A¤£½×¬O¤¤¤å©Î^¤å¦r¤¸§¡¥i¡Aªø«×¥i¥H¬O¤@Ó¦r¤¸©Î¦hÓ¦r¤¸³£¥i¥H¡C¦b Windows µ{¦¡¤¤¡A¦r¦ê±`±`¥H¹s§@¬°µ²§À¡AºÙ¬°¥H¹sµ²§Àªº¦r¦ê¡C¥Î DB ©Î BYTE ©w¸q¦r¦ê®É¡A»Ý¥Î¡u"¡v©Î¡u'¡v±N¾ãÓ¦r¦ê¬A¦í¡C»yªk¦p¤U¡G
¦r¦ê¦W DB "¦r¦ê¤º®e" ¦r¦ê¦W BYTE "¦r¦ê¤º®e"
©³¤U¬O©w¸q¨âÓ¦r¦ê¡AMonday »P ChMonday¡A«áªÌ´N¬O¥H¹sµ²§Àªº¦r¦ê¡G
.CONST Monday DB "Monday" ChMonday DB '¬P´Á¤@',0
FIRST.ASM ²Ä¤¡B¤»¦æ©w¸q¤F Number¡BSum ¨âÓÅܼơA¦Ó«áªºµ{¦¡·|pºâ¥X RAX »P Number ¤§©M¡A¦A¦s¤J Sum ÅܼƸ̡C©Ò¥H¡A±µ¤U¨Ó«K¶i¤J¤F³B²z¸ê®Æªº¶¥¬q¡A¤]´N¬O¶i¤Jµ{¦¡½Xªº½dÃ¥¡C²Ä¤@Ó¹J¨ìªº¬O²Ä¤Q¦æ¡A¡umain PROC¡v¡A³o¤@¦æÀ³»P²Ä¤Q¤¦æ¤@°_»¡©ú¡C¥¦Ì»P°Æµ{¦¡ªºÆ[©À¦³Ãö¡A©³¤U¥ý»¡©ú¦ó¿×°Æµ{¦¡¡C
§Ú̦b¼¶¼gµ{¦¡®É¡A³q±`·|¹J¨ì³o¼Ëªºª¬ªp¡A´N¬O¬Y¨Çµ{¦¡¤ù¬q·|±`±`°õ¦æ¨ì¡A¦pªGn«·s¼g¤@¹M¡A¤]«Ü³Â·Ð¡CÁ|¨Ò¨Ó»¡¡A«Ø¥ßµøµ¡´N¬O±`±`·|°õ¦æ¨ìªºµ{¦¡¡C«Ø¥ßµøµ¡®É¡A³£n°õ¦æÃ¸»s¼ÐÃDÄæ¡BÃ䮨¡B³Ì¤j¤Æ³Ì¤p¤Æ«ö¶sµ¥°Ï°ìªºµ{¦¡½X¡A¨C¦¸«Ø¥ßµøµ¡®É¤j·§³£¬On°µ¬Û¦Pªº¨Æ¡A¦³©Ò®t§Oªº¬O¤£¦Pªº¼ÐÃDÄæ¤å¦r¡B¤£¦Pªºµøµ¡¦ì¸m¡B¤£¦Pªºµøµ¡¤j¤pµ¥¡C©Ò¥H¡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µøµ¡¡A¦A§â±±¨îÅvÂಾ¦^ì¨Óªºµ{¦¡¡AÄ~Äò°õ¦æ¡C
¹³³o¼Ë¡A¡u¦b¤j«¬µ{¦¡¤¤¡A¯à§¹¦¨¬Y¶µ¯S©w¤u§@¡A¦Ó¥B¤ñ¸û¨ã³Æ¿W¥ßªºµ{¦¡¤ù¬q¡v´NºÙ¬°°Æµ{¦¡¡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«Ø¥ßµøµ¡ªº°Æµ{¦¡®É¡An§â¼ÐÃDÄæ¤å¦r¡Bµøµ¡¦ì¸m¡Bµøµ¡¤j¤pµ¥¸ê®Æ¶Çµ¹°Æµ{¦¡¡A°Æµ{¦¡¦n¨Ì¾Ú³o¨Ç¸ê®Æ°õ¦æ¤u§@¡C¹³³o¨Ç¥Dµ{¦¡¶Çµ¹°Æµ{¦¡ªº¸ê®Æ¡AºÙ¬°¡u°Ñ¼Æ¡v©Î¡u¤Þ¼Æ¡v¡]µù¤T¡^¡C
°Æµ{¦¡°õ¦æ§¹²¦«á¡A·|§â±±¨îÅv¥æÁÙµ¹¥Dµ{¦¡¡A¥Dµ{¦¡Ä~Äò°õ¦æ±µ¤U¨Óªºµ{¦¡¡F»P¦¹¦P®É¡A°Æµ{¦¡¦³®É¤]·|§â°õ¦æµ²ªG¶Ç¦^µ¹¥Dµ{¦¡¡C³oÓ°õ¦æµ²ªG³q±`¬O¤@Ó¼ÆÈ¡AºÙ¬°¡u¦^¶ÇÈ¡v¡]return value¡^¡A§i¶D¥Dµ{¦¡°õ¦æ±o¦p¦ó¡A¨Ò¦p«Ø¥ßµøµ¡¬O§_¦¨¥\¡C¹³³oºØ¦bµ²§ô®É¡A·|§â¦^¶Çȶǵ¹¥Dµ{¦¡ªº°Æµ{¦¡ºÙ¬°¨ç¦¡¡]function¡A¥ç¦³Â½Ä¶¦¨¨ç¼Æ¡^¡C
¨º»ò¸Ó¦p¦ó§â¬YÓµ{¦¡¤ù¬q«Å§i¦¨°Æµ{¦¡©O¡H«Ü²³æ¡A¨Ï¥Î PROC °²«ü¥O¡A¦Ó PROC ¥²©wn»P ENDP ·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
PROC ªí¥Ü°Æµ{¦¡°_©l¤§³B¡AENDP ªí¥Ü³Bµ{¦¡µ²§ô¡A¦b³o¨âªÌ¤§¶¡ªºµ{¦¡¤ù¬q´N¬O lebel °Æµ{¦¡ªºµ{¦¡½X¡C·í¥Dµ{¦¡§â±±¨îÅv¥æµ¹°Æµ{¦¡®É¡A·|±q°Æµ{¦¡ªº²Ä¤@¦æ¶}©l¡A©¹¤U³v¦æ°õ¦æ¨C¤@¹D«ü¥O¡Aª½¨ì°Æµ{¦¡³Ì«á¤@¦æ¡AµM«á§â±±¨îÅvÂkÁÙ¥Dµ{¦¡¡C¥Dµ{¦¡±o¨ì±±¨îÅv«á¡AÄ~Äò°õ¦æ¥Dµ{¦¡©I¥s°Æµ{¦¡¤§«áªºµ{¦¡½X¡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¹ï Windows ¨Ó»¡¡Amain ¬O°Æµ{¦¡¡F¦ý¹ï FIRST ¨Ó»¡¡A«o¥i¥H§â main ¬Ý¦¨¥Dµ{¦¡¡C³o¬O¦]¬°©¹«á§Ú̪ºµ{¦¡·|¶V¨Ó¶V½ÆÂø¡A·|¦b main ¤¤©I¥s¨ä¥L°Æµ{¦¡¡A³o®É main ¥iµø¬°¥Dµ{¦¡¡C
¦pªGÀ³¥Îµ{¦¡¤¤¦³³\¦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«á±©Ò±µªº°Æµ{¦¡¦WºÙ¡A´N¬Oµ¹ Windows ©I¥sªº¡C¤]¥i¥H»¡¡Amain ´N¬OÀ³¥Îµ{¦¡ªº¶i¤JÂI¡A·í Windows §@·~¨t²Î°õ¦æ FIRST.EXE µ{¦¡®É¡A¬O±q³oùض}©l°õ¦æ¡C
±µ¤U¨Ó¡A¥»À³Ä~Äò»¡©ú¦b main °Æµ{¦¡¸Ì±ªº«ü¥O¡A¦ý¬O¥»³¹½g´T¤w¸g¤Ó¦h¡A©Ò¥H²Ä¤G³¹¦AÄ~Äò¡C
¥ô¦ó¤@ºØµ{¦¡»y¨¥¡A³£¦³¦Û¤vªº«O¯d¦r¡A³o¨Ç«O¯d¦r¦b³]pµ{¦¡»y¨¥®É´N¤w¸g¨Ï¥Î¤F¡A±Mªùµ¹»yªk©Î¨t²Î¨Ï¥Î¡Aµ{¦¡³]p®vµLªk¦A¨Ï¥Î¥¦°µ¬°¦Û¦æ©R¦Wªº¦WºÙ¡C²Õ¦X»y¨¥¤]¦³«O¯d¦r¡A¥i¤À¬°¤Ãþ¡G
¦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
°²«ü¥O¬O«ü¤£·|³Q²Õ;¹Âà´«¬°¾÷±ñ½Xªº«ü¥O¡A¥¦¬O«ü¥Ü²Õ;¹¦p¦ó²ÕĶ¡A¨Ò¦p¬O§_°Ï¤À¤j¤p¼g¡B¦w±Æ°O¾ÐÅé¡B©w¸q¸ê®Æµ¥µ¥¡A¹³ OPTION¡BEQU¡B.CODE¡B.DATA¡BDB¡BDW¡K¡K³£¬O°²«ü¥O¡C
»P°²«ü¥O¬Û¤ÏªººÙ¬° x86 «ü¥O©Î x64 «ü¥O¡Ax64 «ü¥O¸g¥Ñ²Õ;¹²Õͤ§«á¡A·|¥Í¦¨¾÷±ñ½X¡C¥i¥H¥Î x64dbg ¸ü¤J FIRST.EXE¡A´N¯à¬Ý±o¥X¨Ó¦b FIRST ¤¤¡A¥u¦³ MOV¡BADD¡BPUSH¡BPOP ¬O x64 «ü¥O¡A¨ä¾l³£¬O°²«ü¥O¡C
°Ñ¼Æ©M¤Þ¼Æ¬O©I¥s°Æµ{¦¡®É¡A¥Ñ¥Dµ{¦¡¶Çµ¹°Æµ{¦¡ªº¸ê®Æ¡A±`±`²V¦b¤@°_¡AÅý¤H·d¤£²M·¡¡C¦³®É¤£°Ï¤À¥¦Ì¡A¤]¥¼¹Á¤£¥i¡C¦pªG¤@©wn°Ï¤À¡A¥i¥H³o¼Ë¤À¡G°Ñ¼Æ¬O¥Î¦b©w¸q°Æµ{¦¡®É©Ò¨Ï¥ÎªºÅܼơA¦Ó¤Þ¼Æ«h¬O©I¥s°Æµ{¦¡®É¡A¹ê»Ú¶Çµ¹°Æµ{¦¡ªº¼ÆÈ¡C
Á|Ó¨Ò¤l¨Ó»¡¡A°²³]¦³Ó°Æµ{¦¡¡]gcd¡^¬Opºâ¨âÓ¾ã¼Æªº³Ì¤j¤½¦]¼Æ¡A¨º»ò³oӰƵ{¦¡¥i¥H³o¼Ë©w¸q¡G
gcd PROC int1:QWORD,int2:QWORD
⁝
gcd ENDP
°²³]²{¦bnpºâ 48 ©M 18 ªº³Ì¤j¤½¦]¼Æ¡A¨º»ò·|³o¼Ë©I¥s¡]²Ä¤»³¹¤~·|¤¶²Ð INVOKE¡A²{¦b¥unª¾¹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 °Æµ{¦¡¥hpºâ³o¨â¼Æªº³Ì¤j¤½¦]¼Æ¡^¡G
INVOKE gcd,48,18
¦b¤W±ªº¨Ò¤l¤¤¡Aint1 ©M int2 ¬O°Ñ¼Æ¡A48 ©M 18 ¬O¤Þ¼Æ¡C