³o¤@³¹±µ³o¤W¤@³¹³B²z¦r¦êªº«ü¥O¡A½Í¤@½Í³Ñ¤Uªº³B²z¦r¦êªº«ü¥O¡GSCASB¡BSTOSB¡BLODSB¡C
SCASB ¬O scan string byte¡A½¦¨¤¤¤å´N¬O¥H¦ì¤¸²Õ¤è¦¡±½´y¦r¦ê¡A·N«ä´N¬O¦b¬YÓ¦r¦ê¤¤±½´y¡A¬Ý¬Ý¬O§_¦³«ü©wªº¦ì¤¸²Õ¡C«ü©wªº¦ì¤¸²Õ¥²¶·¬O©ñ¦b AL ¼È¦s¾¹ùØ¡A³Q±½´y¦r¦êªº¦ì§}©ñ¦b ES:DI¡C¦pªG¶È¶È¬O SCASB «ü¥O¡A¨ä¹ê´N¬O§â AL ©M¬YÓ°O¾ÐÅé¤ñ¸û¡A¦P®É¨Ï DI ¼W©Î´î¤@¡A¨S¤°»ò¯S§O¡C
¤£¹L¡ASCASB ³q±`·|·f°t REPE ©Î REPNE ¨Ï¥Î¡A¥ç§Y¡uREPE SCASB¡v©Î¡uREPNE SCASB¡v¡A³o¼Ë´N¯à«½Æ±½´y¡C«½Æªº¦¸¼Æ©ñ¦b CX ¼È¦s¾¹ùØ¡A¨C±½´y¤@¦¸¡ACX ·|´î¤@¡ADI ·|¦Û°Ê«ü¦V¤U¤@Ó¦ì§}¡C¤U¤@Ó¦ì§}¬O¨Ì¾Ú¤è¦VºX¼Ð¨M©wªº¡A¦pªG¤è¦VºX¼Ð¬° UP¡A¨º»ò DI ¼W¥[¤@¡FY¤è¦VºX¼Ð¬° DN¡ADI ´î¤Ö¤@¡C
REPE ¬O repeat while equal ªº·N«ä¡A¦]¦¹ REPE SCASB ªº·N«ä¬O·í¬Ûµ¥®É¡A«½Æ±½´y¡C«e±´£¹L¡ACPU ¤ñ¸û¨â¹Bºâ¤¸¬O¥Î´îªk¤ñ¸û¡A¦pªG¬Û¦P©Ò±oµ²ªG·|¬O¹s¡A©Ò¥H REPE ¤]¥i¥H¼g¦¨ REPZ¡A³oùتº Z ´N¬O¹sªº·N«ä¡C
REPE SCASB ¬O·í¬Ûµ¥¡A´N«½Æ±½´y¡C¤Ï¹L¨Ó»¡¡A¦pªG AL »P ES:DI ©Ò«ü¦ì§}ªº¤º®e¤£¦P®É¡A´N°±¤î±½´y¡A³o®ÉÔ¹sȺX¼Ð·|³Q³]¬°¡uNZ¡v¡A³o·íµM¬O¦]¬°±½´yµ²ªG¤£¦P¡CÁÙ¦³¤@ºØ±¡§Î¤]·|°±¤î±½´y¡A´N¬O CX Åܬ°¹sªº®ÉÔ¡A³o®ÉÔ¹sȺX¼Ð·|¬O¡uZR¡v¡A³o¬O¦]¬°¥u¦³±½´y«á¥þ³¡¤@¼Ë¡A¤~µ²§ô±½´yÅý CX Åܹs¡A¬JµM¬Û¦P¡A¹sȺX¼Ð´N¬O¡uZR¡v¡C¥Î SYMDEB ¨Ó¸Õ¸Õ¬Ý REPE SCASB¡G
E:\>C:\TOOLS\SYMDEB [Enter] Microsoft (R) Symbolic Debug Utility Version 4.00 Copyright (C) Microsoft Corp 1984, 1985. All rights reserved. Processor is [80286] -e 120 "11122223" [Enter] ¡÷n±½´yªº¦r¦ê¦b ES:0120 ¶}©lªº¤KӦ줸²Õ -a [Enter] 20C5:0100 mov cx,8 [Enter] 20C5:0103 mov di,120 [Enter] 20C5:0106 mov al,31 [Enter] 20C5:0108 repe scasb [Enter] 20C5:010A [Enter]
°õ¦æ DEBUG/SYMDEB ®É¡A¦pªG¤£°£¿ù¡A¨º»ò¤@¶i¤J DEBUG/SYMDEB ®É¡A¥|ӰϬq¼È¦s¾¹³£¬Û¦P¡A¦]¦¹¤W±¨Ã¨S¦³³]©w ES¡C©³¤U¥ý¥Î¡ur¡v«ü¥O¡A¬Ý¬Ý¼È¦s¾¹¤Î±N°õ¦æªº«ü¥O¡Aª`·N¨ìèè´£¨ìªº¥|ӰϬq¼È¦s¾¹·í¬Û¦P ( ¥Î¥Õ¦âªº¦rªí¥Ü)¡A¦P®É¤]ª`·N¨ì¤è¦VºX¼Ð¬O¡uUP¡v( ¬õ¦â¦r )¡C
-r [Enter] AX=0000 BX=0000 CX=0000 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0000 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0100 NV UP EI PL NZ NA PO NC 20C5:0100 B90800 MOV CX,0008 -t [Enter] AX=0000 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0000 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0103 NV UP EI PL NZ NA PO NC 20C5:0103 BF2001 MOV DI,0120 -t [Enter] AX=0000 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0120 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0106 NV UP EI PL NZ NA PO NC 20C5:0106 B031 MOV AL,31 ;'1' -t [Enter] AX=0031 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0120 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0108 NV UP EI PL NZ NA PO NC 20C5:0108 F3 REPZ 20C5:0109 AE SCASB
¤W±¤w°õ¦æ¤TÓ¡ut¡v«ü¥O¡A¦b¯u¥¿°õ¦æ¡uREPE SCASB¡v¤§«e¡A¥ý¨ÓÆ[¹în±½´yªº¦r¦ê¡A¦p¤U±¡A·Ó±Àºâ¡AÀ³¸Ó·|±½´y¨ì ES:0123 ¦ì§}´N°±¤U¨Ó¡G
-d 120 l10 [Enter]
20C5:0120 31 31 31 32 32 32 32 33-00 00 00 00 00 00 00 00 11122223........
©³¤U°õ¦æ¡ut¡v«ü¥O¡A¨Ï CPU °õ¦æ¡uREPE SCASB¡v«á¡A¦AÆ[¹î³Q±½´yªº¦r¦ê¡G
-t [Enter] AX=0031 BX=0000 CX=0004 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0124 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=010A NV UP EI NG NZ AC PE CY 20C5:010A 0000 ADD [BX+SI],AL DS:0000=CD -d 120 l10 [Enter] 20C5:0120 31 31 31 32 32 32 32 33-00 00 00 00 00 00 00 00 11122223........
ª`·N¨ì¡A¡uREPE SCASB¡v¬O·í CPU ¥Î AL ¥h±½´yªº¦r¦ê¤ºªº¦U¦ì¤¸²Õ¡A¦pªG¬Û¦P´N«½Æ¡C·í²Ä¤@Ó¤£¦P®É´N°±¤î±½´y¡A¦¹¨è DI ©Ò«üªº¦ì§}¡A¥H¥Õ¦â¼Ð¥Ü¥X¡A¨Ã¤£¬O²Ä¤@Ó¤£¦Pªº¦ì§}¡A¦Ó¬O¤U¤@Ó¡C³o·íµM¬O±½´y«á CPU ¤~ª¾¹D¤£¦P¡A¦ý¦¹¨è DI ¤w¸g«ü¦V¤U¤@Ó¦ì§}¤F¡C¦ý¬O§Ú̦pªGn¨ú±o²Ä¤@Ó¤£¦Pªº¦ì§}¡A¥un±N DI ´î¥h¤@§Y¥i¡C¦P¼Ë CX ¬O©|¥¼±½´yªº¦ì¤¸²ÕӼơA¨Ã¤£¬O¤£¦Pªº¦ì¤¸²ÕӼơC
REPNE ¬O repeat while not equal ªº·N«ä¡A¤]¥i¥H¼g¦¨ REPNZ¡CPEPNE SCASB ªº·N«ä¬O·í¤£¬Ûµ¥®É¡A«½Æ±½´y¡C¤Ï¹L¨Ó»¡¡A¦pªG AL »P ES:DI ©Ò«ü¦ì§}ªº¤º®e¤@¼Ë®É¡A´N°±¤î±½´y¡CÁÙ¦³¤@ºØ±¡§Î¤]·|°±¤î±½´y¡A´N¬O CX Åܬ°¹sªº®ÉÔ¡C¬°¤FÆ[¹î REPNE SCASB °õ¦æ±¡§Î¡A§Ú̧â¤W±µ{¦¡½Xµy·L§ï¤@¤U¡A¤@¬O§ï IP Åܬ° 100¡A§â 20C5:0108 §ï¦¨¡urepne scasb¡v¡A¦p¤U¡G
-a 108 [Enter] 20C5:0108 repne scasb [Enter] 20C5:010A [Enter] -r ip 100 [Enter]
µM«á°õ¦æ¤T¦¸¡ut¡v«ü¥O¡G
-t [Enter] AX=0031 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0124 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0103 NV UP EI PL NZ AC PE CY 20C5:0103 BF2001 MOV DI,0120 -t [Enter] AX=0000 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0120 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0106 NV UP EI PL NZ AC PE CY 20C5:0106 B031 MOV AL,31 ;'1' -t [Enter] AX=0031 BX=0000 CX=0008 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0120 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=0108 NV UP EI PL NZ AC PE CY 20C5:0108 F2 REPNZ 20C5:0109 AE SCASB
±µ¤U¨Ón¯u¥¿°õ¦æ REPNE SCASB ¤F¡A¤U¹F¡ut¡v«ü¥O¡G
-t [Enter] AX=0031 BX=0000 CX=0007 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0121 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=010A NV UP EI NG ZR AC PE CY 20C5:010A 0000 ADD [BX+SI],AL DS:0000=CD -
REPNE SCASB ¥u±½´y²Ä¤@Ӧ줸²Õ´N°±¤î¤F¡A¦]¬°¦r¦êªº²Ä¤@Ӧ줸²Õ´N©M AL ¬Û¦P¡A¤]¦]¬°¬Û¦P¡A¬G¹sȺX¼Ð³Q³]¬°¡uZR¡v¡A¨£¤W±¥Õ¦âªº¦r¡C
SCASB ±`»P REPE ©Î REPNE ·f°t¨Ï¥Î¡CREPE SCASB ¬O±½´yµo²{¤£¦P´N°±¤î¡AREPNE SCASB ¬O±½´yµo²{¬Û¦P´N°±¤î¡C¦pªGn¦b¤@¤jµ§¸ê®Æµo²{»P AL ¤£¦Pªº¡An¥Î REPE SCASB¡F¦b¤@¤jµ§¸ê®Æ§ä¨ì»P AL ¬Û¦Pªº¡A¥Î REPNE SCASB¡C«Ü©úÅã¡AREPNE SCASB ¤ñ¸û±`¥Î¡C
³o¤TÓ«ü¥O©M SCASB Ãþ¦ü¡A¤]¯à·f°t REPE ©Î REPNE ¨Ï¥Î¡C®t§O¬O¦b¡ASCASW ¬O¦b¤@¦r¦ê¤¤±½´y¬O§_¦³¯S©wªº¦r²Õ¡A¦¹¯S©wªº¦r²Õ¦s©ó AX ùØ¡FSCASD «h¬O±½´y¬O§_¦³¯S©wªºÂù¦r²Õ¡A¦¹Âù¦r²Õ©ñ¦b EAX¡FSCASQ «h¬O±½´y¬O§_¦³¯S©wªºÂù¦r²Õ¡A¦¹Âù¦r²Õ©ñ¦b RAX¡CSCASQ ¥u¯à¥Î¦b x64 µ¥¯Åªº CPU¡C
¦b¤Q¤»¦ì¤¸ªº¨t²Î¤¤¡A³Q±½´yªº¦r¦ê©ñ¦b ES:DI ©Ò«ü¦ì§}¤¤¡A«½Æ¦¸¼Æ©ñ¦b CX¡F¤T¤Q¤G¦ì¤¸ªº¨t²Î¤¤¡A«h©ñ¦b EDI ©Ò«ü¦ì§}¡A«½Æ¦¸¼Æ©ñ¦b ECX¡F¤»¤Q¥|¦ì¤¸¤¤¡A«h©ñ¦b RDI ©Ò«üªº¦ì§}¡A«½Æ¦¸¼Æ©ñ¦b RCX¡C
STOSB ¬O store string byte¡A½¦¨¤¤¤å¬O§â AL ùتº¸ê®Æ¦s¤J ES:DI ©Ò«üªº°O¾ÐÅ餺¡A¦P®É¨Ì¾Ú¤è¦VºX¼Ð¨Ï DI ¼W´î¤@¡CSTOSB ¤]¥i¥H·f°t REP «ü¥O¡A³o¼Ëªº¸Ü´N·|«½ÆÀx¦s AL ¤ºªº¸ê®Æ¡A¦Ó¨Ï¤@¶ô°O¾ÐÅ骺¤º®e³£Åܦ¨¸ò AL ¤ºªº¸ê®Æ¤@¼Ë¡A¦b²M°£°O¾ÐÅ餺ªº¸ê®Æ®É«Ü¦³¥Î¡C
·f°t REP ¨Ï¥Î®É¡A«½Æ¦¸¼Æ¨Ìµ{¦¡¬O´X¦ì¤¸¦Ó¦³©Ò¤£¦P¡A¤Q¤»¦ì¤¸¡B¤T¤Q¤G¦ì¤¸¡B¤»¤Q¥|¦ì¤¸ªºµ{¦¡¡A«½Æ¦¸¼Æ¤À§O©ñ¦b CX¡BECX¡BRCX ¼È¦s¾¹ùØ¡A¦Ó¥Øªº¦r¦êªº¦ì§}«h¤À§O©ñ¦b ES:DI¡BEDI¡BRDI ùØ¡C
³o¤TÓ«ü¥O¡A¸ò STOSB «ÜÃþ¦ü¡A®t§O¦b©ó¥¦Ì¤@¦¸¤À§OÀx¦s¤@Ó¦r²Õ¡B¤@ÓÂù¦r²Õ¡B¤@Ó¥|¦r²Õ¡A¦P®É¤]¨Ï¥Øªº¯Á¤Þ¼È¦s¾¹¤À§O¼W´î¤G¡B¥|¡B¤KӦ줸²Õ¡C¦P¼Ëªº¡A³o¤TÓ«ü¥O¤]¯à·f°t REP ¨Ï¥Î¡A«½Æ¦¸¼Æ´N©ñ¦bp¼Æ¼È¦s¾¹ùØ¡C
軡¹L¡AREP ·f°t STOSB/STOSW/STOSD/STOSQ ¯à«Ü§Öªº¶ñº¡¤@¶ô°O¾ÐÅé¡A©³¤U¤p¤ì°¸´N¥Ü½d¦p¦ó§Ö³tªº²M°£¿Ã¹õ¡C
IBM PC ¤@¶}©lµo°âªºì©l¾÷ºØ¡A¥i¥H¿ï¥Î¨âºØÅã¥Ü¥d¤¤ªº¨ä¤¤¤@ºØ¡A³æ¦âÅã¥Ü¥d ( Monochrome Display Adapter ©Î MDA ) »P±m¦â¹Ï§Î¥d (Color Graphics Adapter ©Î CGA )¡A«eªÌ¥u¯à¦b¤å¦r¼Ò¦¡¤UÅã¥Ü¡A«áªÌ¦³¤å¦r»P¹Ï§Î¨âºØ¼Ò¦¡¡C
¤£ºÞþ¤@ºØÅã¥Ü¥d¡A¤]¤£½×¤å¦r©Î¹Ï§Î¡A©ÒÅã¥Üªº¸ê®Æ³£¬OÀx¦s¦b°O¾ÐÅ餤¡A³oºØÀx¦sÅã¥Ü¸ê®Æªº°O¾ÐÅéºÙ¬°µø°T°O¾ÐÅé ( video memory )¡CMDA ªºµø°T°O¾ÐÅé°Ï¬q¦ì©ó B000H¡ACGA «h¦ì©ó B800H¡C¥Ñ©ó²{¦b´X¥G¨S¦³¥u¯àÅã¥Ü¤å¦r¼Ò¦¡ªºÅã¥Ü¥d¤F¡A©Ò¥H¤p¤ì°¸¥u½Í CGA¡CÁöµM¥H«á¤S¦³¤F EGA¡BVGA¡BAGP ¨ì²{¦bªº PCI Express¡A¦ý¦pªG¨t²Î¯à¥Î DOS ¶}¾÷¡A³£·|»P CGA ¬Û®e¡C
CGA ªº¤å¦r¼Ò¦¡¤S¦³¨âºØ¡A¤@¬O°ª¸ÑªR«×¤å¦r¼Ò¦¡¡A¥t¤@ºØ¬O§C¸ÑªR«×¤å¦r¼Ò¦¡¡C«eªÌ¬O¥Ñ¥ª¦Ü¥k³Ì¦h¥iÅã¥Ü 80 Ó¦r¡A¿Ã¹õ¥Ñ¤W¨ì¤U¦@ 25 ¦C¡A¥iºÙ¬° 80¡Ñ25 ¤å¦r¼Ò¦¡¡A³o¬O DOS ¤@¶}¾÷©Ò¹w³]ªº¼Ò¦¡¡C«áªÌ¬O 40 ¦r§Î¦¨¤@¦C¡A¤]¬O 25 ¦C¡A¦]¦¹ºÙ¬° 40¡Ñ25 ¤å¦r¼Ò¦¡¡C
¤£ºÞþ¤@ºØ¸ÑªR«×¡A¥ô¤@¦Cªº¥ô¤@¦æ¥u¯àÅã¥Ü¤@Ó^¤å¦r¥À¡A³oÓ^¤å¦r¥À¬O¥H ASCII ½Xªº¤è¦¡Àx¦s¦bµø°T°O¾ÐÅ餤¡C^¤å¦r¥Àªº ASCII ½X¶È¦û¤@Ӧ줸²Õ¡A¦Ó¬Û¾F¥B¤ñ¥¦°ª¤@Ӧ줸²Õ¬O¦¹^¤å¦r¥Àªº«e´º¦â»PI´º¦â¡C¤]´N¬O»¡¡ACGA ¦bÅã¥Ü¤å¦r®É¡A¨CÓ¤å¦r¶·¨âӦ줸²ÕªºªÅ¶¡Àx¦s¡C
CGA ªºµø°T°O¾ÐÅé¦ì§}¥Ñ B800:0000 ³B¶}©l¡A¦]¦¹¿Ã¹õ³Ì¥ª¤W¨¤¡A¤]´N¬O²Ä¹s¦C¡B²Ä¹s¦æªº¦r¤¸¡AÀx¦s¦b°O¾ÐÅé¦ì§} B800:0000¡ãB800:0001 ³o¨âӦ줸²Õ¡AB800:0000 ¬O¦r¤¸ªº ASCII ½X¡A¦Ó B800:0001 ¬O¨äÃC¦â¡F²Ä¹s¦C²Ä¤@¦æªº¤å¦rÀx¦s¦b B800:0002¡ãB800:0003¡AB800:0002 ¬O ASCII ½X¡AB800:0003 ¬OÃC¦â¡K¡K¡A¨ä¾l¨Ì¦¹Ãþ±À¡A°Ñ¦Ò¤U¹Ï¡A¤U¹Ï¤¤¨CÓ¦r¤¸¥HÂŦâ®Ø®Ø¥Nªí¨ä½d³ò¡Aùرªº¶À¦â¤Q¤»¶i¦ì¼ÆȬO¸ÓÂIªº¤å¦rÀx¦s¦ì§}¡G
¦pªG¬O°ª¸ÑªR«× 80¡Ñ25 ¤å¦r¼Ò¦¡¡A¨C¦C¦³ 80 Ó¦r¤¸¡A¦]¦¹¨C¦C»Ýn 160 Ӧ줸²ÕªºªÅ¶¡¡A160 ´«¦¨¤Q¤»¶i¦ì¬O A0¡C¦Ó²Ä¹s¦C¤U±±µµÛ²Ä¤@¦C¡A¨ä°O¾ÐÅé¦ì§}´NÀ³¸Ó¬O B800:00A0 ¶}©l¡F¦P²z¡A²Ä¤G¦C¥Ñ B800:0140 ¶}©l¡K¡K¡C
¦Ü©ó¦r¥ÀªºÃC¦â¤À¬°«e´º¦â»PI´º¦â¡A«e´º¦â¬O¦rªºÃC¦â¡AI´º¦â¥i·Q¦¨¬O¯ÈªºÃC¦â¡C¨Ò¦p¥ÎÂŦâì¤lµ§¦b¶À¯È¤W¼g¦r¡A«e´º¦â¬OÂŦâ¡AI´º¦â¬O¶À¦â¡C¤£½×«e´º¦â©ÎI´º¦â¡A³£¥H¥|Ӧ줸ªí¥Ü¡A¦]¦¹¤À§O¥i¥HÅã¥Ü¤Q¤»ºØÃC¦â¡C¦Ó¨CӦ줸²Õ¦³¤KӦ줸¡A¦]¦¹¦ì¤¸²Õ¸û§Cªº¥|Ӧ줸ªí¥Ü«e´º¦â¡A¸û°ªªº¥|Ӧ줸«hªí¥ÜI´º¦â¡C¤Q¤»ºØÃC¦âªº¥N½X¦p¤Uªí¡G
ÃC¦â | ¼ÆÈ | Åã¥Ü | ÃC¦â | ¼ÆÈ | Åã¥Ü | ÃC¦â | ¼ÆÈ | Åã¥Ü | ÃC¦â | ¼ÆÈ | Åã¥Ü |
¶Â¦â | 0 | ¬õ¦â | 4 | ²`¦Ç¦â | 8 | ²H¬õ¦â | C | ||||
ÂŦâ | 1 | µµ¦â | 5 | ²HÂŦâ | 9 | ²Hµµ¦â | D | ||||
ºñ¦â | 2 | ´Ä¦â | 6 | ²Hºñ¦â | A | ¶À¦â | E | ||||
«C¦â | 3 | ¦Ç¦â | 7 | ²H«C¦â | B | ¥Õ¦â | F |
©³¤U¨ÓÅçÃҬݬݤW±ªºì²z¡C¶i¤JµêÀÀ¾÷¾¹ªº¡uMS-DOS 6.20¡v«á¡A¥ý¦b DOS ©³¤U¿é¤J«ü¥O¡uCLS¡v¡A¥¦¥i¥H²M°£¿Ã¹õ¥BÅý´å¼Ð¦^¨ì²Ä¤@¦C¡A¥H¤è«K§Ṳ́U¹F«ü¥O¤ÎÆ[¹î¡AµM«á°õ¦æ TOOLS\SYMDEB¡A¨£¤U¹Ï¡G ¶i¤J SYMDEB ¤§«á¡A¿é¤J¡uD B800:0 L10¡v¡A§A·|¨£¨ìÅã¥Ü¥X¨Óªº¬O¡uB800:000 20 07 20 07 20 07 20 07-20 07 20 07 20 07 20 07¡v¡A¬°¤°»ò·|¬O³oºØ¼Ë¤l©O¡H¨ä¹ê²z¥Ñ«Ü²³æ¡A¦]¬°²Ä¹s¦Cªº¤å¦r¥þ¬OªÅ¥Õ¡AªÅ¥Õ¦r¤¸ªº ASCII ½X¬O 20H¡A©Ò¥H¦b¦ì§} B800:0000 Àx¦sªº¬O 20H¡A¦Ó B800:0001 ³BÀx¦sªº¬O 07¡C®Ú¾Ú«ez¡A0 ¬OI´º¦â¡A¬d¤Wªí±oª¾¬O¶Â¦â¡A7 ¬O«e´º¦â¡A§Y¤å¦rªºÃC¦â¡A¬°¦Ç¦â¡C
¦b°ª¸ÑªR«×¤å¦r¼Ò¦¡¤U¡A¤@¦C¦³ 80 Ó¦r¡A¨CÓ¦r¥Î¨âӦ줸²Õªí¥Ü¡A¦]¦¹¤@¦Cn¥Î¥h 160 Ӧ줸²Õ ( ¤Q¤»¶i¦ì¬O 0A0H )¡A¦]¦¹²Ä¤@¦C¬O±q°O¾ÐÅé B800:00A0 ¶}©l¡A¿é¤J¡uD B800:A0 L30¡v¹î¬Ý³o¬qµø°T°O¾ÐÅ骺¤º®e¡A©M¿Ã¹õ¤Wªº¤å¦r¤ñ¸û¡A¬O¤£¬O¤@¼Ë©O¡H
§A¤]¥i¥H¸Õ¸Õ¬Ý¡A§â B800:00A1 ³Bªº 07 §ï¦¨ 4F¡A4 ¬OI´º¦â¡A¬°¬õ¦â¡AF ¬O«e´º¦â¡A¬°¥Õ¦â¡C¦p¤U¹Ï¡A¬O¤£¬O¬Ý¨ì²Ä¤@¦Cªº¡uC¡vÅܦ¨¥Õ¦r¬õ©³ªºÃC¦â¤F¡H
¬JµMª¾¹D¤Fì²z¡A¨º»ò¦b°ª¸ÑªR«×¤å¦r¼Ò¦¡¤§¤U¡A´NÅܦ¨¥i¥HÅý§ÚÌ¥ô·N¾Þ§Ë¤F¡C¨Ò¦p¡An§â¿Ã¹õ§ï¦¨¶À¦rÂÅ©³¡Aµ{¦¡½X¦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
29 30 31 32
33 34 35 36 |
;§â¿Ã¹õªºI´ºÅܦ¨ÂŦâ¡A¤å¦rÅܦ¨¶À¦â
.MODEL SMALL,C
.386
;*******************************************************************************
.STACK 256
;*******************************************************************************
.DATA
msg DB "Set text color to white and background color to blue.",0dh,0ah,
"Press any key to continue.$"
exit_c DB 1
;*******************************************************************************
video SEGMENT PARA AT 0b800h ;µø°T°O¾ÐÅé°Ï¬q¦ì©ó0B800H³B
video ENDS
;*******************************************************************************
.CODE
;-------------------------------------------------------------------------------
main PROC
.STARTUP
mov ax,video
mov es,ax ;§âES«ü¦Vµø°T°O¾ÐÅé°Ï¬q¦ì§}
mov ah,9
lea dx,msg
int 21h ;¦L¥Xmsg¦r¦ê
mov ah,0 ;¼È°±¤@¤U¡AÅý¨Ï¥ÎªÌ«ö¥ô¤@Áä¤~Ä~Äò
int 16h ;BIOS ªA°Èµ{¦¡¡A½Ð°Ñ¾\µù¤@
sub di,di ;¨ÏES:DI«ü¦VB800:0000³B¡A§Yµø°T°O¾ÐÅé°_©l¦ì§}
mov ah,1eh ;AH¤¤¸û§Cªº¥|Ӧ줸¬O¤å¦rÃC¦â¡A¸û°ªªº¥|Ӧ줸¬OI´º¦â
mov cx,80*25 ;VGA°ª¸ÑªR«×¤å¦r¼Ò¦¡¤¤¡A¦³25¦C¡A¨C¦C80¦r
next: mov al,es:[di] ;¥Ñµø°T°O¾ÐÅ餤¨ú¥X¤å¦r
stosw ;¦A§â¤å¦rÃC¦â¡BI´ºÃC¦â¡B¤å¦r¦s¤Jì¦ì§}
loop next
.EXIT exit_c
main ENDP
;*******************************************************************************
END |
³oÓµ{¦¡«Ü²³æ¡Aº¥ý¥ý¬Ý¨ì³oÓµ{¦¡¦³¥|ӰϬq¡A¤ñ¸û¯S§Oªº¬O²Ä 12¡ã13 ¦æ«Å§iªº video °Ï¬q¡A¦¹°Ï¬q¥Î AT ¤è¦¡§â°Ï¬q³]¬°¦b B800H ³B¡A¥ç§Yµø°T°O¾ÐÅé©Ò¦b¦ì§}¡C¦ý³o¨â¦æ¥u¬O«Å§i¡AÅý²ÕĶ¾¹ª¾¹D video °Ï¬q¦b B800H ³B¡AÁÙn¦b²Ä 19¡ã20 ¦æ¥Î CPU «ü¥O¡A¤~¯àÅý ES ³]¬° 0B800H¡C
·íµM¡A²Õ¦X»y¨¥¬O«Ü¦Û¥Ñªº¡A§A¤]¥i¥H§â²Ä 12¡ã13 ¦æ§R±¼¡AµM«á§â²Ä 19 ¦æ§ï¦¨¡umov ax,0b800h¡v¤]¥i¥H¡C
¤@¯ë¦Ó¨¥¡ACPU ¦bŪ¨ú°O¾ÐÅ餺ªº¸ê®Æ®É¡A¥²¶·nª¾¹D°Ï¬q¦ì§}©M°¾²¾¦ì§}¡C¦b²Õ¦X»y¨¥ùØ¡A¦s¨ú°O¾ÐÅéÅܼƮɡA¬O¥H DS ¬°°Ï¬q¡A¦Ó°O¾ÐÅéÅܼƴN¬O°¾²¾¦ì§}¡F¦pªG¥H¼È¦s¾¹¬°°ò©³©Î¯Á¤Þ§@¬°¶¡±µ©w§}¡A¯à°÷¨Ï¥Îªº¼È¦s¾¹¥u¦³ BX¡BSI¡BDI¡BBP ¥|Ó¡ABX¡BSI¡BDI ¬O¥H DS ¬°°Ï¬q¡ABP ¬O¥H SS ¬°°Ï¬q¡C¨Ò¦p©³¤Uªº¨Ò¤l´N¬O¥Î¨ÓÅçÃҨϥμȦs¾¹¶¡±µ©w§}®É¡A¬O¦s¨úþ¤@ӰϬqªº¸ê®Æ¡G
Microsoft (R) Symbolic Debug Utility Version 4.00 Copyright (C) Microsoft Corp 1984, 1985. All rights reserved. Processor is [80286] -r [Enter] ¡÷¥ýÀˬdì¨Ó¼È¦s¾¹¤§È AX=0000 BX=0000 CX=0000 DX=0000 SP=DE2A BP=0000 SI=0000 DI=0000 DS=20C5 ES=20C5 SS=20C5 CS=20C5 IP=010F NV UP EI PL NZ NA PO NC 20C5:0100 0000 ADD [BX+SI],AL DS:0000=CD -a [Enter] 20C5:0100 mov si,1 [Enter] 20C5:0103 mov di,2 [Enter] 20C5:0106 mov al,[bx] [Enter] 20C5:0108 mov ah,[si] [Enter] 20C5:010A mov dl,[di] [Enter] 20C5:010C mov dh,[bp] [Enter] 20C5:010F [Enter] -r es f000 [Enter] ¡÷ì¥ýDS¡BES¡BSS§¡«ü¦V¬Û¦P°Ï¬q -r ss 30c5 [Enter] ²{¦b¨Ï¥¦Ì«ü¦V¤£¦P°Ï¬q -f ss:0 l40 32 [Enter] ¡÷¦b30C5°Ï¬qªºÈÀ³¸Ó§¡¬°¹s¡A¥H¨¾«Ý·|¬Ý¤£¥X¨ÓDH¦³¨S¦³§ïÅÜ¡A¬G«e40HӦ줸²Õ³£Åܬ°32H -d ds:0 l10 [Enter] 20C5:0000 CD 20 C0 9F 00 9A 2A DD-39 F2 8E 09 CA 17 2B 0A M @...*]9r..J.+. -d es:0 l10 [Enter] F000:0000 9A 0A 51 00 F0 9A A8 51-00 F0 9A AC 52 00 F0 CB ..Q.p.(Q.p.,R.pK -d ss:0 l10 [Enter] 30C5:0000 32 32 32 32 32 32 32 32-32 32 32 32 32 32 32 32 2222222222222222 -g 10f [Enter] AX=20CD BX=0000 CX=0000 DX=32C0 SP=DE2A BP=0000 SI=0001 DI=0002 DS=20C5 ES=F000 SS=30C5 CS=20C5 IP=010F NV UP EI PL NZ NA PO NC 20C5:010F 0000 ADD [BX+SI],AL DS:0001=20 -
«Ü©úÅã¥i¥HÀËÅç¡AAL ¤§È¬O CDH ( ¥Õ¦â¦r )¡A³o¬OŪ¤J DS:[BX] ªº¸ê®Æ ( µ{¦¡ 20C5:0106 ³B )¡A¦]¦¹¥H BX ¬°°ò©³Åª¨ú¸ê®Æ¬OŪ¨ú DS °Ï¬q¤§¸ê®Æ¡F¦P¼ËÀˬd AH ( ¬õ¦â¦r )¡A´Nª¾¹D³o¤]¬OŪ¨ú DS:[SI] ¤§¸ê®Æ¡F¤§«áªº´N¤£¦AÂØz¤F¡C
ÁÙ¦³¤T³Bȱo¤@´£¡G①¦pªG¬O¨Ï¥Î MOVSB¡BCMPSB¡BSTOSB µ¥«ü¥O®É¡A¦s¨úªº¬O ES:[DI] ³Bªº¸ê®Æ¡C②¨ä¹ê SP ¤]¯à·í«ü¼Ð¡A¦ý³q±`¬O·í°µ°ïÅ|§}¼Ð¡A¬G¦s¨úªº¬O SS °Ï¬q¡C③¦P¼Ëªº¡AIP ¤]¬O«ü¼Ð¡A¦ý³£¬O«ü¦Vµ{¦¡½X°õ¦æªº¦a¤è¡A¬G¥H CS ¬°°Ï¬q¡C
Á¿¤F³o»ò¦h¡A¨º¤°»ò¬O¡uâ¶V°Ï¬q¡v( segment override ) ©O¡H¨ä¹ê«Ü²³æ¡A§A¥i¥HÆ[¹î¨ì¡A°²¦pn¦s¨ú ES °Ï¬qªº¸ê®Æ¡A°£¤F¥Î MOVSB¡BCMPSB µ¥³B²z¦r¦êªº«ü¥O¥~¡A§ÚÌÁÙ¥i¥H¥Î¹³¡u§ïÅܿùõªºI´º¦â¡vªºµ{¦¡²Ä 30 ¦æªº¤è¦¡¡A
mov al,es:[di]
¦b°¾²¾¦ì§}«e¥[¤W¡u°Ï¬q¼È¦s¾¹:¡vªº¤è¦¡¡A±j¢ CPU ¦s¨ú¸Ó°Ï¬q¼È¦s¾¹©Ò«ü°Ï¬qªº¸ê®Æ¡A³o¼Ë¦s¨ú¸ê®Æªº¤è¦¡´NºÙ¬°¡uâ¶V°Ï¬q¡v¡C´«¥y¸Ü»¡¡Aâ¶V°Ï¬q¯à¥´¯}¤º©w¦s¨úªº°Ï¬q¡C
LODSB «ü¥O¬O§â ES:DI ©Ò«ü¦ì§}ªº¸ê®Æ¸ü¤J¨ì AL ùØ¡A¦P®É¨Ï DI ¼W©Î´î¤@¡Cn¼W¤@ÁÙ¬O´î¤@¡A¤]¬O¬Ý¤è¦VºX¼Ð¨M©w¡AY¤è¦VºX¼Ð¬°¹s¡A´N¼W¤@¡F¤Ï¤§«h´î¤@¡CLODSB «ü¥O«Ü¤Ö©M REP ·f°t¨Ï¥Î¡Aì¦]´N¤£¥²»¡¤F¡C
·íµM¤]¦³¤@¦¸¸ü¤J ES:DI ©Ò«ü¦ì§}¤@Ó¦r²Õ¡B¤@ÓÂù¦r²Õ¡B¤@Ó¥|¦r²Õªº¸ê®Æ¡A¤À§O¨ì AX¡BEAX¡BRAX ùØ¡A¤]·|Åý DI ¦Û°Ê«ü¦V¤U¤@Ó¦ì§}¡C³oºØ±¡§Î©M STOSW µ¥«ü¥O³£¤@¼Ë¡C¤p¤ì°¸·Q¡A¤£¥²¦AÅoö¤F§a¡C
BIOS ªA°Èµ{¦¡¬O¥Ñ¥D¾÷ªO¤Wªº BIOS ´£¨Ñªº¡A¨Ã«D DOS §@·~¨t²Î´£¨Ñªº¡A¥¦¬O¿N¿ý¦b¤@Ó°ßŪ°O¾ÐÅ餺¡A§Y¨ÏÃö¾÷¤]¤£·|®ø¥¢¤£¨£¡C¦ý¬O BIOS ªA°Èµ{¦¡´N¹³¬O DOS ªA°Èµ{¦¡¤@¼Ë ( INT 20H »P INT 21H )¡A¥i¥H´£¨Ñµ{¦¡©I¥s¨Ï¥Î¡A§¹¦¨³\¦h¤u§@¡C¨Ò¦p¡AINT 16H ¥DnªºªA°È¹ï¶H¬OÁä½L¡AINT 13H ¬OºÏºÐ¾÷¡AINT 14H ¬O³q°T°ð ( ´N¬O COM1¡BCOM2 µ¥µ¥©Î¬O RS-232 )¡AINT 10H ¬OÅã¥Ü¥d¡AINT 17H ¬O¦Lªí¾÷¡C³q±` BIOS ´£¨ÑªºªA°È¬O¸û§C¶¥ªºªA°È¡C
³oùØ¡A¤p¤ì°¸¶È¶ÈÁ¿¤@Á¿ AH¡×00/INT 16H ªºÁä½L¿é¤JªA°Èµ{¦¡¡C¥¦ªº¨Ï¥Î¤è¦¡¦p¤U¡G
¨ú±oÁä½L¤W«ö¤UªºÁä ¿é¤J¡GAH¡×00 °õ¦æ¡GINT 16H ¿é¥X¡GAH¡×±½´y½X ( scan code ) ¡@¡@¡@AL¡×ASCII½X µù¡G°õ¦æ INT 16H/AH=0 «á¡A·|°±¤U¨Óµ¥¨Ï¥ÎªÌ«ö¤U¤@ÓÁä¡Aµ¥¨Ï¥ÎªÌ«ö¤U«á¡A¤£·|¦b¿Ã¹õ¤WÅã¥Ü«ö¤UÁ䪺¤å¦r¡C
¨C·í¨Ï¥ÎªÌ«ö¤UÁä½L¤Wªº¥ô¦ó¤@ÓÁä®É¡AÁä½Lªº¹q¸ô·|°e¹q¤l°T¸¹µ¹¥D¾÷ªO¡A¥D¾÷ªO·|¸ÑŪ¦¨¨âӼƦr¡C¨ä¤¤¤@ÓºÙ¬°¡u±½´y½X¡v¡A¨C¤@ÓÁ䪺±½´y½X³£¤£¦P¡Aµ{¦¡¥i¥H¥Ñ±½´y½X§PÂ_¨º¤@ÓÁä³Q«ö¤U¡C¥t¤@ӼƦr¬O«öÁä©Ò¥Nªíªº ASCII ½X¡A¦³¨Ç«öÁä¨Ò¦p F1¡BF2 ¨Ã¨S¦³ ASCII ½X¡C
¬°¦ó¤@ÓÁä°£¤F ASCII ½X¥~¡AÁÙn¦³±½´y½X©O¡H³o¬O¦]¬°¦³¨Ç¤å¦r¥i¥H¥Î¨âºØ¤è¦¡«ö¥X¨Ó¡A¨Ò¦pªü©Ô§B¼Æ¦rªº¡u1¡v¡A§A¥i¥H¨Ï¡uNum Lock¡v¿O«G°_¦A«öÁä½L¥kÃ䪺¡u1¡vÁä¡A³oÓÁäÁÙ¥Nªí¡uEnd¡v¡F©ÎªÌª½±µ«öÁä½L¥ª¤W¤èªº¡u1¡vÁä¡A³oÓÁä¤]¥i¥H«ö¥X¡u!¡v¡C³o¨âÓ«öÁ䪺±½´y½X¤£¦P¡Aµ{¦¡´N¥i¥H½T¹êª¾¹D¨Ï¥ÎªÌ¨ì©³«ö¤Uþ¤@ÓÁä¡C
©³¤U¬OÁä½Lªº¹Ï¤ù¡A¨C¤@Á䩳¤Uªº¬õ¦â¦r´N¬O±½´y½X ( ¥H¤Q¤»¶i¦ìªí¥Ü )¡G