Ch 03¡@±`¥Îªº DOS ªA°Èµ{¦¡

¤p¤ì°¸±N¦b³o¤@³¹ùؽͽͧó¦h±`¥Îªº DOS ªA°Èµ{¦¡¡C


¦b¿Ã¹õ¤W¦L¥X¦r¦ê


¦b¿Ã¹õ¤W¦L¥X¦r¦ê¡GAH¡×09H/INT 21

²Ä¤@­Ó­n½Íªº¬O¡A¦b¿Ã¹õ¤W¦L¥X¤@­Ó¦r¦ê¡C©Ò¿×ªº¦r¦ê¡A¥i¥H§â¥¦·í¦¨¬O¤@­Ó¥y¤l¡A¥¦¬O¥Ñ³\¦h¦r¤¸²Õ¦X°_¨Óªº¡AÀx¦s¦b°O¾ÐÅ骺³sÄòªÅ¶¡ùØ¡C¨Ò¦p©³¤U·|¥Î¨ìªº ¡uI love assembly language.¡v´N¥i¥H·í¦¨¬O¦r¦ê¡A¤@­Ó¦r¦ê¥i¯à¦û¥Î«Ü¦h­Ó¦ì¤¸²Õ¡A¦Ó¤@­Ó­^¤å¦r¦û¥Î¤@­Ó¦ì¤¸²Õ¡A¦]¦¹«e­zªº¦r¦ê¦û¥Î¤F 25 ­Ó¦ì¤¸²Õ¡CÁöµM¦r¦ê¦û¥Î³\¦h¦ì¤¸²Õ¡A¦r¦êªº¦ì§}¨ä¹ê«üªº´N¬O¦r¦ê©Ò¦bªº³Ì§C¦ì§}¡C

©³¤U¬O¦b¿Ã¹õ¤W¦L¥X¦r¦êªº¥\¯à¡G

¦b¿Ã¹õ¤W¦L¥X¦r¦ê
¿é¤J¡GAH¡×09H
¡@¡@¡@DS:DX¡×­n¦L¥Xªº¦r¦ê°_©l¦ì§}
°õ¦æ¡GINT 21H
µù¡G¦r¦ê¥²¶·¥H¡u$¡vµ²§À¡C

ª`·N¨ì¡A­n¦L¥X¨Óªº¦r¦ê¡A¥²¶·©ñ¦b DS:DX ¦ì§}¤W¡ADS ¬O°Ï¬q¦ì§}¡ADX ¬O¦¹°Ï¬qªº°¾²¾¦ì§}¡A¦¹¦r¦ê¥²¶·¥H¡u$¡vµ²§À¡A¡u$¡v¤£·|¦L¥X¨Ó¡C

©³¤Uªº PRINTSTR.COM µ{¦¡·|Åý¿Ã¹õÅã¥Ü¡uI love assembly language.¡v¦r¦ê¡C³o¦r¦ê¬O¸ê®Æ¡A¨Ã¤£¬Oµ{¦¡½X¡A¤£¬O­nÅý CPU °õ¦æªº¡C¦Ó DEBUG °õ¦æµ{¦¡®É¡A¬O±q°¾²¾¦ì§}¡A0100¡A³B¶}©l°õ¦æ¡A¤@­Ó«ü¥O°õ¦æ§¹¡A¦A°õ¦æ¤U¤@­Ó«ü¥O¡C©Ò¥H¤p¤ì°¸°²³]¡uI love assembly language.¡v¦r¦ê¡A±µ¦bµ{¦¡½X«á­±¡C¥ý¶i¤J DEBUG¡A¦A¿é¤J©³¤Uªºµ{¦¡¡G

C:\>debug [Enter]
-a [Enter]
1092:0100 mov ah,9 [Enter]
1092:0102 mov dx,0 [Enter] ¡÷¦]¬°¤£ª¾¹D¦r¦ê¦ì§}¡A©Ò¥H¥ýÀH·N°²³]¦r¦ê¦ì§}¬° 0000
1092:0105 int 21 [Enter]
1092:0107 int 20 [Enter]
1092:0109 db "I love assembly language.$" [Enter] ¡÷²{¤wª¾¦r¦ê¦ì§}¬° 1092:0109¡AÁöµM¥¦¾î¸ó¤F¦ì§} 1092:0109 ¨ì 1092:0122
1092:0123 [Enter]
-a 102 [Enter]
1092:0102 mov dx,109 [Enter] ¡÷§â DX ³]¬°¥¿½Tªº¦ì§}
1092:0105 [Enter]
-r cx [Enter]
CX 0000
:23 [Enter]
-r bx [Enter]
BX 0000
:[Enter]
-ne:\dos\printstr.com [Enter]
-w [Enter]
Writing 00023 Bytes
-g [Enter]
I love assembly language.
Program terminated normally
-

¬Ý¨ì¤W­±ªº¨Ò¤l¡A·í¿é¤J¨ì¦ì§}¡u1092:0102¡vªºµ{¦¡®É¡A¥uª¾¹D¦r¦ê¦ìµ{¦¡½X«á­±¡A¦ý¤£ª¾½T¹ê¦ì§}¡A©Ò¥H¥ýÀH«K°²³]¤@­Ó¦ì§}¡Cµ¥¨ìµ{¦¡¿é¤J§¹¡A³Ì«á­±¤~ª¾¹D¦r¦ê­n©ñ¦b¡u1092:0109¡v³B¡C©Ò¥H¡A³Ì«á­±ÁÙ­n¦A­×§ï­ì¨Óªºµ{¦¡½X¡A§â¡umov dx,0¡v¡A§ï¦¨¡umov dx,109¡v¡C³o¬O¨Ï¥Î DEBUG ¼¶¼g²Õ¦X»y¨¥¤£¤è«Kªº¦a¤è¡C


DB¡BDW °²«ü¥O

¤W­±ªº¨Ò¤l¤¤¡A¦b¦ì§}¡u1092:0109¡v¿é¤Jªº¡uDB¡v«ü¥Oªº§@¥Î¡A¨Ã¤£¬OÅý CPU °õ¦æ¬Y­Ó°Ê§@¡A¦Ó¬OÅý DEBUG ªÅ¥X¬Y¤@¶ô°O¾ÐÅé¡A§@¬°¶ñ¤J¤@¨Ç¦r¤¸©Î¼Æ¦r¡C¹³³o¼Ë¤£¬O«ü¨Ï CPU ¤u§@¡A¦Ó¬O«ü¨Ï²ÕĶ¾¹¤u§@ªº«ü¥O¡AºÙ¬°°²«ü¥O ( pseudo instruction )¡C¡uDB¡v¬O¡udefine byte¡vªº·N«ä¡A¥¦¬O¤@­Ó°²«ü¥O¡A¨ä»yªk¬O¡G

DB      ¦r¦ê
DB      ¼Æ­È¡i,¼Æ­È,¼Æ­È¡K¡K¡j

°²¦p DB «á­±±µµÛªº¬O¦r¦ê¡A¨º»ò¥²¶·¥H¤@¹ï¡u"¡v©Î¡u'¡v¬A°_¨Ó¡F°²¦p¬O¼Æ­Èªº¸Ü¡A¥²¶·¦b 0 ¨ì 255 ªº½d³ò¤º¡A¦]¬°¤@­Ó¦ì¤¸²Õ¥u¯àÀx¦s 0¡ã255 ªº½d³ò¡C¨Ò¦p¡G

DB      "Good morning!"
DB      100,200

¦pªG¥Î DB ©w¸q¤@­Ó¼Æ­Èªº¸Ü¡A¥i¥H§â³o­Ó¦ì§}ªº¼Æ­È·í¦¨¬O¤@­ÓÅܼơA¥¦¯à°÷¨Ìµ{¦¡»Ý¨D§ïÅܨä­È¡A¬GºÙ¬°°O¾ÐÅéÅܼơA¥i¥H¦bµ{¦¡¤¤Àx¦s¸ê®Æ¥Î¡A¥H«á¦AºCºC´£¨ì¡C¦]¬° DB ¥u¯à©w¸q¤@­Ó¦ì¤¸²Õªºªø«×¡A©Ò¥H³o­ÓÅܼƥu¯à¦b 0¡ã255 ªº½d³ò¤º¡C

¥t¦³¤@­Ó°²«ü¥O¡ADW¡A¥i¥H©w¸q¤@­Ó¦r²Õ ( define word ) ªº¤j¤p¡A¨ä¼Æ­È´N¯à¦b 0¡ã65535 ªº½d³ò¡A¯àÀ³¥Îªº½d³ò´N¤j±o¦h¤F¡C¦¹¥~¡A¦b MASM 6.x ª©ùØ¡ADB ©M BYTE ¬O¤@¼Ëªº·N«ä¡ADW ©M WORD ¬O¤@¼Ëªº·N«ä¡C


§ïÅÜ DS:DX ¦ì§}¡A¹êÅç¬Ý¬Ý

©³¤U¨Ó°µ­Ó¹êÅç¡A§â DX ¤§­È§ï¦¨ 100 ¸Õ¸Õ¬Ý¡G

-a 102 [Enter]
1092:0102 mov dx,100 [Enter]
1092:0105 [Enter]
-d 100 l30 [Enter]
1092:0100  B4 09 BA 00 01 CD 21 CD-20 49 20 6C 6F 76 65 20   ......!. I love 
1092:0110  61 73 73 65 6D 62 6C 79-20 6C 61 6E 67 75 61 67   assembly languag
1092:0120  65 2E 24 D3 E0 03 F0 8E-DA 8B C7 16 C2 B6 01 16   e.$.............
-g [Enter]
┤       ║ ☺ùù!ùù I love assembly language.
Program terminated normally
-

±q¤W­±ªº¹êÅçùØ¡A¥i¥H¬Ý¨ì¡A«e­±¦L¥X¨Óªº¦r¤¸¡A¨ä¹ê´N¬Oµ{¦¡½X¡uB4 09 BA 00 01 CD 21 CD 20¡v©Ò¥Nªíªº ASCII ¦r¤¸¡C¤]´N¬O»¡¡AAH¡×9/INT 21 ªA°Èµ{¦¡©Ò¦L¥Xªº¦r¦ê¡A¬O¥Ñ DS:DX ©Ò«üªº¦ì§}¶}©l¦L¥X¨Ó¡A¦Ó¤£ºÞ¦r¦ê¦³¨S¦³·N¸q¡A¦L¨ì¡u$¡v«eªº¦r¤¸µ²§ô¬°¤î¡C¦pªG DS:DX ¦ì§}³]©w¿ù»~¡A³o­ÓªA°Èµ{¦¡ÁÙ¬O¯à¦L¥X¤@¤j°ïµL·N¸qªº¦r¦ê¡C

©³¤U¦A¨Ó°µ²Ä¤G­Ó¹êÅç¡A¦pªG§â DS:DX ³]¬° 1092:fff0¡A¦Ó¥B±q³o­Ó¦ì§}¨ì 1092:ffff ³£¨S¦³¡u$¡v¦r¤¸¡A¨º»ò°õ¦æ«á¡A·|µo¥Í¤°»ò¨Æ©O¡HŪªÌ¥i¥H¦Û¦æ¸Õ¸Õ¬Ý¡AÁÙÆZ¦³½ìªº¡C


¥ÎÁä½L¿é¤J¦r¤¸¡GAH¡×01/INT 21H


¥ÎÁä½L¿é¤J¦r¤¸¡GAH¡×01/INT 21H

¤p¤ì°¸¤w¸g¤¶²Ð¤F¨â­Ó DOS ªA°Èµ{¦¡¡G¦L¥X¦r¤¸»P¦L¥X¦r¦ê¡A²{¦b¨Ó¤¶²Ð±qÁä½L¤W¿é¤J¦r¤¸ªºªA°Èµ{¦¡¡C­n¦bÁä½L¤W¿é¤J¤@­Ó¦r¤¸¡A¥i¥H¥Î AH¡×1/INT 21H ªA°Èµ{¦¡¡C°õ¦æ«á¡A¹q¸£·|µ¥«Ý¨Ï¥ÎªÌ¿é¤J¤@­ÓÁä¡Aª½¨ì¨Ï¥ÎªÌ«ö¤U¥ô·N¤@­ÓÁä«á¡A¦A«á§â¦r¤¸ªº ASCII ½X¦s¤J AL ¼È¦s¾¹ùØ¡AµM«á°õ¦æ¤U¤@¹D«ü¥O¡C

¥ÎÁä½L¿é¤J¦r¤¸
¿é¤J¡GAH¡×01H
°õ¦æ¡GINT 21H
ªð¦^¡GAL¡×¨Ï¥ÎªÌ«ö¤UªºÁä©Ò¥Nªíªº ASCII ½X

¨Ó¬Ý¬Ý©³¤Uªº¨Ò¤l¡G

C:\>debug [Enter]
-a [Enter]
1092:0100 mov ah,1 [Enter]
1092:0102 int 21 [Enter]
1092:0104 int 20 [Enter]
1092:0106 [Enter]
-g 104 [Enter] ¡÷¹q¸£·|¼È°±¨S¦³¤ÏÀ³
5 [Enter] ¡÷«öÁä½L¤W¥ô·N¤@­ÓÁä¡A¹q¸£¤~·|°õ¦æ¤U¤@¹D«ü¥O¡A³oùؤp¤ì°¸«ö¤U¡u5¡v³o­ÓÁä
AX=0135  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 ¡÷AL¡×35¡A35 ¬O¦r¤¸ 5 ªº ASCII ½X
DS=1092  ES=1092  SS=1092  CS=1092  IP=0104   NV UP EI PL NZ NA OS NC
-

°õ¦æ AH¡×01/INT 21 ¤@¦¸¡A¥u¯à¿é¤J¤@­Ó¦r¤¸¡A¨C­Ó¦r¤¸¦û¥Î¤@­Ó¦ì¤¸²Õ¡A¦pªG­n¿é¤J¤@­Ó¦r¦ê¡A¨º»ò´N¥²¶·§Q¥Î°j°é¡A¦P®É§â¦s©ó AL ¤º¿é¤Jªº¦r¤¸«O¦s¦b°O¾ÐÅ餺¡C¤U­±ªº KEYIN.COM ¥i¥HÅý¨Ï¥ÎªÌ¿é¤J¤@­Ó¦r¦ê¡AµM«á§â¥¦Àx¦s¦b°O¾ÐÅ餺¡C©³¤U¬O KEYIN.COM ªº¤º®e¡G

C:\>debug [Enter]
-a [Enter]
1092:0100 mov bx,0 [Enter] ¡÷¼È®É¤£ª¾¹D½T¤Á¦ì§}¡A¥ý¥Î 0 ¥N´À
1092:0103 mov ah,1 [Enter]
1092:0105 int 21 [Enter]
1092:0107 mov [bx],al [Enter] ¡÷§â¨Ï¥ÎªÌ¿é¤Jªº¦r¤¸¡A¦s¤J°O¾ÐÅ餺
1092:0109 inc bx [Enter]
1092:010A cmp al,d [Enter]
1092:010C jne 103 [Enter]
1092:010E int 20 [Enter]
1092:0110 [Enter] ¡÷¤w¸gª¾¹D¡A¦ì§} 0110 ³B¤w¸g¤£¬Oµ{¦¡¤º®e¤F¡A©Ò¥H¦¹¦ì§}¥i¥H¦s©ñ¨Ï¥ÎªÌ¿é¤Jªº¦r¤¸
-a 100 [Enter]
1092:0100 mov bx,110 [Enter] ¡÷­×¥¿ BX ¤§ªì©l­È
1092:0103 [Enter]
-r cx [Enter]
CX 0000
:10 [Enter]
-r bx [Enter]
BX 0000
:[Enter]
-ne:\dos\keyin.com [Enter]
-w [Enter]
Writing 00010 Bytes
-g [Enter] ¡÷¥ý°õ¦æ¬Ý¬Ý
Good morning! [Enter] ¡÷¿é¤J¡uGood morning!¡v«á«ö¤U Enter Áä¡Aªí¥Ü¿é¤J§¹¦¨
Program terminated normally
-d 100 l20 [Enter]
1096:0100  BB 10 01 B4 01 CD 21 88-07 43 3C 0D 75 F5 CD 20   ......!..C<.u..
1096:0110  47 6F 6F 64 20 6D 6F 72-6E 69 6E 67 21 0D 85 10   Good morning!...
-¡÷¦ì§} 0110 ³B¡A«O¦s¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê

¥E¬Ý³o­Óµ{¦¡¡A¦ü¥GÆZªøªº¡A¥J²Ó¤@¬Ý¡A¤j³¡¤Àªºµ²ºc³£¦b«e­±¾Ç²ß¹L¡C¥u¦³¦ì§} 0107 ªº¡©MOV [BX],AL¡ª¡B¦ì§} 010A ªº¡©CMP AL,D¡ª¡B¦ì§} 010C ªº¡©JNE 0103¡ª¡A¬O·s¨£¨ì«ü¥O¡A¨Ã¤£¤Ó¦h¡A©Ò¥H¤]¤£»Ý­n¤Ó¾á¤ß¡C


ª½±µ©w§}»P¶¡±µ©w§}

¤W­zµ{¦¡­n¦b°O¾ÐÅ餤«O¦s¨Ï¥ÎªÌ¿é¤Jªº ASCII ¦r¤¸¡A¨º»ò¡A­n«O¦s¦b°O¾ÐÅé­þ©O¡HÁÙ¬O¸ò«e­±¤@¼Ë¡A¦bµ{¦¡½Xªº«á­±§a¡I¤@¶}©l¡A¨Ã¤£ª¾¹Dµ{¦¡½X¦b­þ¨àµ²§ô¡A©Ò¥H¥ý°²³]¬° 0¡A³o´N¬O¦b¦ì§}¡u0100¡vªºµ{¦¡½X¬°¦ó³o¼Ë¼gªº­ì¦]¤F¡Cµ¥µ{¦¡½X¿é¤J§¹¡A¤~ª¾¹Dµ{¦¡½X¦b¡u0110¡v³Bµ²§ô¡A©Ò¥H«á­±ÁÙ­n¦A¦¸­×¥¿ BX ªºªì©l­È ( ªì©l­È´N¬O¤@¶}©lªº¼Æ­È¡ABX ªº¼Æ­È·|ÀHµ{¦¡°õ¦æ¦ÓÅÜ°Ê )¡C

²{¦b·Q¹³¡Aµ{¦¡¤w°õ¦æ¨ì¦ì§}¡u0107¡v³B¡A³o®É¨Ï¥ÎªÌ¤w¸g¿é¤J¤@­Ó¦r¤¸¤F¡A¸Ó¦r¤¸ªº ASCII ½X¤w¸g¦b AL ¼È¦s¾¹ùØ­±¤F¡A³o¤@¦æ´N¬O­n§â AL ¤ºªº¸ê®Æ¦s¤J©Î»¡²¾¨ì°O¾ÐÅé¦ì§}¡u0110¡v³B¡C­n§â¸ê®Æ²¾¨ì°O¾ÐÅ餺¡A¥i¥H¥Î¡uMOV¡v«ü¥O¡A¦Ó°O¾ÐÅé¦ì§}«h¬O 0110¡C¦ý¬O¼g¦¨

        MOV     0110,AL

¤£¬O«Ü©_©Ç¶Ü¡HMOV «ü¥O·|§â³Ì¥kÃ䪺¹Bºâ¤¸¤§­È¶ñ¤J¨ì¥ªÃ䪺¹Bºâ¤¸¡A¦ý¬O 0110 ¬°¤@­Ó±`¼Æ¡A¬O¤£¯à§ïÅܪº¡C¦b²Õ¦X»y¨¥¤¤¡A¥H¤@¹ï¤¤¬A¸¹¬A°_¨Óªº¼Æ­È¡A¦¹¼Æ­Èªí¬O°O¾ÐÅé¦ì§}¡F¦Ó¾ã­Ó¦¡¤l ( ´N¬O¡u[¦ì§}]¡v) ¥Nªí¦¹°O¾ÐÅé¦ì§}ªº¤º®e¡A³o­Ó¤º®e¬O¥i¥H§ó§ï¡C©Ò¥Hµ{¦¡½XÀ³¸Ó³o¼Ë¼g¡G

        MOV     [0110],AL

¤W­±ªº¦¡¤l¡A0110 ¥Nªí¦ì§}¡A¦Ó [0110] ¥Nªí¦ì§} 0110 ªº¤º®e¡C¦b³o­Ó¨Ò¤lùØ¡A0110 ¬O±`¼Æ¡A¤£¯à§ïÅÜ¡F¦Ó [0110] ¬O°O¾ÐÅé¦ì§} 0110 ùØ­±ªº¤º®e¡A¥i¥H§ïÅÜ¡C¹³³o¼Ë°O¾ÐÅé¦ì§}¦pªG¬O¤@­Ó±`¼Æ¡A¨º»òª½±µ´Nª¾¹D°O¾ÐÅé¦ì§}¦b­þùØ¡A³oºØ¨M©w°O¾ÐÅé¦ì§}ªº¤è¦¡ºÙ¬°¡uª½±µ©w§}¡v¡C¥i¥H¼g¦¨¤U­±ªº¼Ë¤l¡G

        MOV     [±`¼Æ],AL       ;ª½±µ©w§}

¥t¥~¡A[±`¼Æ] ¤ºªº¼Æ­È¥i¥HÅܧó¡A¦]¦¹¥i¥H§â [±`¼Æ] ·í¦¨¬OÅܼơA³o¼ËªºÅܼƺ٬°°O¾ÐÅéÅܼơC( ±q¬Y­ÓÆ[ÂI¨Ó¬Ý¡A¼È¦s¾¹¤]¥i¥H·í¦¨ÅܼơAºÙ¬°¼È¦s¾¹ÅܼơC)

¦A¦^¨ì keyin.com µ{¦¡¡A¦]¬°¥¦¨Ã¤£¬O¥u¿é¤J¤@­Ó¦r¤¸¡A©Ò¥H¤U¤@¦¸¿é¤J¦r¤¸«á¡AÁÙ¬O·|²¾¨ì¦P¤@¦ì§}¡A´N·|Åý­ì¥ý¿é¤Jªº¸ê®Æ®ø¥¢¤£¨£¡C­n¸Ñ¨M³o­Ó°ÝÃD¡A±o¥Î¶¡±µ©w§}¡C¶¡±µ©w§}¬O¥Î¤@­ÓÅܼƥNªí¦ì§}¡A¦b DOS ²Õ¦X»y¨¥ùØ¡A³o­ÓÅܼƥu¯à¬O BX¡BBP¡BSI¡BDI ³o¥|­Ó¼È¦s¾¹¡A¤£¯à¥Î¨ä¥LÅܼƩμȦs¾¹¡C©Ò¥H´NÅܦ¨¡G

        MOV     [¼È¦s¾¹],AL     ;¶¡±µ©w§}

¦b keyin.com µ{¦¡ùؼȦs¾¹±Ä¥Î BX¡C³o¼Ëªº¸Ü¡A¥u­n¦b§â¤U¤@µ§¨Ï¥ÎªÌ¿é¤Jªº«öÁä¦s¤J°O¾ÐÅ餧«e¡A¨Ï BX ¼W¥[¤@¡A´N¯à§â¦ì§}§ïÅܦ¨¤U¤@­Ó¤F¡A¤]¯à«O¦s­ì¥ýªº¸ê®Æ¡C

¤§©Ò¥H¥s¶¡±µ©w§}¬O¦]¬°¡A¦b§â¦s¨ú¸ê®Æ®É¡A¥²¶·¥ý¨ì¼È¦s¾¹ùØ¥h¬d¸ß¨ä¤ºªº¼Æ­È¬O¦h¤Ö¡A¦¹¼Æ­È¥Nªí¦ì§}¡A¤~§ä¨ì¯u¥¿­n¦s¨úªº°O¾ÐÅé¦ì§}¡A¬G¤ê¡u¶¡±µ©w§}¡v¡C³oºØ¨M©w°O¾ÐÅé¦ì§}ªº¤è¦¡¡A¬O²Õ¦X»y¨¥¤¤«Ü±`¨£ªº¤èªk¡A½Ð°Ñ¦Ò¥k¹Ïªº»¡©ú¡C


¤ñ¸û«ü¥O¡B´îªk«ü¥O¥H¤Î¹s­ÈºX¼Ð

¦b x86 «ü¥OùØ¡A¤]¦³¥|«h¹Bºâªº«ü¥O¡A¦¹³B¥ý¨Ó½Í½Í´îªk«ü¥O¡C´îªk«ü¥O¦³¤À¾ã¼Æªº´îªk»P¯BÂI¼Æªº´îªk¡A¾ã¼Æªº´îªk«ü¥O¤S¤À­É¦ì»P¤£­É¦ì¡A¤À§O¬O SBB »P SUB¡C¦b¦¹³B¤p¤ì°¸¶È½Í¤£­É¦ìªº¾ã¼Æ´îªk¡A´«¥y¸Ü»¡¡A¥u½Í SUB ( subtract ) «ü¥O¡C

SUB ( subtract ) «ü¥Oªº»yªk¬O

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

SUB ·|§â¥Øªº¹Bºâ¤¸ ( destination operand ) ùØ­±ªº¼Æ­È´î¥h¨Ó·½¹Bºâ¤¸ ( source operand ) ùØ­±ªº¼Æ­È¥H«á¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¦]¦¹°õ¦æ§¹«á¡A¥Øªº¹Bºâ¤¸¤§­È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§­È¤£ÅÜ¡C¨Ò¦p¤U­±µ{¦¡¡G

        MOV     AX,9
        MOV     BX,8
        SUB     AX,BX

°õ¦æ§¹«á¡AAX ¬°¤@¡ABX ¬°¤K¡C°£¤F¤Q¤»¦ì¤¸¼È¦s¾¹¥i§@¬°¹Bºâ¤¸¥~¡A¤K¦ì¤¸ªº¼È¦s¾¹¡B¤K¦ì¤¸©Î¤Q¤»¦ì¤¸ªº°O¾ÐÅéÅܼƤ]³£¥i¥H§@¬°¹Bºâ¤¸¡A¦ý¬O¨Ó·½¹Bºâ¤¸»P¥Øªº¹Bºâ¤¸ªº¼e«×­n¤@­P¡C¨Ò¦p¡G

        SUB     [110],AX
        SUB     [110],AL
        SUB     DL,[120]
        SUB     CX,100

³£¬O¦Xªkªº«ü¥O¡C¨Ó·½¹Bºâ¤¸¤]¥i¥H¨Ï¥Î±`¼Æ¡A¹³¤W­±ªº²Ä¥|­Ó¨Ò¤l¡A¦ý¬O´N¤£¯à·í§@¥Øªº¹Bºâ¤¸¡A³o¤]¬O«Ü¦X²zªº¡C

SUB °£¤F¯à­pºâ¥Xµ²ªG¥~¡AÁÙ·|§â­pºâ«áªº¬Y¨Çª¬ºA°O¿ý°_¨Ó¡A³o¨Ç°O¿ý°_¨Óªºª¬ºA¥]§t①¬O§_·¸¦ì¡B②µ²ªG¬O§_¬°­t¡B③µ²ªG¬O§_¬°¹s¡B④¬O§_»²§U­É¦ì¡B⑤¬O§_¦P¦ì¡B⑥¬O§_­É¦ì¡A¦@¤»ºØ¡C³o¤»ºØª¬ºA³£·|¦b SUB ¹Bºâ§¹«á¡A°O¿ý¦b CPU ùتººX¼Ð¼È¦s¾¹¡C³o¨Çª¬ºA¬Ý°_¨Ó«Ü½ÆÂø¡A¦]¦¹¤p¤ì°¸¥u¤¶²Ðµ²ªG¬O§_¬°¹s¡A³o¤]¬O¥»³¹­n¥Î¨ìªº¡C

ºX¼Ð¼È¦s¾¹¬O¤Q¤»¦ì¤¸ªº¼È¦s¾¹¡A²Ä¤»­Ó¦ì¤¸´N¬O¹s­ÈºX¼Ð ( zero flag¡A²ºÙ ZF )¡C·í¹Bºâµ²ªG¬°¹s¡ACPU ·|§â¹s­ÈºX¼Ð³]¬°¤@¡A¤Ï¤§³]¬°¹s¡C

²{¦b¥Î DEBUG ¨ÓÀËÅç¹s­ÈºX¼Ð¡C¥ý¿é¤J©³¤Uµ{¦¡¡G

C:\>debug [Enter]
-a [Enter]
1092:0100 mov ax,900 [Enter]
1092:0103 sub ax,ax [Enter] ¡÷§â AX ´î±¼ AX¡Aµ²ªG¥²¬°¹s
1092:0105 [Enter]
-r [Enter] ¡÷°õ¦æ«e¡A¥ýÀˬd¦U¼È¦s¾¹
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=1092  ES=1092  SS=1092  CS=1092  IP=0100   NV UP EI PL NZ NA PO NC ¡÷NZ ¥Nªí¹s­ÈºX¼Ð²{¦b¬O¹s
1092:0100 B80009        MOV	AX,0900
-t [Enter]

AX=0900  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=1092  ES=1092  SS=1092  CS=1092  IP=0103   NV UP EI PL NZ NA PO NC 
1092:0103 29C0          SUB	AX,AX
-t [Enter]

AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000  
DS=1092  ES=1092  SS=1092  CS=1092  IP=0105   NV UP EI PL ZR NA PE NC  ¡÷SUB AX,AX ¹Bºâ§¹«á¡A
1092:0105 F3            REPZ	                                        ¹s­ÈºX¼Ð³]¬°¤@¡A¥Î ZR ªí¥Ü
1092:0106 AE            SCASB
-

¹s­ÈºX¼Ð¥u¦³¨âºØª¬ºA¡A0 ©Î 1¡A¦b DEBUG ùØ¡A¤À§O¥Î NZ ©M ZR ªí¥Ü¡C¥i¯à·|¦³¤H¥H¬°¤p¤ì°¸¼g¿ù¤F¡A0 ¤£¬O ZERO ¶Ü¡H«ç»ò¹s­ÈºX¼Ð¬° 0 ®É¡A¤Ï¦Ó¬O¥H NZ ( Non Zero ) ªí¥Ü¡CºX¼Ð¼È¦s¾¹¤§­È³£¬O¥HÅÞ¿è­Èªí¥Ü¡G1 ¥Nªí¯u¡A0 ¥Nªí°²¡C¹s­ÈºX¼Ð¥Nªí¡u¹Bºâµ²ªG¬°¹s¬O§_¬°¯u¡v¡A¦]¦¹¦pªG¹Bºâµ²ªG¬°¹s¡Aªí¥Ü«e­±¡u¡v¤ºªº±Ô­z¬°¯u¡A¦]¦¹¹s­ÈºX¼Ð³]¬° 1¡A¥ç¥i»¡¹s­ÈºX¼Ð³Q³]©w ( set )¡F¤Ï¤§¡A¹Bºâµ²ªG¤£¬°¹s¡Aªí¥Ü«e­z¡u¡v¤º±Ô­z¬°°²¡A¦]¦¹¹s­ÈºX¼Ð³]¬° 0¡A¹s­ÈºX¼Ð³Q²M°£ ( clear )¡C

¦b DEBUG ùØ¡Aªí¥Ü¹s­ÈºX¼Ð®É¡AÁÙ¬O¥H¹Bºâµ²ªGªí¥Ü¸û¬°¤è«K¡A¦]¦¹¹Bºâµ²ªG¬°¹s¡A¥Î ZR ªí¥Ü¡F¤£¬°¹s¡A¥Î NZ ªí¥Ü¡C©Ò¥H¬Ý°_¨Ó¦ü¥G¥Ù¬Þ¡A¨ä¹ê¤@ÂI¤]¤£·|¡C¤p¤ì°¸¾ã²z¦p¤Uªí¡G

¹Bºâµ²ªG¹s­ÈºX¼Ð³]©w©Î²M°£DEBUG ¤ºÅã¥Ü
¹s1³]©w ( set )ZR
¤£¬O¹s0²M°£ ( clear )NZ

Á¿§¹¤F SUB «ü¥O ( ¨ä¹êÁÙ¦³«Ü¦hºX¼Ð·|¨ü¨ì SUB ¼vÅTªº³¡¤À¡AÁÙ¨SÁ¿ )¡A©³¤U¨Ó»¡»¡ CMP «ü¥O¡CCMP «ü¥O¡ACMP ¬O¤ñ¸û«ü¥O¡A¤ñ¸û¨â­Ó¹Bºâ¤¸ªº«ü¥O¡A¨ä»yªk¬O¡G

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

¨Æ¹ê¤W¡ACPU ¦b°õ¦æ CMP «ü¥O®É¡A¨ä¹ê¬O°õ¦æ SUB «ü¥O¡A®t§O¥u¬O¦b©ó¡A³Ì«á CMP ¨S¦³§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡A¦Ó SUB «h§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C


±ø¥ó¸õÅD«ü¥O

¹q¸£µ{¦¡¯à¶i¦æ¤ñ¸û½ÆÂøªº¹Bºâ¡A¥i¥H§PÂ_¬Y¨Ç±ø¥ó¦¨¥ß®É¡A°õ¦æ¬Y¤@¬qµ{¦¡¡F¥t¤@±ø¥ó¦¨¥ß®É¡A°õ¦æ¥t¤@¬qµ{¦¡¡C¹³³o¼Ë¦b¤£¦P±ø¥ó¤U¡Aµ{¦¡¶i¦æ¤£¦Pªº¬yµ{¡AºÙ¬°±ø¥ó¸õÅD¡C¦b x86 «ü¥O¤¤¦³«Ü¦h±ø¥ó¸õÅD«ü¥O¡A¥»³¹¶È¤¶²Ð JNE »P JE ¨â­Ó«ü¡C

JE/JNE «ü¥Oªº»yªk¬O

JE      ¦ì§}
JNE     ¦ì§}

JE ªº·N«ä¬O¡A¦pªG¬Ûµ¥´N¸õÅD ( jump short if equal )¡A­n¸õ¨ìªº¥Øªº¦ì§}«h¬O JE «á­±±µµÛªº¦ì§}¡CJE «ü¥O©M JZ «ü¥O¬O¤@¼Ò¤@¼Ëªº¡C¨Ò¦p¤U­±µ{¦¡¡G

        MOV     CX,2
        CMP     CX,2
        JE      100
        INC     CX

JE ±`±`¦b CMP «ü¥O¤§«á°õ¦æ¡C¹³¤W­±ªºµ{¦¡¡A¥ý¤ñ¸û CX »P 2¡A¦pªG¬Û¦P¡A±±¨îÅv·|¸õ¨ì¦ì§} 100 ³B°õ¦æ¡A¦Ó¤£¬O°õ¦æ«á­±ªº¡uINC CX¡v«ü¥O¡C

JE ¨ä¹ê¬OÀˬd¹s­ÈºX¼Ð¡A¦pªG¹s­ÈºX¼Ð³Q³]©w¡A´N·|µo¥Í¸õÅD¡F¦pªG¹s­ÈºX¼Ð³Q²M°£¡A´N¤£·|¸õÅD¡A¦Ó¬O¨Ì·Ó¶¶§Ç°õ¦æ JE ªº¤U¤@¹D«ü¥O¡C

JNE «ü¥O»P JE «ê¦n¬Û¤Ï¡AJNE ¬O«ü¦pªG¤£¬Ûµ¥´N¸õÅD¡CJNE ©M JNZ ¬O¤@¼Ò¤@¼Ëªº¡CJNE ·|Àˬd¹s­ÈºX¼Ð¡A¦pªG²M°£¡A¤~µo¥Í¸õÅD¡C

¤£ºÞ JE/JZ ©Î JNE/JNZ ¥u¯à¦b¦P¤@°Ï¬q¡A©¹§C¦ì§}³Ì¦h¸õ 128 ­Ó¦ì¤¸²Õ©Î©¹°ª¦ì§}³Ì¦h¸õ 127 ­Ó¦ì¤¸²Õ¡A¤@¯ëµù°O¬° ¡Ð128 ©Î ¡Ï127¡C¹³³o¼Ëªº¸õÅDºÙ¬°¡uµuµ{¸õÅD¡v¡C


»¡©ú KEYIN.COM µ{¦¡

¦b»¡©ú¤F¡u¶¡±µ©w§}¡v¡B¡u¤ñ¸û«ü¥O¡v»P¡uJNE «ü¥O¡v«á¡A§Ú­Ì¦A¦^ÀY¬Ý¬Ý KEYIN.COM µ{¦¡¡A¥Î DEBUG ¸ü¤J KEYIN.COM¡A¦A¤Ï²ÕĶ¡G

C:\>debug e:\dos\keyin.com [Enter]
-u 100 10e [Enter]
10B4:0100 BB1001        MOV	BX,0110
10B4:0103 B401          MOV	AH,01
10B4:0105 CD21          INT	21
10B4:0107 8807          MOV	[BX],AL
10B4:0109 43            INC	BX
10B4:010A 3C0D          CMP	AL,0D
10B4:010C 75F5          JNZ	0103
10B4:010E CD20          INT	20

²Ä¤@¦æ§â BX ¤§­È³]¬° 110¡A³o¬O­Ó¦ì§}¡A¦¹¦ì§}±NÀx¦s¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê¡C±µ¤U¨Óªº¨â¦æ¬OÁä½L¿é¤J¦r¤¸ªº DOS ªA°Èµ{¦¡¡Aµ¥«Ý¨Ï¥ÎªÌ«öÁä¡C·í¨Ï¥ÎªÌ«ö¤U¥ô¦ó¤@Áä«á¡A¦¹«öÁä©Ò¥Nªí¦r¤¸ªº ASCII ½s¸¹·|Àx¦s¦b AL ùØ­±¡C¦pªG¨Ï¥ÎªÌ«ö¤U¯S®í«öÁä¡A¦³¨Ç¬O¨S¦³ ASCII ½s¸¹¡A¦³¨Ç«h¦³¡C¹³«ö¤U Enter Áä¡A¨ä ASCII ½s¸¹´N¬O D¡C

±µ¤U¨Óªºµ{¦¡¦b¦ì§} 0107 ³B¡A­n§â AL ¤§­È¦s¤J°O¾ÐÅ餤¡CµM«á¨Ï BX ­È¼W¤@¡A¦¹¥Øªº¦b©ó¨Ï BX ©Ò«ü¦V¤U¤@­Ó°O¾ÐÅé¦ì§}¡C±µ¤U¨Ó¬O¤ñ¸û AL ¤§­È¬O§_¬° D¡A¨Æ¹ê¤W¡A³o­Ó«ü¥O´N¬OÀˬd¨Ï¥ÎªÌ¬O§_«ö¤U Enter Áä¡C±µ¤U¨Óªº«ü¥O¬O JNZ¡A¦¹³B²£¥Í¨âºØ±¡§Î¡G①¦pªG AL ¤£¬° D¡A¨Ï¥ÎªÌ«ö¤Uªº¤£¬O Enter Áä¡A´N¸õ¨ì 0103 ³B¡F②§_«hÄ~Äò°õ¦æ¤U¤@¹D«ü¥O¡A§Y¡uINT 20¡v¡Aµ²§ôµ{¦¡¡A¨SÔ£¦n»¡ªº¡C

¦pªG¬O²Ä¤@ºØ±¡§Î¡A¤S·|¦^¨ì¦ì§} 0103 ³Bµ¥«Ý¨Ï¥ÎªÌ¥ÑÁä½L¿é¤J¦r¤¸¡A¦pªG¨Ï¥ÎªÌ«ö¤U¤@Áä¡A´N·|§â«öÁä¦r¤¸ªº ASCII ½s¸¹¦s¤J AL ùØ­±¡C¤U¤@«ü¥O¬O§â AL ¦s¤J BX ©Ò«üªº°O¾ÐÅ餺¡A­nª`·Nªº¬O BX ¤w¸g¤£¬O­ì¨Óªº­È¤F¡A¦Ó¬O¤ñ­ì¥ý­È¦h¤@¡A·N«ä´N¬O¡ABX «ü¦V¤U¤@­Ó°O¾ÐÅé¦ì§}¡A©Ò¥H¦s¤Jªº AL ¤£·|»\¹L¤W¤@¦¸¿é¤Jªº¦r¤¸¡C

³oºØ±¡§Î·|¤@ª½­«½Æ¡Aª½¨ì¨Ï¥ÎªÌ«ö¤U Enter Áä¡A¤~·|µ²§ôµ{¦¡¡C³o­Óµ{¦¡ªº¬yµ{¡A¥i¥H¥Î¥k¹Ï»¡©ú¡C


½w½Ä°Ï¦¡ªºÁä½L¿é¤J¦r¦ê


½w½Ä°Ï¦¡ªºÁä½L¿é¤J¦r¦ê¡GAH=0A/INT 21

¦b¥»³¹¡A¤p¤ì°¸­n¤¶²Ðªº²Ä¤T­Ó DOS ªA°Èµ{¦¡¬O½w½Ä°Ï¦¡ªºÁä½L¿é¤J¡A³o­Ó·N«ä¬O¦b°õ¦æ INT 21 «e¡A¨Æ¥ý·Ç³Æ¦n¤@¶ô°O¾ÐÅé¡A¦¹¶ô°O¾ÐÅéºÙ¬°½w½Ä°Ï ( buffer )¡A¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê·|³Q INT 21 ¦s©ñ©ó³o¶ô½w½Ä°Ï¤º¡C¨Ï¥Î¤èªk¦p¤U¡G

½w½Ä°Ï¦¡ªºÁä½L¿é¤J¦r¦ê
¿é¤J¡GAH¡×0AH
¡@¡@¡@DS:DX¡×¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê¦s©ñ¦ì§} ( §Y½w½Ä°Ï¦ì§} )
¡@¡@¡@½w½Ä°Ïªº²Ä¹s­Ó¦ì¤¸²Õ¡×½w½Ä°Ï¤j¤p¡Ð2¡×³Ì¦h¿é¤Jªº¦ì¤¸²Õ­Ó¼Æ¡Ð1 ( ¤£§t Enter )
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@( ³æ¦ì¬O¦ì¤¸²Õ¡A¦b°õ¦æ INT 21H «e­n¨Æ¥ý¶ñ¦n )
°õ¦æ¡GINT 21H
¿é¥X¡GDS:DX ªº²Ä¤@­Ó¦ì¤¸²Õ¡×¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦r¤¸­Ó¼Æ ( ³æ¦ì¬O¦ì¤¸²Õ )¡A¤£¥]§t Enter ¦r¤¸
¡@¡@¡@DS:DX ªº²Ä¤G­Ó¦ì¤¸²Õ¶}©l¬O¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê

½w½Ä°Ïªº¦w±Æ¤è¦¡¬O¡G

  1. ²Ä¹s­Ó¦ì¤¸²Õ¬O¨Ï¥ÎªÌ³Ì¦h¯à¿é¤Jªº¦r¤¸­Ó¼Æ´î¤@ ( ¤£¥]§t Enter Áä©Ò¥Nªíªº D¡A§YÂk¦ì¦r¤¸ )¡A¨Ã¤£¬O½w½Ä°Ïªº¤j¤p¡F½w½Ä°Ï¤j¤p¬O²Ä¹s­Ó¦ì¤¸²Õªº¼Æ­È¦A¥[¤G¡C
  2. ²Ä¤@­Ó¦ì¤¸²Õ¬O¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦r¤¸­Ó¼Æ ( ¤£§t Enter Áä©Ò¥Nªíªº D )¡C
  3. ±q²Ä¤G­Ó¦ì¤¸²Õ¶}©l¬O¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê¡Aµ²§ô©ó D¡C
  4. ·í¨Ï¥ÎªÌ«ö¤U Enter Áä®É¡A¤~·|µ²§ô³o­ÓªA°Èµ{¦¡¡A¨Ã¥B·|§â³o­Ó Enter Á䪺 ASCII ½X ( §YÂk¦ì¦r¤¸¡A¤Q¤»¶i¦ìªº D ) ¦s¦b¦r¦êªº³Ì«á­±¡C

©³¤U¨Ó¬Ý¬Ý¥Î½w½Ä°Ï¦¡ªº¤è¦¡¿é¤J¦r¦êªº¨Ò¤l¡G

C:\>debug [Enter]
-a [Enter]
1D67:0100 mov ah,a [Enter]
1D67:0102 mov dx,110 [Enter]
1D67:0105 int 21 [Enter]
1D67:0107 int 20 [Enter]
1D67:0109 [Enter]
-e 110 6 [Enter]  ¡÷½w½Ä°Ï¦b¦ì§} 0110 ³B
-d 110 L10 [Enter]
1D67:0110  06 8B C6 F7 0A 0A D0 D3-48 DA 2B D0 34 00 56 1D   ........H.+.4.V.  
-g [Enter] └─¦ì§} 0110 ³B¬° 6¡Aªí¥Ü½w½Ä°Ï±q¦ì§} 110 ³B¶}©l¦@ 8 ­Ó¦ì¤¸²Õ
12345 [Enter]  ¡÷¿é¤J¡u12345¡v¦@ 5 ­Ó¦r¤¸«á¡A§Y¨Ï¦A¿é¤J§ó¦h¦r¤¸¡ADOS ¤£·|±µ¨ü¤]¤£Åã¥Ü¡A¥u¯à«ö ENTER Áäµ²§ô¿é¤J
Program terminated normally
-d 110 l10 [Enter]
1D67:0110  06 05 31 32 33 34 35 0D-48 DA 2B D0 34 00 56 1D   ..12345.H.+.4.V.
-r ip [Enter]  └─¦ì§} 111 ³B¬O¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦ì¤¸²Õ­Ó¼Æ¡A¤£¥]§t 0D
IP 0100
:100 [Enter]
-g [Enter]
abc [Enter]  ¡÷¶È¿é¤J¡uabc¡v¦@ 3 ­Ó¦r¤¸«á´N«ö ENTER Áäµ²§ô¿é¤J
Program terminated normally
-d 110 l10 [Enter] ┌─¦ì§} 111 ³B¬O¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦ì¤¸²Õ­Ó¼Æ¡A¤£¥]§t 0D¡A0D ¤§«áªº¬O¤§«e´Ý¾lªº¸ê®Æ
1D67:0110  06 03 61 62 63 0D 35 0D-48 DA 2B D0 34 00 56 1D   ..abc.5.H.+.4.V.

¤W­±ªº¹Lµ{¤¤¡A½w½Ä°Ïªº¦ì§}¬O±q 110 ¨ì 117¡C½w½Ä°Ï²Ä¹s­Ó¦ì¤¸²Õ¬O 6¡Aªí¥Ü½w½Ä°Ï¤j¤p¬O 8 ­Ó¦ì¤¸²Õ¡F¦©°£ 0D ¦r¤¸¡B¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦ì¤¸²Õ­Ó¼Æ¥H¤Î²Ä¹s­Ó¦ì¤¸²Õ¡A¨Ï¥ÎªÌ³Ì¦h¥u¯à¿é¤J 5 ­Ó¦r¤¸¡C¨Ï¥ÎªÌ¦b¿é¤J 5 ­Ó¦r¤¸¤§«e¡AÀH®É¥i¥H«ö ENTER Áäµ²§ô¿é¤J¡C¦pªG¨Ï¥ÎªÌ¤w¿é¤J 5 ­Ó¦r¤¸¡A§Y¨Ï¦A«ö¨ä¥LÁä¡ADOS ¤£·|±µ¨ü¤]¤£·|Åã¥Ü¡A¤Ï¦Ó·|¨Ï DOS µo¥X¡u¹Í¡vÁn ( ¦ý¦bµêÀÀ¾÷¾¹¤¤µL¦¹­µ®Ä )¡A¥u¦³·í¨Ï¥ÎªÌ«ö¤U Enter Áä«á¡ADOS ·|§â¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦r¤¸­Ó¼Æ ( ¤£§tÂk¦ì¦r¤¸ )¡A¦s¤J½w½Ä°Ï²Ä¤@­Ó¦ì¤¸²Õ¤º¡C


PTR ¹Bºâ¤l

PTR ªº»yªk¬O

¸ê®ÆÃþ«¬ PTR ¹Bºâ¦¡

¸ê®ÆÃþ«¬¬O«ü WORD ©Î BYTE µ¥¤Q¤»¦ì¤¸©Î¤K¦ì¤¸ªø«×ªº¾ã¼Æ¡C¦]¬°²Õ¦X»y¨¥­n¨D¹Bºâ®É¡A¨â­Ó¹Bºâ¤¸ªºªø«×¥²¶·¬Û¦P¡A¦ý¬O¦pªG¨â­Ó¹Bºâ¤¸ªø«×µLªk½T©w¡A©Î¬O­n±j­¢­×¥¿¬Y­Ó¹Bºâ¤¸ªºªø«×®É¡A´N¥i¥H¨Ï¥Î PTR °²«ü¥O¡C

¨Ò¦p¤W­±ªºµ{¦¡¡A¦b¦ì§} 0105 ³Bªº«ü¥O¡A­n³]©w½w½Ä°Ï¤º¨Ï¥ÎªÌ¥i¥H¿é¤Jªº³Ì¤j¦r¤¸¼Æ¬° 10¡A¦ý¬O¦pªG¼g¦¨¡uMOV [0110],10¡v¡A¤£¯à½T©w¦ì§} 110 ©Ò¦bªº°O¾ÐÅéÅܼƬO¦ì¤¸²ÕÁÙ¬O¦r²Õ¡A¦P¼Ëªº¡A10 ¤]µLªk½T©w¬O¦ì¤¸²Õ©Î¦r²Õ¡C¹³³oºØ¨â­Ó¹Bºâ¤¸³£¤£½T©w®É¡A´N±o¨Ï¥Î PTR ¹Bºâ¤l«ü©w¡C

¦]¦¹¿é¤Jµ{¦¡½X®É¡A±o¥Î¡uMOV BYTE PTR [110],10¡v¡A©Î¬O¡uMOV [110],BYTE PTR 10¡v¡A¨âªÌ¬O¤@¼Ëªº·N«ä¡C¥u­n±j­¢¨ä¤¤¤@­Ó¹Bºâ¤¸¬O¦ì¤¸²Õ¡A¥t¤@­Ó¹Bºâ¤¸ªºªø«×¤]´N¯à½T©w¬O¦ì¤¸²Õ¤F¡C


¦^ÅU


¥ÎÁä½L¿é¤J¦r¤¸¡GAH¡×01/INT 21

³o­ÓªA°Èµ{¦¡Åý¹q¸£°±¤U¨Ó¡Aµ¥¨Ï¥ÎªÌ«ö¤U¤@­ÓÁä¦AÄ~Äò¡A©Ò«ö¤UÁ䪺 ASCII ½X·|³Q¦s¤J¨ì AL ¼È¦s¾¹ùØ¡C

¥ÎÁä½L¿é¤J¦r¤¸
¿é¤J¡GAH¡×01
°õ¦æ¡GINT 21H
ªð¦^¡GAL¡×¨Ï¥ÎªÌ«ö¤UªºÁä©Ò¥Nªíªº ASCII ½X


¦b¿Ã¹õ¤W¦L¥X¦r¦ê¡GAH¡×09H/INT 21H

¦b¿Ã¹õ¤W¦L¥X¤@­Ó¦r¦ê¡G

¦b¿Ã¹õ¤W¦L¥X¦r¦ê
¿é¤J¡GAH¡×09H
¡@¡@¡@DS:DX¡×­n¦L¥Xªº¦r¦ê°_©l¦ì§}
°õ¦æ¡GINT 21H
µù¡G¦r¦ê¥²¶·¥H¡u$¡vµ²§À¡C


½w½Ä°Ï¦¡ªºÁä½L¿é¤J¦r¦ê¡GAH=0AH/INT 21H

³o­ÓªA°Èµ{¦¡Åý¹q¸£°±¤U¨Ó¡Aµ¥¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê¡A«ö¤U Enter Áä«áªí¥Ü¿é¤J§¹¦¨¡A¦¹¦r¦ê·|³Q INT 21 ¦s©ñ©ó¤@¶ô°O¾ÐÅ餺¡A¦¹°O¾ÐÅéºÙ¬°½w½Ä°Ï¡C

½w½Ä°Ï¦¡ªºÁä½L¿é¤J¦r¦ê
¿é¤J¡GAH¡×0AH
¡@¡@¡@DS:DX¡×¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê¦s©ñ¦ì§} ( §Y½w½Ä°Ï¦ì§} )
¡@¡@¡@½w½Ä°Ïªº²Ä¹s­Ó¦ì¤¸²Õ¡×½w½Ä°Ï¤j¤p¡Ð2¡×³Ì¦h¿é¤Jªº¦ì¤¸²Õ­Ó¼Æ¡Ð1 ( ¤£§t Enter )
¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@( ³æ¦ì¬O¦ì¤¸²Õ¡A¦b°õ¦æ INT 21H «e­n¨Æ¥ý¶ñ¦n )
°õ¦æ¡GINT 21H
¿é¥X¡GDS:DX ªº²Ä¤@­Ó¦ì¤¸²Õ¡×¨Ï¥ÎªÌ¹ê»Ú¿é¤Jªº¦r¤¸­Ó¼Æ ( ³æ¦ì¬O¦ì¤¸²Õ )¡A¤£¥]§t Enter ¦r¤¸
¡@¡@¡@DS:DX ªº²Ä¤G­Ó¦ì¤¸²Õ¶}©l¬O¨Ï¥ÎªÌ¿é¤Jªº¦r¦ê


DB °²«ü¥O

DB ªº»yªk¬O

DB      ¦r¦ê
DB      ¼Æ­È[,¼Æ­È,¼Æ­È¡K¡K]

DB ¬OÅý DEBUG ©Î²ÕĶ¾¹ªÅ¤U´X­Ó¦ì¤¸²Õ¡A·í°µÅܼƩάO¦r¦ê¡C¦pªG¬O¦r¦ê¡A¥²¶·¥H¤@¹ï¡u"¡v©Î¡u'¡v¬A°_¨Ó¡F°²¦p¬O¼Æ­Èªº¸Ü¡A¥²¶·¦b 0 ¨ì 255 ªº½d³ò¤º¡A¦]¬°¤@­Ó¦ì¤¸²Õ¥u¯àÀx¦s 0¡ã255 ªº½d³ò¡C

»P DB Ãþ¦üªº°²«ü¥O¡AÁÙ¦³ DW¡BDD¡K¡Kµ¥¡A¤À§O¬O©w¸q¦r²Õ¡BÂù¦r²Õ¡K¡K¡C¦r²Õ¬O¤Q¤»¦ì¤¸¡AÂù¦r²Õ¬O¤T¤Q¤G¦ì¤¸¡C


PTR ¹Bºâ¤l

PTR ¥Î©ó±j­¢¨Ï«á­±ªº¹Bºâ¦¡µ²ªG¬°«e­±©Òªí¥Üªº¸ê®ÆÃþ«¬¡CPTR »yªk¬O

¸ê®ÆÃþ«¬ PTR ¹Bºâ¦¡

©³¤U¬O±`¨£ªº¨Ò¤l¡G

        MOV     WORD PTR [110],20

³o­Ó«ü¥O·|Åý¦ì§} [0110] ªºÅܼƦ¨¬°¤@­Ó¦r²Õªºªø«×¡A¦]¦¹¦¹«ü¥O°õ¦æ§¹«á¡A¦ì§} 0110 ¦s©ñ 20¡A¦ì§} 0111 ¦s©ñ 00¡C


x86 «ü¥O¡GCMP¡BJNE/JNZ »P JE/JZ

CMP ªº»yªk¬O

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

JE »P JZ ¬O¤@¼Ëªº·N«ä¡AJNE »P JNZ ¬O¤@¼Ëªº·N«ä¡A¨ä»yªk¬O

JE      xxxx
JNE     xxxx

¤W­±ªº xxxx ³£¬O¥Nªí¦ì§}¡C

CMP ±`»P JNE/JNZ ©Î JE/JZ °t¦X¨Ï¥Î¡A¤ñ¸û¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¡A§â¤ñ¸û«áªºª¬ºA¦s¤JºX¼Ð¼È¦s¾¹¡AµM«á¥Ñ JE ©Î JNE §PÂ_¦p¦ó¸õÅD¡C¨Ò¦p¡G

        CMP     AX,BX
        JE      xxxx

ªí¥Ü¦pªG AX »P BX ¬Ûµ¥¡Aµ{¦¡±±¨îÅv·|¸õÅD¨ì¦ì§} xxxx ³B°õ¦æ¡C

        CMP     AX,BX
        JNE     xxxx

ªí¥Ü¦pªG AX ¤£µ¥©ó BX¡Aµ{¦¡±±¨îÅv·|¸õÅD¨ì¦ì§} xxxx ³B°õ¦æ¡C


ª½±µ©w§}»P¶¡±µ©w§}

ª½±µ©w§}¬O§â°O¾ÐÅé¦ì§}¥H¤@¹ï¤¤¬A©· ( [¡B] ) ¬A°_¨Ó¡A¥Nªí¬Y­Ó°O¾ÐÅéÅܼơA³o­Ó°O¾ÐÅéÅܼƪº¤º®e¥i¥H§ïÅÜ¡C¨Ò¦p¡G

        MOV     [110],10

ªí¥Ü§â¼Æ­È 10 ¦s¤J°O¾ÐÅé¦ì§} 110 ³B¡C¹³³o¼Ëª½±µ¥H¼Æ­Èªí¥Ü°O¾ÐÅé¦ì§}ªº¤è¦¡¡A¨Ó¨M©w­þ¤@­Ó°O¾ÐÅé¦ì§}¡AºÙª½±µ©w§}

¦pªG§â BX¡BBP¡BSI¡BDI ¥H¤@¹ï¤¤¬A©·¬A°_¨Ó¡A¤]¥Nªí¬Y­Ó°O¾ÐÅéÅܼơA­n¨ú±o°O¾ÐÅé¦ì§}®É¡AÁÙ­n¥ý¥hŪ¨ú¼È¦s¾¹¤º®e¡A¬GºÙ¬°¶¡±µ©w§}¡C¦ý¬O¦]¬°³o¨Ç¼È¦s¾¹¤§­È¥i¥H§ïÅÜ¡A©Ò¥H¬O«Ü±`¨Ï¥Îªº©w§}¤è¦¡¡C¨Ò¦p¡G

        MOV     AL,[BX]