¤W¦¸§Ú̼g¤F¤@Ó²³æªºµ{¦¡¡A¨Ã¸ÑÄÀì©lÀɤ¤¨C¤@¦æªº·N¸q¡A¦ý¨Ã¤£¬O³o¼Ë´Nµ²§ô¤F¡A³Ì«nªº¬On¨Ó¬Ý¬Ý EXAM01.COM ¸ü¤J¨ì°O¾ÐÅ餤¬O«ç¼Ëªº±¡§Î¡A³o¤]¬O±N¨Ó¼g½ÆÂøµ{¦¡®É°£¿ù®É¥²nªº¨BÆJ¡C³Ì²³æªº°£¿ù¤u¨ã´N¬O DOS/Windows 9x ©Òªþªº DEBUG.EXE ( DOS ¥´±q 1.0 ª©´Nªþ°e DEBUG¡F¦Ó Windows 9x ªº DEBUG.EXE ¦b C:\WINDOWS\COMMAND ¤l¥Ø¿ý¤º¡FXP ¤]ªþ¦³ DEBUG¡A¦b C:\WINDOWS\SYSTEM32 ¤l¥Ø¿ýùØ )¡C¨Ï¥Î DEBUG ¸ü¤Jn°£¿ùªºµ{¦¡®É¥Îªk¦p¤U¡G( ¶À¦âªº¦r¬O§A¥²¶·¿é¤Jªº¡A°O±o¨C¦¸¿é¤J§¹«án«ö Enter Áä )
E:\HomePage\SOURCE>..\masm50\debug exam01.com [Enter]
´N¬O DEBUG «á±±µ¤W¡§n°£¿ùªºµ{¦¡¦W¡¨§Y¥i¡A°²¦p¡§n°£¿ùªºµ{¦¡¦W¡¨«á±ÁÙ¦³°Ñ¼Æ¡A´Nª½±µ±µ¦b¡§n°£¿ùªºµ{¦¡¦W¡¨«á±§Y¥i¡C
DEBUG ªº¨CÓ©R¥O³£¥Î¤@Ó^¤å¦r¥Àªí¥Ü¡A¶i¤J DEBUG «á§A·|¬Ý¨ì¿Ã¹õ³Ì¥ªÃ䦳¤@Ó¡u-¡v¸¹¡Aªí¥Ü DEBUG ¤w¸g·Ç³Æ¦n¡Aµ¥§A¿é¤J©R¥O¡A¡u-¡v¥i»¡¬O DEBUG ªº´£¥Ü²Å¸¹¡C¦n¡A²{¦b¶}©l¸Õ¸Õ²Ä¤@Ó©R¥O¡AD¡A¥¦¤]¬O«Ü±`¥Îªº©R¥O¡C
²Ä¤@Ó¬O¬d¬Ý°O¾ÐÅ餺®e D ( dump ) «ü¥O¡A¸Õ¸Õ¬Ý°õ¦æµ²ªG¦p¦ó¡G
-d [Enter]
10F7:0100 EB 17 90 48 69 2C 20 49-20 6C 65 61 72 6E 20 61 k..Hi, I learn a
10F7:0110 73 73 65 6D 62 6C 79 2E-24 BA 03 01 B4 09 CD 21 ssembly.$:..4.M!
10F7:0120 B8 00 4C CD 21 46 EA 89-56 EC 80 7C 1E 01 74 12 8.LM!Fj.Vl.|..t.
10F7:0130 83 7E F0 02 74 0C 83 7E-F0 07 74 06 83 7E F0 0A .~p.t..~p.t..~p.
10F7:0140 75 04 80 4C 10 20 F6 44-10 20 75 03 E9 6D 01 80 u..L. vD. u.im..
10F7:0150 7E F8 07 74 03 E9 64 01-83 7E F0 03 75 03 E9 5B ~x.t.id..~p.u.i[
10F7:0160 01 F6 44 1D 0B 75 76 8B-04 0B F5 07 02 00 24 10 .vD..uv...u...$.
10F7:0170 3F 00 A0 FF 3B E1 06 62-78 00 F1 10 E5 07 00 00 ?. .;a.bx.q.e...
¿é¤J d «á¡A§A·|¬Ý¨ì¹q¸£¦C¥X¤@¤j°ï¤å¦r¡A¨Æ¹ê¤W³o¨Ç¤å¦r³£¬O¤Q¤»¶i¦ì¼Æ¦r¡ADEBUG ©ÒÅã¥Xªº¼Æ³£¥H¤Q¤»¶i¦ìªí¥Ü¡A¦pªG§A¤£À´¤Q¤»¶i¦ì¡A½Ð¬Ýªþ¿ý¤@¼Æ¦r¨t²Î¡C
¿Ã¹õ¤W¥i¤À¬°¤T³¡¥÷¡A³Ì¥ªÃä¬Oªí¥Ü¦ì§}¡A¤¤¶¡³¡¥÷ªí¥Ü°O¾ÐÅ餺®e¡A¦Ó³Ì¥kÃäªí¥Ü¸Ó°O¾ÐÅ餺®eªº ASCII ½X¡C
¤°»ò¬O¡u¦ì§}¡v©O¡H§Ú̪¾¹D¹q¸£n°õ¦æµ{¦¡®É¡A»Ýn§âµ{¦¡»P©Ò»Ý¸ê®Æ¸ü¤J°O¾ÐÅ餤¡A¤è¯à°õ¦æ¡C·í¹q¸£nŪ¨ú¬Y¤@µ§¸ê®Æ®É¡A¥²¶·nª¾¹D¨ºµ§¸ê®Æ¦ì©ó°O¾ÐÅé¦ó³B¡A²¦³º°O¾ÐÅé¬O¥H¤d¡B¦Ê¸U¬Æ¦Ü¤Q»õ ( §Y K¡BM ¬Æ¦Ü G ) ¨Óp¼Æªº¡C§Ú̧â¨CÓ°O¾ÐÅé¥H¤@Ӧ줸²Õ¬°³æ¦ì¡A¥Ñ¹s¶}©l½s¸¹¡A¤@ª½¦V¤W©µ¦ù¨ì§Aªº¹q¸£¸Ë¦³ªº°O¾ÐÅé®e¶q¡C°²·Q§Aªº¹q¸£¸Ë¦³ 1MB ªº°O¾ÐÅé¡A¨º»ò¥i¥H§â¥¦·Q¦¨¨CÓ°O¾ÐÅé¥u¯à¸Ë¤U¤@Ӧ줸²Õ¡A¨Ã¥B¥Ñ¹s¶}©l¬°¨CÓ°O¾ÐÅé½s¸¹¡A¤@ª½¨ì 1048575¡A¦@¦³ 1048576 Ó°O¾ÐÅé½s¸¹¡A¤]¥Nªí§Aªº¹q¸£¥i®e¯Ç 1048576 Ӧ줸²Õ ( ¦b°O¾ÐÅ餤 1K¡×1024¡A1M¡×1048576 )¡C³o¨Ç½s¸¹´N¦n¹³¦í¦vªº¦a§}¡A°²·Q¦³¤@±øµó¦³³\¦h¦í¦v¡A±q¹s¸¹¶}©l½sªùµP¸¹½X¡A¦ý¬O¨CÓ¦í¦v¥u¯à¦í¤@¤H¡A¦]¦¹¶l®tn»¼°e«H¥óµ¹¬Y¤H¡A¥unª¾¹DªùµP¸¹½X´N¥i§â«H¥ó°e¨ì¬Y¤H¤â¤¤¡C³oÀ³¸Ó¬O³Ì²z·Q¡B³Ì²³æªº¦ì§}ªí¥Ü¤è¦¡¤F¡A¹³³oºØªí¥Ü¤è¦¡ºÙ¡uµ´¹ï¦ì§}¡v©Î¡u¹êÅé¦ì§}¡v¡C
¦ý¤£©¯ªº¬O¡A·íªì 8086 ³]p®É¡A¦³ 20 ®Ú¦ì§}½u¡A³Ì¦h¥i¥Hªí¥Ü 220 Ó½s¸¹ ( ¤@®Ú¦ì§}½u¥i¦³°ª¹qÀ£»P§C¹qÀ£¨âºØ¿ï¾Ü¡A¦]¦¹¥iªí¥Ü¨âӼơA0¡B1¡F¨â®Ú¦ì§}½u´N¦³¥|ºØ¿ï¾Ü¡A¥iªí¥Ü 4 ӼơK¡K¡A20 ®Ú¦ì§}½u¡A´N¥iªí¥Ü 220¡×1048576 )¡A´«¥y¸Ü»¡¡A8086 ¥i¥Hªí¥Ü 1048576 Ó°O¾ÐÅé½s¸¹¡A³N»y»¡ 8086 ¥i©w§} 1M Ӧ줸²Õ¡C¦ý¬O¡A8086 ¬O 16 ¦ì¤¸ªº CPU¡A¨ä¤º³¡¼È¦s¾¹¯àªí¥Üªº³Ì¤j¼Æ¬° 216 ( 216¡×65536 )¡A¥ç§Y 8086 ³Ì¦h¯àªí¥Üªº°O¾ÐÅé½s¸¹¥u¦³ 65536¡C¨º»òn¦p¦ó¥Î 16 ¦ì¤¸¥hªí¥Ü 20 ¦ì¤¸ªº¼Æ©O¡H
·íªì³]pªÌ´N±Ä¥ÎÅܳqªº¤èªk¡GÁöµM¤@Ó 16 ¦ì¤¸ªº¼È¦s¾¹µLªkªí¥Ü 20 ¦ì¤¸ªº¼Æ¡A¦ý¬O¨âÓ 16 ¦ì¤¸¼È¦s¾¹´N¥i¥H¤F¡C³]pªÌ§â¦ì§}¥H¡u°Ï¬q¡v¤Î¡u°¾²¾¦ì§}¡v¨Óªí¥Ü¦ì§}¡A´N¬O¦b DEBUG ¤¤¿é¤J D ©R¥O«á¡A¥ªÃä©Ò¬Ý¨ìªº XXXX:YYYY ªº¼Ë¤l¡CXXXX ªí¥Ü°Ï¬q¡AYYYY ªí¥Ü°¾²¾¦ì§}¡A¥L¦b°O¾ÐÅ餤¯u¥¿ªº¦ì§}¬O XXXX*16+YYYY¡AÁ|¨Ò¨Ó»¡¡A10F7:0100 ³oÓ¦ì§}À³¸Ó¬O 10F7¡]¦¹¬°16¶i¦ì¡^*16¡]¤Q¶i¦ì¡^¦A¥[¤W¤Q¤»¶i¦ìªº 100¡Aµ¥©ó 11070H¡C¥H¡u°Ï¬q¡G°¾²¾¦ì§}¡v³oºØ¤è¦¡ªí¥Ü¦ì§}ÁöµM¥i¥H±o¨ì¸û¤jªº¦ì§}¡A¦ý¬O¦P¦ì§}¡A¦³³\¦h¤£¦P¤è¦¡ªí¹F¡A¨Ò¦p 10F7:0100 ¥i¥H¬O 1107:0000¡A¤]¥i¥H¬O 10F0:0170¡A³o¨Ç³£¬O«ü¦P¤@¹êÅé¦ì§}¡C½Ð°Ñ¦Ò¤U¹Ï¡A¥ªÃ䪺¼Æ¦r¬O¹êÅé¦ì§}¡A¤¤¶¡ªº¬O¥Î°Ï¬q:°¾²¾ªí¥Üªº¦ì§}¡A¥kÃä«h¬O¸Ó¦ì§}°O¾ÐÅ骺¤º®e¡C
¨Ï¥Î³oºØ¡u°Ï¬q¡G°¾²¾¡vªº¤èªkªí¥Ü¦ì§}¡AÁÙ¦³¤@Ó¯SÂI¡A¨º´N¬O«Å|¡C¨CӰϬq³£¬O±q°¾²¾¦ì§} 0000 ¶}©l¡A¦ý¬O¦]¬°¦P¤@°O¾ÐÅé¦ì§}¥i¥H¦³³\¦hºØ¤£¦Pªº¡u°Ï¬q¡G°¾²¾¡vªí¥Üªk¡A¦]¦¹°Ï¬q»P°Ï¬q¦³®É·|¤¬¬Û«Å|¡C¨Ò¦p¤W¹ÏùØ¡A¥Î DEBUG ¸ü¤J EXAM01.COM ®É¡AEXAM01.COM ¥Ñ 10F7:0000 ¶}©l¡A´«ºâ¦¨¹êÅé¦ì§}¬O 10F70¡A¦]¦¹¥Ñ 10F70¡ã20F6F ³£¬O³oӰϬqªº½d³ò¡FY¦³¤@ӰϬq±q 1000:0000 ¶}©l¡A¨º»ò¨ä¹êÅé¦ì§}½d³ò¬O 10000¡ã1FFFF¡A©Ò¥H³o¨âӰϬq´N·|µo¥Í«Å|¡C
Åý§Ú̦A¨Ó¬Ý¬Ý DEBUG ùØ¡A°õ¦æ¡uD¡v«ü¥Oªºµ²ªG¡G
10F7:0100 EB 17 90 48 69 2C 20 49-20 6C 65 61 72 6E 20 61 k..Hi, I learn a 10F7:0110 73 73 65 6D 62 6C 79 2E-24 BA 03 01 B4 09 CD 21 ssembly.$:..4.M! 10F7:0120 B8 00 4C CD 21 46 EA 89-56 EC 80 7C 1E 01 74 12 8.LM!Fj.Vl.|..t.
¥ª°¼¬O¡u°Ï¬q¡G°¾²¾¡v¦ì§}¡A¤¤¶¡©Òªí¥Üªº¬O°O¾ÐÅ餤ªº¤º®e¡A¹ï·Ó¤Wªí 10F7:0100 ªº¤º®e¬O EB¡A10F7:0101 ªº¤º®e¬O 17 µ¥µ¥¡A³o¨Ç³£¬O¤Q¤»¶i¦ì¼Æ¡C³Ì¥kÃä¬O°O¾ÐÅ餺®eªº ASCII ½X¡C§A¥i¥H¬dªí¹ï·Ó ASCII ½X 48h ¬Û·í©ó^¤å¦rªº H¡B69h ¬Û·í^¤å¦rªº i¡AY¶W¹L 7Fh ªº¼Æ¦r¡ADEBUG ¦Û°Ê±N³Ì°ª¦ì¤¸Åܦ¨ 0¡A¨Ò¦p 0EBh¡A´NÅܦ¨ 6Bh¡A´N¬O ASCII ªº k¡C¡]¦³Ãö ASCII ½Xªº»¡©ú½Ð°Ñ¦Ò²Ä¤T³¹¡A¦³Ãö ASCII ªº¦Cªí½Ð°Ñ¦Òªþ¿ý¥|¡^
D «ü¥O§¹¾ãªº¥Îªk¬O d [°_©l¦ì§}] [Lªø«×]¡C¨Ò¦p¦pªG§A¥unÆ[¹î 100h ¨ì 110h ªº°O¾ÐÅ餺®e¡A´N¥i¥H¿é¤J
d 100 L 10¦¹³B¬°¤F¤è«K°Ï§O 1 »P L¡A¬G¥Î¤j¼gªº L¡A¹ê»Ú¨Ï¥Î®É¤j¤p¼g³£¬O¤@¼Ëªº¡C
D «ü¥O¤]¥i¥Hª½±µ«ü©wnÅã¥Ü¥Ñ¨º¤@¦ì§}¨ì¨º¤@¦ì§}¡A¥Îªk¦p¤U¡G
d [°_©l¦ì§}] [µ²§ô¦ì§}]°²¦p¹³²Ä¤@Ó«ü¥O¨S¦³«ü©wªø«×¡A¤]¨S¦³µ²§ô¦ì§}¡A¶È¶È¿é¤J¤@Ó d ¦Ó¤w¡ADEBUG ·|¦Û°ÊÅã¥Ü 80H Ӧ줸²Õªº¸ê®Æ´N°±¤î¤F¡C
²{¦b½Ð§A¿é¤J u 119 ¸Õ¸Õ¬Ý¡G
-u 119 [Enter]
10F7:0119 BA0301 MOV DX,0103
10F7:011C B409 MOV AH,09
10F7:011E CD21 INT 21
10F7:0120 B8004C MOV AX,4C00
10F7:0123 CD21 INT 21
10F7:0125 1F POP DS
10F7:0126 BB0002 MOV BX,0200
10F7:0129 81FB0002 CMP BX,0200
§A·|µo²{³Ì¥kÃä¡A¦n¹³¸ò§ÚÌ©Ò¼gªºì©lµ{¦¡Ãþ¦ü¡A¥u¬O¦³¨Ç¦a¤èÅܦ¨¤F¼Æ¦r¡C¨S¿ù¡Au ©R¥O´N¬O§â°O¾ÐÅ骺¤º®eÅܦ¨²Õ¦X»y¨¥¡A³o¨Ç°O¾ÐÅ餺®e¥i¯à¬O¸ê®Æ¡A¤]¥i¯à¬O¥i°õ¦æ½X¡C¹³³o¼Ë§â°O¾ÐÅ餺®e ( ´N¬OÃþ¦ü BA¡B03¡B01 µ¥¼ÆÈ ) Åܦ¨²Õ¦X»y¨¥§U°O½Xªº¹Lµ{¡AºÙ¬°¡u¤Ï²ÕĶ¡v¡A¥¦¬O¯}¸Ñ©Ò¥²»Ýªº¹Lµ{¡C
¦Ó³Ì¥ªÃä¡A«Ü©úÅ㪺´N¬O¨C¤@Ó«ü¥Oªº¦ì§}¡A¦Ó¤¤¶¡ªº´N¬O°O¾ÐÅ餺®e¡A¨ä¹ê³o´N¬O¾÷±ñ½X¡A©Î¤]¦³¤HºÙ¬°¾÷±ñ»y¨¥¡C¹q¸£¥u»{±o 0 »P 1 ²Õ¦¨ªº¼Æ¦r¡A¦b¹q¸£¤º³¡³£¬O³o¼Ëªº¼Æ¦r¡A¤£ºÞ¬O¸ê®Æ©Îµ{¦¡½X¡A¸g CPU °õ¦æ«á¤~¯à½T©w¨º¨Ç¬Oµ{¦¡½X¨º¨Ç¬O¸ê®Æ¡A³o¼Ëªº»y¨¥«ÜÃøÅý¤H¤@¥ØÁAµM¡A©ó¬O´Nµo©ú¤F²Õ¦X»y¨¥¨ÓÀ°§U°O¾Ð¡]§U°O½X¡^¡A³o¨Ç§U°O½X´N¬O³Ì¥kÃä¬Ý¨ìªºÃþ¦ü§ÚÌ©Ò¼gªº²Õ¦X»y¨¥ì©lµ{¦¡¡C
§A¥i¥H³o¼Ë·Q¡A²Õ¦X»y¨¥ªº¨C¤@±ø«ü¥O¡A³£¦³¤@өμÆÓ¤Q¤»¶i¦ì¼Æ»P¤§°t¦X¡A¨Ò¦p BAh ´N¬Û·í©ó ¡umov dx,¡v¡BB4h ¬Û·í©ó¡umov ah,¡v¦ý¨C¤@Ó«ü¥O©Ò¥Îªº¦ì¤¸²Õªø«×¤£¦P¡C
²{¦b½Ðª`·N¨ì¦ì§} 0119H¡B011AH¡B011BH ªº¤º®e¤À§O¬O BA¡B03¡B01¡A¡u½Ķ¡v¦¨²Õ¦X»y¨¥¬O MOV DX,0103¡Aª`·N¨ì¨S¦³¡A¦b§Ú̪º²ßºD¤W 0103H¡A¼Æ¦r¤jªº 1 ¼g¦b¥ªÃä¡F¦ý¬O¦b DEBUG ¤º«o·Ó¦ì§}°ª§C±Æ¦C¡A01 ¼Æ¦r¤j©ó 03¡A©Ò¥H 01 ¦b°ª¦ì§}¡A¬G±Æ¦b¥kÃä¡C³oÂIn½ÐŪªÌª`·N¡A¦b DEBUG ¤¤¡A¼Æ¦r¦ì¼Æ¤jªº¡A¦b°ª¦ì§}¡A±Æ¦b¥kÃä¡C¨ä¥L¹³¦ì§} 0120H¡B0126H¡B0129H ¤]³£Ãþ¦ü¡A¹³³oºØ±Æ¦C¤è¦¡ºÙ¤§¬° Little-Endian¡C¨Æ¹ê¤W¦b IBM PC ¤Î¨ä¬Û®e¹q¸£ªº CPU ³£¬O¥H Little-Endian ¤è¦¡Àx¦s¡A¤]´N¬O¸û¤£«nªº¦ì¤¸²Õ ( LSB ) ¦s©ñ©ó§C¦ì§}¡A³Ì«nªº¦ì¤¸²Õ ( MSB ) ¦s©ñ©ó°ª¦ì§} ( MSB ¬O Most Significant Bit/Byte ªºÁY¼g¡A³q±`Ķ¬°³Ì«nªº¦ì¤¸©ÎªÌ³Ì«nªº¦ì¤¸²Õ¡FLSB ¬O Least Significant Bit/Byte ªºÁY¼g¡A³q±`Ķ¬°³Ì¤£«nªº¦ì¤¸©Î³Ì¤£«nªº¦ì¤¸²Õ )¡C
¦b¡u10F7:0119¡v¦ì§}ªº«ü¥O¬O¡uMOV DX,0103¡v¡A¦pªG±z¹ï·Ó²Ä¤@³¹ªº exam01.asm ì©lµ{¦¡¡A´N·|µo²{¥»¨Ó¬O¼g¡umov dx,offset mes¡v¡A¦ý³Q²ÕĶ¤§«á¡AÅܦ¨¡uMOV DX,0103¡v¡C³o´N¬O OFFSET °²«ü¥Oªº¥\¯à¡A¥¦pºâ¥X mes ¦ì§}¡A¦Ó§â¦¹¦ì§}·í¦¨¼ÆÈ¡A¶ñ¤J DX ùØ¡C±z¥i¦A¹ï·Ó¤W±¡uD¡v«ü¥Oªºµ²ªG¡Ames ¦r¦ê´N¬O¥Ñ¦ì§}¡u10F7:0103¡v¶}©l¡C
²{¦b½Ð§A¸Õ¸Õ u 100 120 ¬Ý¬Ý¡AÀ³¸Ó¦p¤U©Ò¥Ü¡G
-u 100 120 [Enter]
10F7:0100 EB17 JMP 0119
10F7:0102 90 NOP
10F7:0103 48 DEC AX
10F7:0104 692C2049 IMUL BP,[SI],4920
10F7:0108 206C65 AND [SI+65],CH
10F7:010B 61 POPA
10F7:010C 726E JB 017C
10F7:010E 206173 AND [BX+DI+73],AH
10F7:0111 7365 JNB 0178
10F7:0113 6D INSW
10F7:0114 626C79 BOUND BP,[SI+79]
10F7:0117 2E24BA AND AL,BA
10F7:011A 0301 ADD AX,CS:[BX+DI]
10F7:011C B409 MOV AH,09
10F7:011E CD21 INT 21
10F7:0120 B8004C MOV AX,4C00
§A·|µo²{±q 0102¡ã011B¡B0125 ¥H«á³£¤£¬O§ÚÌ©Ò¿é¤Jªºµ{¦¡¡A¦Ó¬On¦L¥Xªº¤å¦r¡uHi, I learn assembly.$¡v¥H¤Î¶Ã½X¡A¦ý¬O¤@¼Ë¥i¥H½Ķ¦¨µ{¦¡½X¡A©Ò¥H¦pªG CPU °õ¦æªº¦ì§} (CS:IP) ¤£¹ï¡A«Ü¥i¯à´N·|·í¾÷¡C(°õ¦æ¦ì§}µy«á»¡©ú)
¦A¬Ý¬Ý¦ì§} 0100H ¬O¤@Ó¸õÅD«ü¥O¡A¨ä¹ê´N¬O EXAM01.COM µ{¦¡ªº²Ä¤@Ó«ü¥O¡A¦Ó¦ì§} 011C ¨ä¹ê´N¬O¥Nªí begin ¼Ð°O¡C´«¥y¸Ü»¡¡ACOM µ{¦¡ÀɳQ¸ü¤J°O¾ÐÅé®É¡A¬O±q¦ì§} 100H ¶}©l©ñ¤Jªº¡A³o¤]´N¬O¼¶¼g COM µ{¦¡®É¬°¤°»òn¥[¤W org 100h¡C
-r [Enter]
AX=0000 BX=0000 CX=0025 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=0100 NV UP EI PL NZ NA PO NC
10F7:0100 EB19 JMP 0119
DEBUG ¦@Åã¥Ü¤T¦æ¡A³Ì©³¤U¤@¦æ´N¬O DEBUG ²{¦b±N°õ¦æ¦ý©|¥¼°õ¦æªº CPU «ü¥O¡A¥Lªº¦ì§}´N¬O CS:IP ©Ò«üªº¦ì§}¡ACPU ·|§â¥¿n°õ¦æ©R¥Oªº¦ì§}¦s¤J CS:IP ¤¤¡A¦Ó¤@¶}©l¸ü¤J COM ÀɮɡAIP ¥²©w¬° 100H¡A¦Ó CS «h¤£¤@©w¡Aµø§A¶}¾÷®É¸ü¤JªºÅX°Êµ{¦¡¦h¹è¦Ó©w¡C
½Ð¤£n¬°³o»ò¦h¼È¦s¾¹¾á¤ß¡A§Ṳ́@¦¸¥u¤¶²Ð¤@¨âÓ¡A²{¦b§A¥unª¾¹D CS¡BIP¡BAX¡BBX¡BCX¡BDX ´N¥i¥H¤F¡C«á±¥|Ó¡A§A¥i¥H§â¦oÌ·Q¦¨¦b CPU ¤¤¼È®É¦s©ñ 16 ¦ì¤¸¸ê®Æªº¦a¤è¡A¦Ó¨C¤@Ó¤S¥i¥H¤À¦¨°ª¦ì¤¸ªº©M§C¦ì¤¸ªº¨âӼȦs¾¹¡C¨Ò¦p AX ¥i¥H¤À¦¨¸û°ªªº 8 ¦ì¤¸ AH ©M¸û§Cªº 8 ¦ì¤¸ AL ¨âӼȦs¾¹¡C¦p¤U¹Ï
¦pªG§A·Qקï¼È¦s¾¹¤º®e¡A¥un¦b r «á±¿é¤J¼È¦s¾¹¦WºÙ´N¥i¥H¤F¡Ar ©M¼È¦s¾¹¦W¤§¶¡¦³¨S¦³ªÅ¥Õ³£µLÃöºòn¡C( ¦b DEBUG ùØ¡Anקï¼È¦s¾¹¤§¼ÆÈ¡A¥u¯àקï AX¡BBX¡BCX¡Kµ¥ 16 ¦ì¤¸¼È¦s¾¹ªº¼ÆÈ¡AµLªkקï AL¡BAH µ¥ 8 ¦ì¤¸ªº¼ÆÈ¡A§Úªº·N«ä¬O¡A±zµLªk¿é¤J
rah
קï AH ¼È¦s¾¹ªº¼ÆÈ¡A¦ý¬O±z¥i¥H¥Î
rax
קï AX ¼È¦s¾¹ªº¼ÆÈ¡C)
³o¬O°lÂÜ«ü¥O¡A¨C¿é¤J¤@Ó t «á¡ADEBUG ´N°õ¦æ¤@Ó«ü¥O¡AµM«á°±¤U¨ÓÅã¥Ü©Ò¦³¼È¦s¾¹¤§¤º®e¡C²{¦b½Ð¥ý¿é¤J¡ur¡v«ü¥O¡AÆ[¹î¼È¦s¾¹«á¡A¦A¿é¤J¤@Ó¡ut¡v«ü¥O¸Õ¸Õ¬Ý¡G
-r [Enter] AX=0000 BX=0000 CX=0025 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=0100 NV UP EI PL NZ NA PO NC 10F7:0100 EB17 JMP 0119 -t [Enter] AX=0000 BX=0000 CX=0025 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=0119 NV UP EI PL NZ NA PO NC 10F7:0119 BA0301 MOV DX,0103
¬O¤£¬O¸õ¨ì 0119 ·Ç³Æ°õ¦æ¤U¤@«ü¥O¡HCS:IP ¤]«ü¦V 10F7:0119 ¤F¡Cì¨Ó 80X86 CPU ¬O¥H CS:IP ( ÁÙ°O±o«e±»¡¥H XXXX:YYYY ªí¥Ü¦ì§}§a¡H ) «ü¦V¥¿n°õ¦æªº«ü¥O¡ACS ¼È¦s¾¹¬Oµ{¦¡½Xªº°Ï¬q¼È¦s¾¹ ( code segment register )¡A¦Ó IP ¼È¦s¾¹ºÙ¬°«ü¥O«ü¼Ð¼È¦s¾¹ ( instruction pointer )¡Cì¨Ó·í CPU n°õ¦æµ{¦¡®É¡A¥²¶·¥ý¨ì°O¾ÐÅé¥h´£¨ún°õ¦æªº«ü¥O¡A¦ý¬On¨ì¨º¤@Ó°O¾ÐÅé¦ì§}¥h´£¨ú«ü¥O©O¡H³o®É CPU ´N·|¹î¬Ý CS:IP «ü¨ì¨º¤@Ó¦ì§}¡AµM«á¨ì¸Ó¦ì§}´£¨ú«ü¥O¡A·í¸Ó«ü¥O°õ¦æ§¹²¦«á¡ACS:IP ¤S·|§}¦V¤U¤@Ó«ü¥Oªº¦ì§}¡A©ó¬O CPU ´N¦A«×«½Æ¤Wz¹Lµ{¡A¦p¦¹¦£¸L¤£°±¦a¤u§@¡C²{¦b¡A¦A³sÄò¿é¤J¨âÓ t ¬Ý¬Ý¡G
-t [Enter] AX=0000 BX=0000 CX=0025 DX=0103 SP=FFFE BP=0000 SI=0000 DI=0000 DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=011C NV UP EI PL NZ NA PO NC 10F7:011C B409 MOV AH,09 -t [Enter] AX=0900 BX=0000 CX=0025 DX=0103 SP=FFFE BP=0000 SI=0000 DI=0000 DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=011E NV UP EI PL NZ NA PO NC 10F7:011E CD21 INT 21
±zÀ³·í¥i¥H¬Ý¨£¨C¦¸°õ¦æ§¹¤@±ø«ü¥O«á¡ACS:IP «K·|§ïÅÜ¡A¦P®É¤]·|§â°õ¦æµ²ªGÅã¥Ü¥X¨Ó¡A¥H¦¹¨Ò¨Ó»¡¡AAH¡BDX ¬O¤£¬O³£Åܦ¨§Ú̹wpªº¼ÆÈ¡H
-g µ²§ô¦ì§}²{¦b°õ¦æ¨ì 10F7:011E ¤F¡A±µ¤U¨Ó¬O¤@Ó DOS ¤¤Â_ªA°Èµ{¦¡¡A§Ú·Q³o¸Ì±À³¸Ó¤£·|¦³¿ù»~¡A¦]¬°³o¬O·L³n¼gªº¡A¸g¹L³\¦h¦¸ÀËÅç¡A¦]¦¹¨S¥²n°lÂÜ¡Aª½±µ¿é¤J¡G(·íµM¥H«á¤]¥i¥H¥Î¨Ó¬ã¨s¤¤Â_µ{¦¡«ç»ò¼gªº)
-g 120 [Enter]
Hi, I learn assembly.
AX=0924 BX=0000 CX=0025 DX=0103 SP=FFFE BP=0000 SI=0000 DI=0000
DS=10F7 ES=10F7 SS=10F7 CS=10F7 IP=0120 NV UP EI PL NZ NA PO NC
10F7:0120 B8004C MOV AX,4C00
¹q¸£¬O¤£¬O¨Ì AH/DX ªº¤º®e¦L¥X¡§Hi, I learn assembly.¡¨¦r¦ê¨Ó¤F¡A¦P®É¨Ï CS:IP «ü¦V¤U¤@Ó«ü¥O¡C²{¦b¦A¿é¤J¶È¶È¤@Ó g ¸Õ¸Õ¬Ý¡G
-g [Enter]
Program terminated normally
¦pªG¥u¿é¤J¤@Ó g ªº¸Ü¡A´N·|¤@ª½°õ¦æ¨ìµ²§ô¡A¨Ã¦L¥X¥¿±`µ²§ôµ{¦¡ªº¦r¼Ë¡C
§A¤]¥i¥H¿é¤J¥Ñ¨º¤@Ó¦ì§}¶}©l°õ¦æ¡A³o®É¿é¤J
-g=°_©l¦ì§}
-q [Enter]
E:\HomePage\SOURCE>
³o¬Oקï°O¾ÐÅ餺®eªº«ü¥O¡A¥ý¶i¤J DOS ¼Ò¦¡¡A¦A¸Õ¸Õ¬Ý¥H¤U¾Þ§@¡G
C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Enter]ª`·N¡I¿é¤J 41 «á¡A¦³¨âºØ¿ï¾Ü¡A¦pªG¤£nקï¤U¤@¦ì§}ªº¤º®e¡An«ö Enter Áäµ²§ô e «ü¥O¡F¦pªGnק諸¸Ü¡A´N«öªÅ¥ÕÁä¡ADEBUG ·|¦Û°Ê¦L¥Xì¨Ó¤º®e¡Aµ¥«Ý§A¼Æ·sÈ¡C§ÚÌ«öªÅ¥ÕÁä¡A¦A¿é¤J 42 ¸Õ¸Õ¡A
C:\WINDOWS\COMMAND>debug [Enter] -d 100 L20 [Enter] 146F:0100 65 20 68 69 67 68 20 6D-41 6D 6F 72 79 20 61 72 e high mAmory ar 146F:0110 65 61 2E 0D 0A 22 4D 6F-64 75 6C 65 34 00 5E 14 ea..."Module4.^. -e 107 [Enter] 146F:0107 6D.41 [Space] 146F:0108 41.42 [Space] 6D.43 [Enter]¿é¤J 41 «á«öªÅ¥ÕÁä´N·|¥X²{¿é¤J¤U¤@¦ì§}ªº´£¥Ü¡A¦A¿é¤J42 ¡AµM«á¦A«öªÅ¥ÕÁä¨Ã¿é¤J 43¡C¿é¤J 43 «á¡A¦A«ö Enter Áäµ²§ô e «ü¥O¡CÅã¥Ü°O¾ÐÅ餺®e¬Ý¬Ý¡G
-d 100 L10 [Enter] 146F:0100 65 20 68 69 67 68 20 41-42 43 6F 72 79 20 61 72 e high ABCory ar -q [Enter] C:\WINDOWS\COMMAND>¬õ¦âªº³¡¤À´N¬O§ÚÌק諸¦a¤è¡C
a [¦ì§}]
³o¼Ë±z´N¥i¥H¦b¿é¤Jªº¦ì§}ª½±µ¿é¤J X86 «ü¥O¡A¦ý¬OµLªk¨Ï¥Î¼Ð°O©ÎÅܼƦW¡A³£n¥Î¦ì§}ªí¥Ü¡C©³¤U¬O¥Î¡ua¡v«ü¥O¼g¤@Ó¦b¿Ã¹õ¤W¦L¥X¡uABCD¡vªº¤pµ{¦¡¡G
E:\HomePage\SOURCE>debug [Enter] -a 100 [Enter] 128A:0100 mov ah,9 [Enter] 128A:0102 mov dx,200 [Enter] 128A:0105 int 21 [Enter] 128A:0107 mov ah,4c [Enter] 128A:0109 int 21 [Enter] 128A:010B [Enter] -e 200 [Enter] 128A:0200 00.41 00.42 00.43 00.44 24.24 [Enter] ¡÷¨C¿é§¹¤@Ó ASCII ½X«á¡A«ö [SPACE] Áä¿é¤J¤U¤@Ó AX=0900 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=128A ES=128A SS=128A CS=128A IP=0102 NV UP EI PL NZ NA PO NC 128A:0102 BA0002 MOV DX,0200 -g [Enter] ABCD
³oÓ«ü¥O¬O«ü©wÀɦW¡A¦ý¬O¶È¤î©ó«ü©wÀɦW¦Ó¤w¨Ã¤£·|¸ü¤J©Î¦s¤JÀɮסC¨ä»yªk¬O
N [¸ô®|¦W]ÀɦW
¦pªGÀɦW¿ù»~ªº¸Ü¡A³oÓ«ü¥O¤]¤£·|´£¥X¿ù»~°T®§¡An¨ì¹ê»Ú¸ü¤J®É¤~·|³qª¾±z¡C
³oÓ«ü¥O¬O¨Ï DEBUG ¸ü¤JºÏ°Ï (sector) ªº¸ê®Æ©Î¸ü¤JÀɮסC¦pªGn¸ü¤JºÏ°Ï¡A»yªk¬O
L ¸ü¤J¦ì§} ºÏºÐ¾÷¦W °_©lºÏ°Ï ¸ü¤JºÏ°Ï¼Æ
¸ü¤J¦ì§}¬O«ü±qºÏºÐ¤WŪ¨úªº¸ê®Æ·|³Q DEBUG ©ñ¦b³oÓ¦ì§}¡A¥Î XXXX:YYYY ªí¥Ü¡A¦pªG°Ï¬q¦ì§}¬Ù²¤¡A«h¦Û°Ê¥Î DS ¥N´À¡CºÏºÐ¾÷¦Wªº¥Îªk¬O A: ºÏºÐ¾÷¥Î 0¡AB: ºÏºÐ¾÷¥Î 1¡AC: ºÏºÐ¾÷¥Î 2¡A¨Ì¦¹Ãþ±À¡C³o¸ÌªººÏ°Ï¬O«üÅÞ¿èºÏ°Ï¡A°Ñ¦Ò²Ä¤Q¤K³¹¡C¨Ò¦pn¸ü¤JµwºÐ C: ªº±Ò°ÊºÏ°Ï¨ì DS:0100 ¦ì§}¡A¥i¥H¥Î
-L 100 2 0 1 [Enter]
¦pªGn¸ü¤J¤@ÓÀɮתº¸Ü¡A¥²¶·¥ý¥Î N «ü¥O¥ý«ü©wÀɦW¡A¦A¥Î L «ü¥O¸ü¤J¡A»yªk¬°
L [¸ü¤J¦ì§}]
§Y¥i¡A¦pªG¸ü¤J¦ì§}¬Ù²¤¡A·|¦Û°Ê±NÀɮצs©ñ¦b DS:0100 ³B¡A¦P®É CX ¤§¼ÆȪí¥ÜÀɮתø«×¡C¦ý¬O¦pªG±z¸ü¤Jªº¬O¥i°õ¦æÀÉ EXE ªº¸Ü¡ADEBUG ·|±N EXE ªº¤º®e¦Û°Ê¤À°t¦n¡A¤]´N¬O¸ü¤J«á CS «ü¦V EXE ªºµ{¦¡½X°Ï¬q¡ADS «ü¦V¸ê®Æ¬q¡K¡K(¨£²Ä¤Q¤@³¹)¡C
¦¹¥~·L³nÁÙ¥X¤F¤@Ó¸û¬°±j®«ªº°£¿ù¾¹¡ASYMDEB.EXE¡AºÙ¬°²Å¸¹°£¿ù¾¹¡A½Ð«ö³o¸Ì¬Ý¬Ý¡C