Ch 15 Àɮ׳B²z(1)¡G¥N½X¦¡ªºÀɮ׳B²z²¤¶

¦b±µ¤U¨Óªº´X³¹¸Ì¡A¤p¤ì°¸·Q¸ò¦U¦ì½Í½Í¦p¦ó¥Î²Õ¦X»y¨¥³B²zÀɮסA©Ò¿×Àɮ׳B²zªº·N«ä¬O«ü«Ø¥ßÀɮסN­×§ïÀÉ®×µ¥µ¥ªº¤u§@¡C

Æ[©À

ÀÉ®×¥N½X

DOS Àɮ׳B²zªº¤èªk¦³¨âºØ¡A¤@¬O±Ä¥Î FCB ¦¡(file control block¡AÀÉ®×±±¨î°Ï)¡A¥t¤@ºØ¬O handle ¦¡(file handle¡AÀÉ®×¥N½X)¡CFCB ¦¡ªºÀɮ׳B²z¤è¦¡¤w¸g¸¨¥î¤F¡A¨ì²Ä¤Q¤C³¹¦A¦V¦U¦ì³ø§i¡A¦]¦¹²{¦bÅý§Ú¶°¤¤ºë¤O¡A¦V¦U¦ì»¡©ú handle ¦¡ªºÀɮ׳B²z¤è¦¡¡C

©Ò¿× handle ¦¡ªºÀɮ׺޲z¦³ÂIÃþ¦ü¥hÂå°|ùجݯf¡C·í§Ú­Ì¥hÂå°|¬Ý¯f®É­º¥ý¨ì±¾¸¹³B»â¨ú¸¹½XµP¡A¦¹«áÂå¥Í´N¨Ì¾Ú¸¹½XµP¥s¯f¤HÂå¯f¡CHandle ¦¡ªºÀɮ׳B²z¤]¬OÃþ¦ü¡A·í§Ú­Ì¶}±ÒÀɮשΫإßÀɮ׮ɡADOS ´Nµ¹¤©¦¹Àɮפ@­Ó¸¹½X¡A³o­Ó¸¹½X¥Nªí¦¹ÀɮסA·íµ{¦¡·Q³B²zÀɮ׮ɡA´N¥H³o¥N½X¨Óªí¥Ü³o­ÓÀɮסA¦Ó¤£¦Aª½±µ¥ÎÀɦW¤F¡C¤W­z©Ò´£¨ìªº¸¹½X´NºÙ¬° file handle¡A©Î¥sÀÉ®×¥N½X¡C

¦A»¡±o§ó¸Ô²Ó¤@ÂI¡A·í§Ú­Ì¶}±ÒÀɮשΫإßÀɮ׮ɴN¥i¥H¨ú±o¤@­ÓÀÉ®×¥N½X¡A°µªk¬O­n¥ý§âÀɮצWºÙ ( ¤]¥i¥]§t¸ô®| ) ©ñ¦b°O¾ÐÅé¬Y³B¡A¨Ã¦bÀɦW³Ì«á¥[¤W 00H §Y¥i¡AµM«á¥æµ¹«ü©wªº DOS ªA°Èµ{¦¡¥h°õ¦æ´N¥i¥H¤F¡C¹³³oºØ ASCII ¦r¦ê¦A¥[¤W 00H ªº¦r¦êºÙ¬° ASCIIZ ¦r¦ê¡C¤@¤Á´N¬O³o»ò²³æ¡C

·í§Ú­Ì©I¥sÃö³¬Àɮתº DOS ªA°Èµ{¦¡®É¡ADOS ´N¦¬¦^³o­ÓÀÉ®×¥N½X¡AÅý¨ä¥L·sªºÀɮרϥΡCDOS ³W©w³Ì¤j¶}±ÒÀɮתº¼Æ¥Ø¬O©ñ¦b CONFIG.SYS ¤¤¡A¥Î

files=xx

¨Ó«ü©w¡A¦¹³Bªº xx ´N¬O DOS ©Ò¯à¶}±Ò³Ì¤jÀɮ׼ƥءA·íµM xx ¤]¥i¥H­×§ï¦¨§Ú­Ì©Ò»Ý­nªºÀɮ׼ƥءC­È±oª`·Nªº¬O¡ADOS ¦b¤@¶}¾÷®É¡A´N¤w¸g«ü©w 5 ­ÓÀÉ®×¥N½Xµ¹¨t²Î¨Ï¥Î¤F¡A©Ò¥H¦pªG§A¦b CONFIG.SYS ¤º«ü©w files=20¡A¨Æ¹ê¤W§A¥u¯à¶}±Ò 15 ­ÓÀɮסA¦]¦¹¦pªG­n¨Ï¥Î¦P¨Ï¶}±Ò¦hÀɮתºµ{¦¡¡A¨Ò¦p Windows 3.1¡A³Ì¦n¯à¦b CONFIG.SYS «ü©w¤j¤@ÂIªº¶}ÀɼƥءC³o 5 ­ÓÀɮ׬O¡G

0000H  ¼Ð·Ç¿é¤J³]³Æ ( stdin )
0001H  ¼Ð·Ç¿é¥X³]³Æ ( stdout )
0002H  ¼Ð·Ç¿ù»~³]³Æ ( stderr )
0003H  ¼Ð·Ç»²§U³]³Æ ( stdaux )
0004H  ¼Ð·Ç¦C¦L³]³Æ ( stdprn )

³o¤­­Ó¡yÀÉ®×¥N½X¡z¬Ý°_¨Ó¦ü¥G¤£¬OÀɮסA¦Ó¬O¶gÃä³]³Æ¡CÄ´¦p¡A¼Ð·Ç¿é¤J³]³Æ¡B¼Ð·Ç¿é¥X³]³Æ«üªº¬OÁä½L»P¿Ã¹õ¡A¼Ð·Ç¦C¦L³]³Æ«üªº¬O¦Lªí¾÷¡A«ç»ò·|³o¼Ë©O¡H­ì¨Ó DOS §â³o¨Ç³]³Æµø¬°ÀɮסA¹ï¥¦­Ì¿é¥X¸ê®Æ®É¡A´N¹³¬O¹ï¡yÀɮסz¼g¤J¡C³o¤]´N¬O§Ú­Ì¥i¥H¥Î¡y>¡z¡B¡y<¡z¨Óªí¿é¥X¨ì¿Ã¹õ¤Wªº¤å¦rÅܦ¨Àɮתº½t¬G¡C

Àɮ׫ü¦ì¾¹

¶}±Ò©Î«Ø¥ßÀɮפ§«á¡A¨ú±o¤FÀÉ®×¥N½X¡A¦pªG­nŪ¨ú¬Y¨ÇÀɮפº®e©ÎªÌ¼g¤J¬Y¨Ç¤º®e¨ìÀɮפ¤¡A¤S¸Ó¦p¦ó°µ©O¡H

¦Ò¼{¥þ³¡ªºÅª¨ú©Î¼g¤Jªº®É¾÷¡A¨Ã¤£¬O©Ò¦³±¡ªp¤U³£¥²¶·±qÀɮ׳̫eºÝŪ¨ú©Î¼g¤J¡A¨Ò¦p¦b¤@­Ó¥þ®Õ¼Æ¤dµ§ªº¾Ç¥Í¸ê®ÆùØ¡A¥u­nŪ¨ú¬Y¤@¯Z¸ê®Æ®É¡A¦pªG¨C¦¸³£±o±qÀÉ®×ÀY¶}©lŪ¨ú¡AµM«á¦A´M§ä¨ì¸Óµ§¸ê®Æ¡A³o¼Ë´N«D±`ªº¯Ó®É¯Ó¤O¡C

¬°¤FÁקK³o­Ó°ÝÃD¡ADOS ¤º³¡·|¬°¨C­Ó¶}±ÒªºÀɮ׫إߤ@­Ó 32 ¦ì¤¸ªøªºÀɮ׫ü¦ì¾¹¡A¨C·í­è¶}±ÒÀɮ׮ɡAÀɮ׫ü¦ì¾¹«K«ü¦VÀɮ׳̫e­±¡A¨CŪ¨ú©Î¼g¤J¤@¦¸®É¡AÀɮ׫ü¦ì¾¹´N¦Û°Ê¦a«ü¦VŪ¨ú©Î¼g¤Jªº§ÀºÝ¡C°²¦pµ{¦¡¤£¬O¨Ì¶¶§ÇŪ¨úŪ¨ú©Î¼g¤J®É¡ADOS ªA°Èµ{¦¡¤]¦³¤@­Ó¥\¯à¡A¥i¥H¶È²¾°ÊÀɮ׫ü¦ì¾¹¡A¦Ó¤£Åª¨ú©Î¼g¤J¡C³o¼Ëµ{¦¡¥u»Ý­pºâ­n¨ÏÀɮ׫ü¦ì¾¹²¾¨ì­nŪ¨ú©Î¼g¤Jªº¦a¤è¡AµM«á¦A¥[¥H³B²z§Y¥i¡C

¦³ÃöÀɮ׳B²z±`¥Îªº DOS ªA°È¤¤Â_

¦n§a¡I¥ý¬Ý¬Ý¤Uªí¤¤±`¥ÎªºÀÉ®×¥N½X DOS ªA°Èµ{¦¡¡C¤Uªí¤À¨â³¡¥÷¡A¤W¥b³¡¬O¦b DOS ¤¤ªºªA°Èµ{¦¡¡A¤U¥b³¡¬O Windows 9x/Me ¤¤ DOS ¼Ò¦¡¤¤ªºªA°Èµ{¦¡¡A¨âªÌªº®t§O¦b Windows 9x/Me ¥i¨Ï¥ÎªøÀɦW¡A¦Ó DOS ¤¤ªºªA°Èµ{¦¡µLªk¨Ï¥ÎªøÀɦW¡C

¦b DOS ¨t²Î¤¤¦³ÃöÀÉ®×¥N½XªºªA°Èµ{¦¡
¥Î³~ ©I¥s ¿é¤J ¿é¥X
«Ø¥ß·sÀÉ®×AH=3CH DS:DX=·sÀɦW¤§ASCIIZ¦r¦ê¦ì§}
CX=ÀÉ®×ÄÝ©Ê
  • 0 ¤@¯ëÀÉ®×
  • 1 °ßŪÀÉ®×
  • 2 ÁôÂÃÀÉ®×
  • 4 ¨t²ÎÀÉ®×
  • AX=ÀÉ®×¥N½X
    ¸Ô±¡°Ñ¦Ò¿ù»~½X
    ¶}±ÒÀÉ®× AH=3DH DS:DX=±ý¶}±ÒÀɦW¤§ASCIIZ¦r¦ê¦ì§}
    AL=³]©w¶}±ÒªºÀÉ®×ÄÝ©Ê
  • 0ªí¥Ü°ßŪ
  • 1ªí¥Ü°ß¼g
  • 2ªí¥Ü¥iŪ¥i¼g
  • AX=ÀÉ®×¥N½X
    ¸Ô±¡°Ñ¦Ò¿ù»~½X
    Ãö³¬ÀÉ®× AH=3EH BX=±ýÃö³¬¤§ÀÉ®×¥N½X ¸Ô±¡°Ñ¦Ò¿ù»~½X
    Ū¨úÀɮפº®e AH=3FH BX=±ýŪ¨ú¤§ÀÉ®×¥N½X
    CX=±ýŪ¥X¤§ªø«×¡A¥H¦ì¤¸²Õ¬°³æ¦ì
    DS:DX=Ū¥XÀɮפº®e¤§¦s©ñ¦ì§}
    AX=¹ê»ÚŪ¥X¤§¦ì¤¸²Õ¼Æ
    ¸Ô±¡°Ñ¦Ò¿ù»~½X
    ±N°O¾ÐÅ餺®e¼g¤JÀÉ®× AH=40H BX=±ý¼g¤J¤§ÀÉ®×¥N½X
    CX=±ý¼g¤J¤§¦ì¤¸²Õ¼Æ
    DS:DX=±ý¼g¤J¤§°O¾ÐÅé¦ì§}
    AX=¹ê»Ú¼g¤J¤§¦ì¤¸²Õ¼Æ
    ¸Ô±¡°Ñ¦Ò¿ù»~½X
    §R°£ÀÉ®× AH=41H DS:DX=±ý§R°£¸ô®|ÀɦW¤§ASCIIZ¦r¦ê¦ì§} ¸Ô±¡°Ñ¦Ò¿ù»~½X
    ²¾°ÊÀɮ׫ü¦ì¾¹ AH=42H BX=ÀÉ®×¥N½X
    CX:DX=²¾°Ê¦ì¤¸²Õ¼Æ
    AL=¥Ñ¦ó³B¶}©l²¾°Ê(²¾°Ê¤è¦¡)(µù¤G)
  • 0 ¥ÑÀÉ®×°_©l³B¶}©l
  • 1 ¥Ø«e«ü¼Ð¶}©l
  • 2 ¥ÑÀÉ®×¥½ºÝ¶}©l
  • DX:AX=²¾°Ê«á¶ZÀÉ®×°_©l³B¦h»·
    «Ø¥ß©Î¶}±ÒÀÉ®×
    ¦¹¥\¯à¬O3CH»P3DHªºÁ`©M
    AX=6CHDS:SI=±ý¶}±Ò©Î«Ø¥ß¤§ASCIIZ¦r¦ê
    BX=¦s¨ú¼Ò¦¡
    CX=ÄÝ©Ê
    DX=°Ê§@ ( ¸Ô²Ó±¡§Î½Ð°Ñ¦Òµù¤T )
    ¡@
    ¦b Windows 9x/Me ¦³ÃöªøÀɦWªºÀÉ®×¥N½XªA°Èµ{¦¡ INT 21H/AH=71H
    ¥Î³~©I¥s ¿é¤J¿é¥X
    «Ø¥ß©Î¶}±ÒÀÉ®× AX=716CH DS:SI=±ý¶}±Ò©Î«Ø¥ß¤§ASCIIZ¦r¦ê
    BX=¦s¨ú¼Ò¦¡
    CX=ÄÝ©Ê
    DX=°Ê§@ ( ¸Ô²Ó±¡§Î½Ð°Ñ¦Òµù¤T )
    NC ¦¨¥\¡AAX=ÀÉ®×¥N½X
    ¡@¡@ ¡@¡@CX= 1ªí¥Ü³Q¶}±Ò
  • 2 ªí¥Ü³Q«Ø¥ß
  • 3 ªí¥Ü³Q¨ú¥N
  • CY ¥¢±Ñ¡AAX=¿ù»~½X
  • §R°£ÀÉ®× AX=7141H DS:DX=±ý§R°£ÀɦW¤§ ASCIIZ ¦r¦ê¦ì§}
    CH=ÄÝ©Ê
    SI=0000 ¤£¤¹³\¨Ï¥Î¸U¥Î¦r¤¸§R°£ÀÉ®×
  • 0001 ¤¹³\¨Ï¥Î¸U¥Î¦r¤¸§R°£ÀÉ®×¥B¥u§R°£²Å¦X«ü©wÄݩʪºÀÉ®×
  • NC ¦¨¥\
    CY ¥¢±Ñ¡AAX=¿ù»~½X
    «Ø¥ß¤l¥Ø¿ý AX=7139H DS:DX=«ü¦V±ý«Ø¥ß¤l¥Ø¿ý¦W¤§ ASCIIZ ¦ì§} NC ¦¨¥\
    CY ¥¢±Ñ¡AAX=¿ù»~½X
    ´M§ä²Ä¤@­Ó²Å¦XªºÀÉ®× AX=714EH DS:DX=«ü¦V±ý´M§äªºÀɦW ASCIIZ ¦r¦ê¤§¦ì§}¡A¥i¥]§t¸U¥Î¦r¤¸
    CL=¤¹³\ªºÄÝ©Ê
    CH=¥²»ÝªºÄÝ©Ê
    SI=FindData ªº¤é´Á®É¶¡®æ¦¡¡A0 ªí¥Ü Win 9x ®æ¦¡¡F1 ªí¥Ü DOS ®æ¦¡
    ES:DI=«ü¦V FindData µ²ºcÅé
    NC¡Ð¦¨¥\
    ¡@¡@¡@AX=ÀÉ®×´M§ä¥N½X
    ¡@¡@¡@CX=Unicode Âà´«ºX¼Ð
    ¡@¡@¡@¡@¡@¦ì¤¸ 0 ¬° 1¡Aªí¥Üªð¦^ªºªøÀɦW§tµLªkÂà´«
    ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@ªº¸U°ê½X¦r¤¸
    ¡@¡@¡@¡@¡@¦ì¤¸ 1 ¬° 1¡Aªí¥Üªð¦^ªºµuÀɦW§tµLªkÂà´«
    ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@ªº¸U°ê½X¦r¤¸
    CY¡Ð¥¢±Ñ
    ´M§ä¤U¤@­Ó²Å¦XªºÀÉ®× AX=714FH BX=ÀÉ®×´M§ä¥N½X¡A¥ç§Y©I¥s AX=714EH ¤§ªð¦^­È
    SI=FindData ªº¤é´Á®É¶¡®æ¦¡¡A0 ªí¥Ü Win 9x ®æ¦¡¡F1 ªí¥Ü DOS ®æ¦¡
    ES:DI=«ü¦V FindData µ²ºcÅé

    ¤@¯ë¦Ó¨¥¡A´M§äÀÉ®×·|¥ý¥H 714EH §ä¨ì²Ä¤@­ÓÀɮפÎÀÉ®×´M§ä¥N½X¡A¦¹®É²Ä¤@­ÓÀɮתº¸ê®Æ¤w¦b FindData ùؤF¡A¦A¥H 714FH ´M§ä²Ä¤G¡B²Ä¤T¡K¡K­Ó²Å¦XªºÀɮסA¦pªG¤£¶·¦A´M§äªº¸Ü¡A¥H 71A1H Ãö³¬ÀÉ®×´M§ä¥N½X¡A¨Ã±N¸ê·½ÁÙµ¹¨t²Î¡C
    NC¡Ð¦¨¥\
    ¡@¡@¡@AH=4FH
    ¡@¡@¡@CX=Unicode Âà´«ºX¼Ð
    ¡@¡@¡@¡@¡@¦ì¤¸ 0 ¬° 1¡Aªí¥Üªð¦^ªºªøÀɦW§tµLªkÂà´«
    ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@ªº¸U°ê½X¦r¤¸
    ¡@¡@¡@¡@¡@¦ì¤¸ 1 ¬° 1¡Aªí¥Üªð¦^ªºµuÀɦW§tµLªkÂà´«
    ¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@¡@ªº¸U°ê½X¦r¤¸
    CY¡Ð¥¢±Ñ

    ¤@¯ë¦Ó¨¥¡A¥N½X¦¡ªºÀɮ׳B²z¤è¦¡¡A°õ¦æ§¹«á¦pªG¶i¦ìºX¼Ð³Q³]©w(¦b DEBUG Åã¥Ü CY)¡Aªí¥Ü¿ù»~²£¥Í¡A¦¹®É AX ¼È¦s¾¹ªº¤º®eªí¥Ü¿ù»~½X¡C¦pªG¶i¦ìºX¼Ð³Q²M°£(NC)¡A«hªí¥Ü¨S¦³¿ù»~µo¥Í¡C¦]¦¹§Ú­ÌÀ³¸Ó¦b°õ¦æ§¹¤¤Â_ªA°Èµ{¦¡«á¡AÀˬd¬O§_¦³¿ù»~¡C


    ¤@­Ó½d¨Ò¡GCRTTCT.ASM

    ­ì©l½X

    ©³¤U§Ú¨Ó¥Ü½d¤@­Óµ{¦¡¡ACRTTCT.COM¡A³o­Óµ{¦¡·|¦b C:\MYDOCU~1 ¤l¥Ø¿ý¤º«Ø¥ß¤@­Ó¦W¬° TEST.TXT ªºÀɮסAµM«á DOS µ¥«Ý§Ú­Ì¿é¤J¤@¨Ç¦r¡A¦pªG«ö¤U Esc Áä´N·|±N§Ú­Ì¿é¤Jªº¦r¦s¤J TEST.TXT Àɨøõ¦^ DOS¡C³o­Óµ{¦¡¨Ã¨S¦³½s¿è¥\¯à¡A¦]¦¹¦pªG¿é¤J¿ù»~¡A¬O¨Sªk¨ì¦^¥h­×§ïªº¡Cµ{¦¡¦p¤U¡G

    ;***************************************
    code    segment
            assume  cs:code,ds:code
            org     100h
    ;---------------------------------------
    start:  jmp     begin
    file_name       db      'C:\MYDOCU~1\TEXT.TXT',0
    file_handle     dw      ?
    message_1       db      'µLªk«Ø¥ß TEXT.TXT ÀÉ¡C$'
    message_2       db      'µLªk±N¸ê®Æ¦s¤J TEXT.TXT ÀÉ¡C$'
    message_3       db      '¼g¤J¦¨¥\¡I$'
    buffer          db      200 dup (?)  ;12 ¿é¤J½w½Ä°Ï
    begin:  mov     ah,3ch
            mov     cx,0
            mov     dx,offset file_name  ;15 ¨ú±oASCIIZ¦r¦ê¦ì§}
            int     21h
            mov     dx,offset message_1
            jc      error
            mov     file_handle,ax       ;19 ±Nhandle¦s¤JÅܼÆ
            mov     si,offset buffer     ;20 ±NSI«ü¦V¿é¤J½w½Ä°Ï
    next:   mov     ah,0                 ;21 ¦r¤¸¿é¤J
            int     16h
            cmp     al,1bh               ;23 Àˬd¬O§_«ö¤UEscÁä
            je      exit
            mov     [si],al              ;25 ­Y¤£¬O¡A«h±N¸Ó¦r¤¸¦s©ó½w½Ä°Ï
            mov     ah,2                 ;26 ¤Î¦L¦b¿Ã¹õ¤W
            mov     dl,al
            int     21h
            cmp     al,0dh               ;29 ­Y¨Ï¥ÎªÌ«ö¤UEnterÁä
            jne     not_cr
            mov     dl,0ah               ;31 «hÁÙ­n¦A¦s¤J´«¦æ¦r¤¸
            inc     si
            mov     ah,2
            int     21h
            mov     [si],dl
    not_cr: inc     si
            cmp     si,offset begin      ;37 Àˬd½w½Ä°Ï¬O§_¶ñº¡¤F
            jne     next
    exit:   mov     cx,si
            mov     dx,offset buffer
            mov     ah,40h
            sub     cx,dx
            jz      close
            mov     bx,file_handle
            int     21h                  ;45 ¦s¤JÀÉ®×
            mov     dx,offset message_2
            jc      error
    close:  mov     ah,3eh
            mov     bx,file_handle
            int     21h                  ;50 Ãö³¬ÀÉ®×
            mov     dx,offset message_3
    error:  mov     ah,9
            int     21h
            mov     ax,4c00h
            int     21h
    ;---------------------------------------
    code    ends
    ;***************************************
            end     start

    ±N³o­Ó­ì©lÀɽsĶ¡B³sµ²¨ÃÂà´«¦¨ CRTTCT.COM ÀÉ¡A°õ¦æ¬Ý¬Ý

    ¤p¤ì°¸¥ý°õ¦æ CRTTXT.COM µ{¦¡¡AµM«á¿é¤J

    I learn assembly language hard,
    beacuse it is very fun.

    ³o¤@¬q¤å¦r(ºñ¦â°é°_¨Óªº¦a¤è)¡A¦b³rÂI«á«ö¤U Enter Áä¸õ¨ì¤U¤@¦æ¦bÄ~Äò¿é¤Jª½¨ì¥yÂI¡A¿é¤J§¹«á¦A«ö¤U Enter Áä¡A¦A«ö¤U Esc Áä¡Aµ{¦¡¥ß§Y§â§Ú©Ò¿é¤Jªº¤å¦r¦s¤J C:\MYDOCU~1\TEXT.TXT ÀÉ¡A¨Ãªð¦^ DOS¡C

    µM«á§Ú¦b DOS ©R¥O´£¥Ü¤U¡AÀˬd TEXT.TXT ÀÉ(¬õ¦â°é°_¨Óªº¦a¤è)¡A§A¤]¥i¥Hµ§°O¥»¶}±Ò¥L¡A¬Æ¦ÜÄ~Äò½s¿è¡C

    »¡©ú

    ©³¤U¥J²Ó»¡©ú³o­Óµ{¦¡¡C

    ²Ä¤Q¤T¦æ¨ì²Ä¤Q¤­¦æ¬O³]©w«Ø¥ßÀɮשһݭnªº¼È¦s¾¹­È¡A°Ñ¦Ò¤Wªí¡A¥²¶·³]©wAH¡BDS¡BDX¡BCXµ¥¼È¦s¾¹¡C¦]¬°³o­Óµ{¦¡¬O COM ÀÉ¡A¨ä©Ò¦³°Ï¬q³£¬Û¦P¡A¬G DS ¼È¦s¾¹¤£¥²³]©w´N¬O¥¿½T­È¡A¨ä¥L¤T­Ó¼È¦s¾¹³£¥²¶·¦b©I¥s¤¤Â_«e³]¦n¡C

    ­YµL¿ù»~¡A²Ä¤Q¤E¦æ±N DOS ¶Ç¦^¨ÓªºÀÉ®×¥N½X¦s¤J¤@­ÓÅܼƤ¤¡A¥H³Æ©Ò»Ý¡C²Ä¤G¤Q¦æ³]©w¨Ï¥ÎªÌ¿é¤Jªº¸ê®Æ¦s©ñ³B¡A¦s©ó buffer ³o­Ó¦ì§}©Ò«üªº¦a¤è¶}©l¡CSI «ü¦V³o­Ó¦ì§}¡A¥H«á¨C·í¨Ï¥ÎªÌ¿é¤J¤@­Ó¦r¤¸¡A´N·|¦s©ó SI ©Ò«ü¦ì§}³B¡AµM«á¦A¨Ï SI ¼W¥[¤@¡A¨Ï¤U¤@­Ó¿é¤Jªº¦r¯à¦s©ó¥¿½T¦ì§}¡A¤£·|Âл\«e­±ªº¸ê®Æ¡C¦Ó buffer ³o­Ó¦ì§}¦b²Ä¤Q¤G¦æ¤w¸g¥ý©w¸q¤F¡A

    buffer          db      200 dup (?)

    ³o­Ó©w¸q¥X²{¤F dup «ü¥O¡A¥¦ªº¥Îªk¬O¡G

    ÅܼƦW          db      n dup (value)

    ªí¥Ü¦b¡yÅܼƦW¡z©Ò«üªº¦ì§}³]©w¤@­Óªø n ­Ó¦ì¤¸²Õªº°Ï°ì¡A¦b³o­Ó°Ï°ì¤ºªº¨C­Ó¦ì¤¸²Õªº­È³£¬O value¡C°²¦p¤£·Q³]©w³o¶ô°Ï°ìªº°_©l­È¡A¥i¥H¥Î¡y?¡z¥N´À value¡C¦]¬°µ{¦¡³]­p®v¤£¾å±o¨Ï¥ÎªÌ·|¿é¤J¦h¤Ö­Ó¦r¡A¬G¥ý°²³]¤@­Óªø200 ­Ó¦ì¤¸²Õªº°Ï°ìµ¹¨Ï¥ÎªÌ¿é¤J¡A¦]¦¹³o®É dup «ê¦n²Å¦X©Ò»Ý¡C

    ±µ¤U¨Ó¬OÁä½L¿é¤J¦r¤¸¡A¤ÎÀˬd¨Ï¥ÎªÌ¬O§_«ö¤U Esc Áä¡A¦pªG¤£¬O«ö¤U Esc Áä¡A«h±N¸Ó ASCII ¦r¤¸¦s©ó buffer ©Ò«üªº¨º¶ô°Ï°ì(²Ä25¦æ)¡A¨Ã¦L¥X¨Ó(²Ä26¨ì28¦æ)¡C

    ¦pªG¨Ï¥ÎªÌ«ö¤U Enter Áä®É¡A³o®ÉÀ³¸Ó±N´å¼Ð²¾¨ì¿Ã¹õ¤U¤@¦æªº³Ì¥ªÃä¡A¦ý¬O¤£©¯ªº¬O¡A¦b IBM PC ¸Ì«ö¤U Enter Áä¥u¯à²£¥Í ASCII ½Xªº 0dh¡A¥¦¥u¯à¨Ï´å¼Ð²¾¨ì³Ì¥ªÃä¡A¤£¯à²¾¨ì¤U¤@¦æ¡A¬Gµ{¦¡±o¦Û¦æ²£¥Í¡y´«¦æ¡z®ÄªG¡C²¾¨ì¤U¤@¦æ(´«¦æ)ªº ASCII ½X±±¨î²Å¸¹¬O 0ah (°Ñ¦Òªþ¿ý¥|)¡A©Ò¥H¦b²Ä31¦æ¥[¤J¤@­Ó´«¦æ²Å¸¹¡A¨Ã¦s©ó buffer ©Ò«üªº¨º¤@¶ô°Ï°ì¡A¦P®É¨Ï SI «ü¦V¤U¤@­Ó¦ì§}¡A¥H«K¦s¤J¤U¤@­Ó¿é¤Jªº¦r¤¸¡C

    ²Ä37¦æ«h¬OÀˬd buffer ©Ò«üªº¦ì§}¬O§_¤w¸g¶ñº¡¤F¡A­Y¶ñº¡©Î¬O¨Ï¥ÎªÌ´£«e«ö¤U Esc Áä«h¦sÀÉ(39¨ì45¦æ)¡BÃö³¬ÀÉ®×(48¨ì50¦æ)¨Ãªð¦^ DOS (54¨ì55¦æ)¡C¨ä¤¤ÁÙ°ÑÂøµÛÀˬd¬O§_¦³¿ù»~ªºÀˬdµ{¦¡¤ù¬q¤Î¦L¥X°T®§ªºµ{¦¡¤ù¬q¡C


    µù¤@¡G

    ½Ð°Ñ¦Òªþ¿ý¤­

    µù¤G¡G

    AH=42H/INT 21H²¾°ÊÀɮ׫ü¼Ð³o­ÓªA°È±`¦¡¥u¯à¥Ñ°Ñ¦ÒÂI¦V«á²¾¡A¤£¯à¦V«e²¾¡A©Ò¯à¨Ï¥Îªº°Ñ¦ÒÂI¦³¤T¡GÀɮ׶}©l³B¡BÀÉ®×¥½ºÝ¤Î³Q²¾°Ê«á©Ò«üªºÀɮ׫ü¼Ð³B¡C¬°¤F¤è«K¡A¼g¤J©ÎŪ¨úÀɮ׮ɡA¤]·|¦V«á§ó°ÊÀɮ׫ü¼Ð¡C·íÀɮ׳Q¶}±Ò©Î«Ø¥ß®É¡AÀɮ׫ü¼Ð¬°¹s¡A¤]´N¬O¦bÀÉ®×°_©l¦ì¸m¡C¦pªGŪ¨ú©Î¼g¤J©Î²¾°ÊÀɮ׫ü¼Ð 1000 ­Ó¦ì¤¸²Õ¡AÀɮ׫ü¼Ð«K²¾¨ìÂ÷Àɮ׶}©l³B 1000 ­Ó¦ì¤¸²Õªº¦a¤è¡A¦pªG¦AŪ¨ú©Î¼g¤J©Î²¾°ÊÀɮ׫ü¼Ð 500 ­Ó¦ì¤¸²Õ¡A¨ºÀɮ׫ü¼Ð´N·|¦b©¹«á²¾ 500 ­Ó¦ì¤¸²Õ¡A¤]´N¬OÀɮ׶}©l³B«á 1500 ­Ó¦ì¤¸²Õªº¦a¤è¡A³o®É¥H²Ä 1000 ­Ó¦ì¤¸²Õ¬°°Ñ¦ÒÂI¦V«á²¾ 500 ­Ó¦ì¤¸²Õ¡C

    ¦n¡A²{¦b²Ä¤@­Ó°ÝÃD¨Ó¤F¡A°²¦p²{¦bÀɮ׫ü¼Ð¤w¸g¦bÀɮ׶}©l«á 1500 ­Ó¦ì¤¸²Õªº¦a¤è¤F¡A¦ý§Ú·QŪ¨úÀɮ׶}©lªº²Ä 1024 ¦ì¤¸²Õ¥H«áªº 100 ­Ó¦ì¤¸²Õ¡A¸Ó«ç»ò¿ì©O¡H³o®É´N±o¥Î AH=42H/INT 21H ³o­ÓªA°Èµ{¦¡¤F¡A­º¥ý±o²¾°ÊÀɮ׫ü¼Ð¡A¥ÑÀɮ׶}©l³B¦V«á²¾ 1024 ­Ó¦ì¤¸²Õ¡A¦AŪ¨ú 100 ­Ó¦ì¤¸²Õ¡C

    ©³¤Uªºµ{¦¡¤ù¬q¡A´N¬O¥ý±NÀɮ׫ü¼Ð²¾¨ì±qÀɮ׶}©l³Bºâ(AL=0)ªº²Ä 1024 ¦ì¤¸²Õ(CX:DX=0000:0400H)¡A¦AŪ¨ú¡C

    mov     ah,42h
    mov     al,0        ;§â°Ñ¦ÒÂI³]¬°Àɮ׶}©l³B
    mov     bx,handle
    mov     dx,1024     ;¦V«á²¾ 1024 ­Ó¦ì¤¸²Õ
    sub     cx,cx
    int     21h
    
    mov     ah,3fh      ;¦AŪ¨ú 100 ­Ó¦ì¤¸²Õ
    mov     bx,handle
    mov     cx,100
    mov     dx,buffer
    int     21h

    ²Ä¤G­Ó°ÝÃD¡A¦pªGÀɮ׫ü¼Ð¤w¸g¨ìÀÉ®×¥½ºÝ¡A¦A²¾°ÊÀɮ׫ü¼Ð·|µo¥Í¤°»ò¨Æ©O¡H®Ú¾Ú¤p¤ì°¸¦b MS¡ÐDOS 6.20 ª©¤W¹êÅçµ²ªG¡A³o®ÉÀɮ׫ü¼ÐÁÙ¬O·|Ä~Äò¦V«á²¾¦Ó¶W¹LÀɮתø«×¡A¥B¤£·|³ø¿ù¡A¤£¹L¡A¦¹®É¦pªG¦AŪ¨ú¡A¥u¯àŪ¨ì 0 ¦ì¤¸²Õ¡C

    ³Ì«á¡A¤£½×²¾°Ê¤è¦¡¬°¦ó¡A¶Ç¦^­È DX:AX ©Ò¥Nªí¤§Àɮ׫ü¼Ð³£¬O¥ÑÀÉ®×°_©l³Bºâ°_¡C

    ¦¹¥~³o­ÓªA°Èµ{¦¡¤]¥i¥H¥Î¨Ó¨ú±oÀɮתø«×¡A¤èªk´N¬O·íÀɮ׫ü¼Ð¦b°_©l³B®É¡A¿é¤J AL=0¡BCX:DX=0¡A¦A©I¥s¦¹ªA°Èµ{¦¡¡A¦p¦¹¶Ç¦^ªº DX:AX ´N¬OÀɮתø«×¡C


    µù¤T¡G

    ¦b Win 9X/Me ùتº DOS ¼Ò¦¡¤¤¡A¥i¥H¥ÎªøÀɦW¶}±ÒÀɮסA­º¥ý¤p¤ì°¸Â²³æ¤¶²ÐÀɦW¡C¦b Win 9X/Me §@·~¨t²Î¤U¡A°²¦pÀɦW²Å¦X DOS ¨t²Î¤¤ªº³W©w¡A¤]´N¬O¥DÀɦW 8 ­Ó­^¤å¦r¡A°ÆÀɦW 3 ­Ó­^¤å¦r³oºØ³W«hªºÀɦW¡AWin 9X/Me ¶È¥Î¤@­Ó FDB ( ½Ð°Ñ¦Ò²Ä 18 ³¹ ) °O¿ý¡C°²¦pÀɦW¶W¹L¤W­z³W«h¡AWin 9X/Me ¥Î¨â­Ó©Î¨â­Ó¥H¤Wªº FDB °O¿ýÀɦW¡A¨ä¤¤¤@­Ó¬O Win 9X/Me §â­ì¨Ó¸ûªøªºÀɦW¿@ÁY«áªºµ²ªG¡Aºò±µµÛªº¼Æ­Ó FDB ¥Î¨Ó¦s©ñ¯u¥¿ªºªøÀɦW¡C©Ò¥H±z¦b Win 9X/Me ªº DOS ¼Ò¦¡¤U¬Ý¨£ªºÀɦW¹³¤U¹Ï¡G

    »¡©úªøÀɦW»P¿@ÁYÀɦW
    ¨Ò¦p¤W¹Ï¤¤¡yPROGRA~1¡z¬O¨t²Î³B²z¿@ÁY«áªºÀɦW¡A¯u¥¿ªºÀɦW¬O«á­±ªº¡yProgram Files¡z¡C¦b Win 9X/Me ¨t²Îùتº INT 21H/AH=71H ¬O±Mªù¥Î¨Ó³B²zªøÀɦWªº¡A¨ä¤l¥\¯à¥Î AL ªí¥Ü¡C

    ¥H¶}±ÒÀɮ׬°¨Ò¡A¦b Win 9X/Me ùإΠAX=716CH/INT 21H ªA°È±`¦¡´£¨Ñµ{¦¡³]­p®v¨Ï¥Î¡C­n¶}±ÒªºÀɮצWºÙ¥Ñ DS:SI ©Ò«ü¦ì§}ªº ASCIIZ ¦r¦êªí¥Ü¡A§Y¦¹¦r¦ê¥²¶·¬OÀɦW«á¦A¥[¤W¤@­Ó 0¡CBX ¨M©w¶}±Ò«áªº¦s¨ú¼Ò¦¡¡B¦@¨É¼Ò¦¡¡BÄ~©Ó¼Ò¦¡µ¥¡C©³¤U»¡©ú BX ¦U¦ì¤¸ªº·N¸q¡G

    ¦ì¤¸·N¡@¡@¸q
    0¡ã3 ªí¥Ü¦s¨ú¼Ò¦¡¡G
    ¡@¡@¡@0000¡G°ßŪ¡A¥u¯àŪ¨ú¤£¥i¼g¤J
    ¡@¡@¡@0001¡G°ß¼g¡A¥u¥i¼g¤J¤£¥iŪ¨ú
    ¡@¡@¡@0010¡G¥iŪ¥i¼g
    ¡@¡@¡@0100¡G°ßŪ¡A¥B¤£§ïÅÜÀɮ׳̫á¦s¨ú®É¶¡
    4¡ã6 ªí¥Ü¦@¨É¼Ò¦¡¡A¥u¦³¦b SHARE.EXE ±`¾n®É¤~»Ý­n¥Î¨ì³o¤T­Ó¦ì¤¸¡A©³¤U¬O¥¦­Ìªº»¡©ú¡G
    ¡@¡@¡@000¡G¥i³Q¨ä¥Lµ{¦¡¦A¶}±Ò
    ¡@¡@¡@001¡G¸T¤î³Q¨ä¥Lµ{¦¡¦A¶}±Ò
    ¡@¡@¡@010¡G¥i³Q¨ä¥Lµ{¦¡¶}±Ò¡A¦ý¶È¥iŪ¨ú¡A¸T¤î¼g¤J
    ¡@¡@¡@011¡G¥i³Q¨ä¥Lµ{¦¡¶}±Ò¡A¦ý¶È¥i¼g¤J¡A¤£¥iŪ¨ú
    ¡@¡@¡@100¡G¥i³Q¨ä¥Lµ{¦¡¶}±Ò¡A¥iŪ¥i¼g
    ¡@¡@¡@111¡G¥i¦bºô¸ô¤¤³Q¨ä¥L¾÷¾¹¨Ï¥Î¡C
    7 ªí¥ÜÄ~©Ó¼Ò¦¡¡A¦¹¦ì¤¸³]¬° 1¡Aªí¥Ü¤l¦æµ{¤£¯àÄ~©Ó¦¹ÀɮסA¦¹¦ì¤¸¬° 0 ªí¥Ü¤l¦æµ{¥iÄ~©Ó¦¹ÀɮסC
    8 ¦¹¦ì¤¸³]¬°¤@®É¡A¤£¨Ï¥Î½w½Ä°Ï¸ê®Æª½±µ¨ìºÏºÐ¤W¦s¨ú¡F³]¬°¹s®É«h¨Ï¥Î½w½Ä°Ïªº¸ê®Æ¡A­Y½w½Ä°Ï¨S¦³¤~¨ìºÏºÐ¤W¦s¨ú¡C
    9 ¦¹¦ì¤¸³]¬°¤@®Éªí¥Ü¦¹Àɮפ£¥ÎÀ£ÁY®æ¦¡¡A§Y¨Ï¸ÓÀɮשҦbºÏºÐ¾÷¬°À£ÁYµwºÐ¡F³]¬°¹s®É«h¨Ï¥ÎÀ£ÁY®æ¦¡¡A¦ý¬O¥u¦³¦b¸ÓÀɮשҦbµwºÐ¬°À£ÁYµwºÐ¤~¦³®Ä¡C
    A ¡@
    B¡ãC ¨S¦³¨Ï¥Î¡C
    D ¦¹¦ì¤¸³]¬°¤@®É¡Aµo¥ÍÄY­«¿ù»~ ( ¨Ò¦p¶}±Ò³nºÐ¤ù¤WªºÀɮסA¦ý³nºÐ¤ù¨S©ñ¤JºÏºÐ¾÷¤¤ ) ®É¡A¤£°õ¦æ INT 24H¡F¤Ï¤§³]¬°¹s®É¡Aµo¥ÍÄY­«¿ù»~«h°õ¦æ INT 24H¡C
    E ¦¹¦ì¤¸³]¬°¤@®É¡A¸ê®Æª½±µ¼g¤JÀɮסF³]¬°¹s®Éµ¥½w½Ä°Ïº¡¤F¦A¼g¤JÀɮסC
    F ¨S¦³¨Ï¥Î¡C

    CX ªí¥ÜÄÝ©Ê¡A¦U¦ì¤¸©Ò¥Nªíªº·N¸q¦p¤Uªí¡G

    ¦ì¤¸ ·N¡@¡@¸q¦ì¤¸ ·N¡@¡@¸q
    0 ¦¹¦ì¤¸¬°¤@®É¡A¬°°ßŪÀÉ 4 «O¯dµL¥Î¡A¥²¶·¬°¹s
    1 ¦¹¦ì¤¸¬°¤@®É¡A¬°ÁôÂÃÀÉ 5 ¦¹¦ì¤¸¬°¤@®É¡A¬°´¶³qÀÉ®×
    2 ¦¹¦ì¤¸¬°¤@®É¡A¬°¨t²ÎÀÉ 6 «O¯dµL¥Î¡A¥²¶·¬°¹s
    3 ¦¹¦ì¤¸¬°¤@®É¡A¬°ºÏºÐ¾÷¨÷¦W 7 ¦¹¦ì¤¸¬°¤@®É¡A¬° Novell NetWare ¦@¨É

    DX ¬O¨Ì¾ÚÀɮ׬O§_¦s¦b¨Ó¨M©w©Ò±Ä¨úªº°Ê§@¡A³o¨Ç°Ê§@¥]§t¶}±Ò¡B­«·s²£¥Í©Î¥X¿ù¡A¨ä·N¸q¦p¤Uªí¡G

    ¼Æ­È°Ê§@¦WºÙ ¦pªGÀɮפw¦s¦b¦pªGÀɮפ£¦s¦b
    0001H OPEN ¶}±Ò¥X¿ù
    0002H TRUNC ­«·s²£¥Í¥X¿ù
    0010H CREATE ¥X¿ù­«·s²£¥Í
    0011H OPEN¡ÏCREATE ¶}±Ò­«·s²£¥Í
    0012H TRUNC¡ÏCREATE ­«·s²£¥Í­«·s²£¥Í


    ¦^¨ì­º­¶¡A ¨ì²Ä¤Q¥|³¹¡A ¨ì²Ä¤Q¤»³¹