Ch 03 ASCII Code


­ì²z

³o¤@¦¸§Ú­Ì­n½Íªº¬O ASCII ½X¡A¤°»ò¬O ASCII ½X©O¡H§Ú­Ìª¾¹D¹q¸£¬O¤@ºØ¹q¾¹³]³Æ¡A¥u»{¤À¿ë°ª¹q¦ì»P§C¹q¦ì¡A§Ú­Ì´N§â¥¦©w¸q¦¨ 0 ©M 1 ¨âºØ¼Æ¦r¡A¨Ò¦p°ª¹q¦ì¬° 1¡A§C¹q¦ì«h¬° 0¡F©ÎªÌ¤Ï¹L¨Ó¥çµL¤£¥i¡CÁöµM¹q¸£¥u¯à¤À¿ë¨âºØ¼Æ¦r¡A¦ý§Ú­Ì±N¤K­Ó 0 ©Î 1 ±Æ¦C¦b¤@°_´N¥i¥Hªí¥Ü«Ü¤jªº¼Æ¦r¡A¨Ò¦p¡G
0000 0000    ªí¥Ü 0
0000 0001    ªí¥Ü 1
0000 0010    ªí¥Ü 2(µù¤@)
0000 0011    ªí¥Ü 3
0000 0100    ªí¥Ü 4
0000 0101    ªí¥Ü 5
³o´N¬O¥Î¤@­Ó byte¡]¦ì¤¸²Õ¡^¨Óªí¥Ü 0 ¨ì 255¡AÁ`¦@ 256 ­Ó¾ã¼Æ¡]28=256¡^¡A·íµM 2 ­Ó¦ì¤¸²Õ¡A´N¬Û·í©ó 16 ­Ó¦ì¤¸¡A´N¥i¥Hªí¥Ü¥X 65536 ­Ó¾ã¼Æ¡C¨º»ò¹q¸£¤Wªº­^¤å¦r¥À¤S¦p¦ó¦b¿Ã¹õ¤WÅã²{¥X©O¡H­ì¨Ó¦³¨ÇÁo©úªº¤H¡A¦­¤w¸g·Q¦n¤F¤èªk¡C§Ú­Ì§â¤@­Ó¾ã¼Æ¥N´À¤@­Ó¦r¥À©Îªü©Ô§B¼Æ¦r¡C¨Ò¦p 65 ³o­Ó¼Æ­È¥Nªí­^¤å¦r¥À¡uA¡v¡A·í¹q¸£¡u¬Ý¨ì¡v³o­Ó¼Æ­È®É¡A´N¥Î 65 ³o­Ó¼Æ­È¸g¹L¤@®M¹Bºâ¤è¦¡¡A¦Ó±o¨ì¡uA¡v³o­Ó¦rªº§Îª¬¡A¦AÅã¥Ü¨ì¿Ã¥ú¹õ¤W¡C·íµM¡A¥²¶·¨C¤@­Ó¤H³£¨Ï¥Î¦P¤@­Ó¼Æ­È¨Óªí¥Ü¦P¤@­Ó¦r¡A¦pªG¬Y¤H¥H¡u65¡vªí¥Ü¡uA¡v¡A¦ý¥t¤@¤H¥H¡u61¡vªí¥Ü¡uA¡v¡A°Z¤£¤Ñ¤U¤j¶Ã¡C

©Ò¥H¬ü°ê¦³­Ó¾÷ºc¨î©w¤F¤@­Ó²Î¤@ªº¼Ð·Ç¡A±N 7 ­Ó¦ì¤¸¡]¦@¦³ 27 ¤]´N¬O 128 ºØªí¥Ü¤èªk¡A±q 0 ¨ì 127¡^¨Ó¥Nªí­^¤å¦r¥À¡Bªü©Ô§B¼Æ¦r¤Î¤@¨Ç²Å¸¹¡AºÙ¬° ASCII ½X¡C«á¨Ó IBM ¤S¨î©w¤FÂX¥Rªº ASCII¡A³o¬O¥Ñ 8 ¦ì¤¸²Õ¦¨ªº¡A¦@¥i¥Hªí¥Ü 256 ­Ó¤å¦r¡A«e­± 128 ­Ó»P«e­zªº ASCII ½X¬Û¦P¡A«á 128 ­Ó¥i¥Hªí¥Ü­µ¼Ð¡B®Ø½u¤Î§Æþ¦r¥À¡C©³¤U¦C¥X´X­Ó ASCII ½X¡A¥H¨Ñ»¡©ú¡A¨ä¾l¥i°Ñ¦Òªþ¿ý¥|¡C

±`¨£ ASCII ½X
¤Q¶i¦ì ¤Q¤»¶i¦ì ASCII ¤Q¶i¦ì ¤Q¤»¶i¦ì ASCII
32 20   33 21 !
34 22 " 35 23 #
36 24 # 37 25 %
65 41 A 66 42 B
97 61 a 98 62 b

¤Wªí¤¤ªº²Ä¤@­Ó¡A¤Q¶i¦ìªº¼Æ­È 32 ( µ¥©ó¤Q¤»¶i¦ìªº 20 )¡A¥¦ªº ASCII ½X©Ò¥Nªíªº¦r¤¸ªÅ¥Õ¡F²Ä¤G­Ó¡A¤Q¶i¦ìªº 33 ( µ¥©ó¤Q¤»¶i¦ìªº 21 )¡A¥¦ªº ASCII ½X¥Nªíªº¦r¤¸¬O!¡A¨ä¾l¨Ì¦¹Ãþ±À¡C·N«ä¬O»¡¡A¦pªGµ{¦¡·Q§â¬Y­Ó°O¾ÐÅ骺¤º®eÅã¥Ü¦b¿Ã¹õ¤W¡A°²¦p³o­Ó°O¾ÐÅé¦sªº¬O 41h¡A¨º´N·|¦L¥X­^¤å¦r¥À¡yA¡z¨Ó¡A¦Ó¤£·|¦L¥X 41 ©Î 65¡C


­ì©lµ{¦¡¦Cªí

©³¤U§Ú­Ì´N¤¶²Ð¤@­Óµ{¦¡¡A±N 0 ¨ì 255 ªº ASCII ½X¦L¦b¿Ã¹õ¤W¡C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
;***************************************
code    SEGMENT
        ASSUME  cs:code,ds:code
        ORG     100h
;---------------------------------------
start:  mov     cx,256   ;¦³ 256 ­Ó ASCII ½X
        mov     dl,0
next:   mov     ah,2     ;Loop °j°é¶}©l³B ¢w¢{
        int     21h      ;                ¢x
        inc     dl       ;                ¢x
        loop    next     ;Loop °j°éµ²§ô³B ¢w¢}
        mov     ax,4c00h
        int     21h
;---------------------------------------
code    ENDS
;***************************************
        END     start

¸g¹L²ÕĶ¡B³sµ²¡BÂà´«¦¨ COM ÀÉ«á¡A°õ¦æ¬Ý¬Ý¡G

ascii.com °õ¦æ«áµ²ªG

§A·|Å¥¡§¹Í¡¨¤@Án¡AµM«á¦L¥X¤@¤j°ï¦r¡A¤S¦^¨ì´£¥Ü²Å¸¹¡C³o¬O¦]¬° ASCII ½Xªº 7 ´N¬O¥Nªí¹ÍÁn¡A¨ä¥LÁÙ¦³¤@¨Ç±±¨î½X¡A§Ú­Ìµy­Ô·|¥Î¨ì¡AµM«á¬Ý¨ì¹q¸£¦L¥X³\¦h²Å¸¹¡Bªü©Ô§B¼Æ¦r¡B­^¤å¦rµ¥µ¥¡C©³¤U¸ÑÄÀ³o­Óµ{¦¡¦p¦ó¹B§@¡C

¦L¥X¦r¤¸ªº DOS ªA°È¤¤Â_¡GAH=2/INT 21H

³o­Ó¤¤Â_ªA°Èµ{¦¡·|¦b¿Ã¹õ¤W¦L¥X¤@­Ó¦r¤¸¡A­n¦L¥Xªº¦r¤¸©Ò¥Nªíªº ASCII ½X©ñ¤J DL ¼È¦s¾¹¤¤¡A¦A¨Ï AH ³]¬°¤G¡A³Ì«á©I¥s INT 21H ´N¥i¥HÅý DOS ªA°È¤¤Â_À°§Ú­Ì¦L¥X¦r¤¸¨Ó¡C

DOS ´£¨Ñ¤F³\¦hªA°Èµ{¦¡¡A³o¨ÇªA°Èµ{¦¡¥u­n¨Æ¥ý³]¦n¸Ó¦³ªº¾A·í¼Æ­È¡A¤Î¸ÓªA°È»Ý­nªº¸ê®Æ¡A¦A©I¥s¤¤Â_ªA°Èµ{¦¡´N¥i¥H¤F¡A¹³³oùتº

        mov     ah,2
        int     21h

¬O¦L¥X¦r¤¸ªA°Èµ{¦¡¡A¦Ó²Ä¤@³¹ªº

        mov     ah,9
        int     21h

¬O¦L¥X¦r¦êªA°Èµ{¦¡¡C¥¦­Ì³£¬OÄÝ©ó DOS ´£¨ÑªºªA°Èµ{¦¡¡A¦Ó AH ¤ºªº¼Æ­È«hªí¥Ü­n¨Ï¥Î¨º¤@ºØªA°È¡A³o¨ÇªA°È«D±`¦h¥BÁcÂø¡A¥i¥H°Ñ¦Ò Ralf Brown's Interrupt List¡A³o¬Oºô»Úºô¸ô¤W³ÌÅv«Âªº¤åÄm¡C

·sªº«ü¥O¡GINC

INC «ü¥Oªº»yªk¬O

INC     ¼È¦s¾¹©ÎÅܼÆ

INC ·|¨Ï«á­±±µªº¼È¦s¾¹©ÎÅܼƪº¼Æ­È¼W¥[¤@¡A³o¼È¦s¾¹¥i¥H¬O¦UºØ³q¥Î¼È¦s¾¹ ( ¦p AX¡BAH¡BAL¡BBX¡BBH¡K¡K)¡A¤]¥i¥H¬O SI¡BDI¡BBP¡BSP¡C­nª`·Nªº¬O¡A¦pªG AL ¤wµ¥©ó 0FFH¡A¦A°õ¦æ

        inc     al

AL ·|Åܦ¨¹s¡C

·sªº«ü¥O¡GLOOP

³oµ{¦¡ªº¥DÅ鳡¤À¬O¤@­Ó LOOP °j°é¡CLOOP ªº»yªk¬O¡G

LOOP    ¼Ð°O

·í CPU °õ¦æ¨ì LOOP ®É¡ACPU ·|¨Ï CX ¤ºªº¼Æ­È´î 1¡A¦pªG´î¤@«á¡ACX ¤ºªº¼Æ­È¤£¬°¹s¡ACPU ·|¸õÅD¨ì LOOP ©Ò«ü©wªº¼Ð°O³BÄ~Äò°õ¦æ¡F¦pªG´î¤@«á¡ACX ªº¼Æ­ÈÅܬ°¹s¡A¨º»ò CPU ´N·|¸õ¨ì LOOP ¤U¤@¦æªº«ü¥O°õ¦æ¡C¦]¦¹¦pªG¦³¤@¬qµ{¦¡¥²¶·°õ¦æ¦n´X¦¸¡A´N¥i¥H¥ý§â¦¸¼Æ©ñ¦b CX ùØ¡AµM«á§â¨º¤@¬qµ{¦¡©ñ¦b¼Ð°O»P LOOP ¤§¶¡¡ACPU ´N¥i¥H·Ó§Ú­Ìªº³]­p°õ¦æ¤@©w¦¸¼Æ¡C¹³³o¼Ë¤l§Ú­Ì³]¦n¬Y¨Ç±ø¥ó¡A·í²Å¦X³o±ø¥ó®É¡Aµ{¦¡´N¦b¬Y¤@¬q¸¨­«½Æ°õ¦æª½¨ì¤£²Å¦X³o­Ó±ø¥ó¡A³oºØ¬yµ{ºÙ¬°°j°é¡C±z­n¤p¤ßªº¬O¡A¤£­n¨Ï±o¥Ã»·³£²Å¦X±ø¥ó¡A³o¼Ëµ{¦¡«K¤@ª½¦b°j°é¤¤°õ¦æ¡A¥Ã»·µLªk¸õ¥X³o­Ó°j°é¡A©ó¬O´N·í¾÷¤F¡C¦b LOOP ªº¨Ò¤l¡ACX ªº§@¥Î¦n¤ñ¬O­p¼Æ¾¹¡A¦]¦¹ CX ¤]¥s­p¼Æ¼È¦s¾¹¡A­^¤å¬° counter register¡C

µ{¦¡²Ä 6 ¦æ¡A¤p¤ì°¸¥ý§â 256 ¦s¤J CX ¤¤ ( ¦]¬°¦³ 256 ­Ó ASCII ¦r¤¸ )¡AµM«á²Ä¤C¦æ§â DL ³]¬°¹s¡A³o¬O²Ä¤@­Ó­n¦L¥X¨Óªº¦r¤¸¡C±µ¤U¨Óµ{¦¡´N¶i¤J°j°é¤F¡A³o­Ó°j°é±N³sÄò°õ¦æ 256 ¦¸¡A¨C¦¸¥u¦³¦L¥X¨Óªº¦r¤¸¤£¦P¡A¥Ñ¹s³vº¥¼W¥[¨ì 255¡A¨ä¾l³¡¤À¬Ò¬Û¦P¡A©Ò¥H¦b¦L¥X¦r¤¸¤§«á¨Ï DL ¼W¥[¤@¡A¦AÀˬd¬O§_¸ÓÂ÷¶}°j°é¡AÁÙ¬O­n¦^¨ì°j°éªº¶}ÀY¡C

§ó¸Ô²Óªº»¡¡A²Ä¤@¦¸ DL ¬° 0¡A´N¦L¥X ASCII ½X¬O 0 ªº¦r¤¸¡A³o¬O¤@­ÓªÅ¦r¤¸ ( null )¡AµM«áµ{¦¡°õ¦æ¨ì

next:   mov     ah,2     ;08 Loop °j°é¶}©l³B ¢w¢{
        int     21h      ;09                   ¢x

®É¡A¦L¥XªÅ¦r¤¸¡A±µ¤U¨Ó DL ·|¼W¥[¤@¡AµM«á°õ¦æ¨ì LOOP ®É¡ACPU Àˬd CX ¬O§_¬°¹s¡A¦¹¨è¬O²Ä¤@¦¸°õ¦æ¡ACX ¤´¬O 256¡A©Ò¥H CPU ¨Ï CX ´î¤Ö¤@¡A¦A¸õ¨ì next ¼Ð°O³B°õ¦æ¡C³o®É DL ¤w¸g¬O 1 ¤F¡A©ó¬O´N¦L¥X¤@­Ó¯ºÁy ( ¦]¬°¯ºÁyªº ASCII ½X§Y¬° 1¡A°Ñ¦Òªþ¿ý¥| )¡A±µµÛ¤S¬O¦A¨Ï DL ¥[¤@¡A°õ¦æ LOOP¡AÀˬd CX ¬O§_¬°¹s¡K¡K¡C³Ì«á¡A¸Û¦p¤p¤ì°¸©Ò»¡ªº¡A1 ¥Nªí¯ºÁy³o­Ó¦r¡A65 ¥Nªí¡ua¡v³o­Ó¦r¡A0¡ã255 ¦@ 256 ­Ó¼Æ¦r¡A¦U¥Nªí¤£¦Pªº¦r¤¸¡C


µ²½×

¦b³o¤@³¹³Ì«á°µ¤@¨Çµ²½×¡G

³Ì«á¡A§A¥i¯à·|¹ï¥»³¹ªºµ{¦¡¤£º¡¡A§Æ±æ¯à¥[¥H§ï¨}¡A³Ì¦n¯à¶¶«K¦L¥X ASCII ½X¤Î¨ä©Ò¥Nªíªº²Å¸¹©Î¤å¦r¡A¤U¤@³¹§Ú­Ì´N°Q½×¦p¦ó¦L¥X¼Æ¦r¡C


µù¤@¡G¦]¬°¥u¯à¥Î 0 ©M 1 ªí¥Ü¡A©Ò¥H·í 0000 0001 ¦A¼W¥[¤@®É´Nµo¥Í¶i¦ì¤F¡AÅܦ¨ 0000 0010¡A³o´N¬O¤G¶i¦ì¼Æ¡C´N¦n¹³§Ú­Ì©Ò¼ô±xªº¤Q¶i¦ì¤@¼Ë¡A¤Q¶i¦ì¯à¥Î 0¡B1¡B2¡B3¡K¡K8¡B9 µ¥¤Q­Óªü©Ô§B¼Æ¦rªí¥Ü¡A©Ò¥H·í 9 ¦A¼W¥[¤@µo¥Í¶i¦ì®É¡A´NÅܦ¨ 10¡C
¦P²z¤Q¤»¶i¦ì¥Î¤Q­Óªü©Ô§B¼Æ¦rªí¥Ü¥~¡AÁ٥ΠA ªí¥Ü 10¡AB ªí¥Ü 11¡AC ªí¥Ü 12 µ¥µ¥¡A¤@ª½¨ì F ªí¥Ü 15¡A·í F ¦A¼W¥[¤@®É´NÅܦ¨ 10¡A¦¹®É¬Oªí¥Ü¤Q¶i¦ìªº 16¡C


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