Ch 06¡@¿é¤J¤Q¤»¶i¦ì¼Æ

¤p¤ì°¸¥´ºâ¦b¥»³¹ùØ¡A»¡©ú¦p¦ó¥ÑÁä½L¿é¤Jªø¤@­Ó¦r²Õªº¤Q¤»¶i¦ì¼Æ­È¡AµM«á§â¥¦¦s¦b¤@­ÓÅܼÆùØ¡C¤@­Ó¦r²Õªø«×¬O¤Q¤»¦ì¤¸¡A©Ò¥H³o­Ó¼Æ³Ì¤j¬O 0FFFFH¡A¬Û·í©ó¤Q¶i¦ìªº 65535¡C


­ì²z

¤p¤ì°¸¥Î DOS ªA°Èµ{¦¡¡AAH¡×01/INT 21H¡A¿é¤J¦r¤¸¡C·í¨Ï¥ÎªÌ¿é¤J¤@­ÓÁä®É¡A©Ò«ö¤UÁ䪺 ASCII ½X·|¦s©ó AL ùØ¡C¨Ò¦p¡A¦bÁä½L¤Wªº¡uCaps Lock¡v¿O¥¼«G®É¡A«ö¤U¡uA¡vÁä¡AAL ùتº¼Æ­È¬O 61H¡A³o¬O­^¤å¦r¥À¡ua¡vªº ASCII ½X¡C¦pªG¨Ï¥ÎªÌ«ö¤U Shift ¤£©ñ¡A¦A«ö¡uA¡vÁä¡A¨º AL ùتº¼Æ­È¬O 41H¡A³o¬O­^¤å¦r¥Àªº¡uA¡vªº ASCII ½X¡C

¤Q¤»¶i¦ì¼Æ­È¬O¥H 0¡ã9 ¤Î A¡ãF ªí¥Ü¡A¦]¦¹±o¨ìÁä½L¤Wªº ASCII ½X«á¡A­º¥ý­nÀˬdªº¬O¨Ï¥ÎªÌ©Ò«ö¤Uªº¦r¤¸¬O§_¦b 30H¡ã39H ©Î 41H¡ã46H ©Î 61H¡ã66H ¤§¶¡¡C³o¤T­Ó°Ï¶¡©Ò¥Nªíªº¦r¤¸¡A¨Ì§Ç¬O 0¡ã9¡BA¡ãF ¥H¤Î a¡ãf¡A¦pªG¤£¬O³o¨Ç¦r¤¸¡Aªí¥Ü¨Ï¥ÎªÌ¿é¤J¿ù»~¡A¦L¥X¿ù»~°T®§«áÂ÷¶}µ{¦¡¡C

¦pªG¿é¤J¥¿½Tªº¦r¤¸¡A´N±o³B²z³o¨Ç¦r¤¸¡A¨Ï¥¦Åܦ¨¤@¦ì¼Æ¦r¡C¥ý»¡»¡¤j®a¤ñ¸û²M·¡ªº¤Q¶i¦ì¼Æ­È¡CÀH«KÁ|­Ó¤Q¶i¦ì¼Æ¡A¨Ò¦p 9988 ¦n¤F¡A§Ú­Ì³£ª¾¹D³o¨â­Ó 9 ©Ò¥Nªíªº·N¸q¤£¦P¡A¤À§O¬O 9000 »P 900¡F¨â­Ó 8 ¤]¤£¦P¡A¤À§O¬O 80 »P 8¡C¨ºµª®×«Ü©úÅã¤F 9988¡×9¡Ñ103¡Ï9¡Ñ102¡Ï8¡Ñ101¡Ï8¡Ñ100¡A³o¬O¤Q¶i¦ì¡A¨C­Ó¦ì¼Æ³£­n¦A­¼¤W 10 ªº¾­¤è¡C

¦P¼Ëªº¹D²z¡A¤Q¤»¶i¦ìªº¨C­Ó¦ì¼Æ¡A¤]­n­¼¤W 16 ªº¾­¤è¡C¤p¤ì°¸ªº·Qªk¬O·í¨Ï¥ÎªÌ¿é¤J¥¿½Tªº¦r¤¸«á¡A­n¥ý§â¦b 30H¡ã39H ªºªü©Ô§B¼Æ¦rÅܦ¨ 0H¡ã9H ªº¤@­Ó¦ì¼Æ¡A©Î¬O§â 41H¡ã46H ªº¤j¼g­^¤å¦r¥ÀÅܦ¨ 0AH¡ã0FH ªº¤@­Ó¦ì¼Æ¡A§â 61H¡ã66H ªº¤p¼g­^¤å¦r¥ÀÅܦ¨ 0AH¡ã0FH ªº¤@­Ó¦ì¼Æ¡C

¤p¤ì°¸³]©w¤@­ÓÅܼơA¥Î¨ÓÀx¦s³Ì«á¿é¤Jªº¤Q¤»¶i¦ì¼Æ­È¡C¤@¶}©l¥ýÅý³o­ÓÅܼƳ]¬° 0¡A·í¨Ï¥ÎªÌ¿é¤J²Ä¤@­Ó¦ì¼Æ®É¡A¨Ò¦p¨Ï¥ÎªÌ«ö¤U¡uA¡vÁä¡A¥ý¥Î«e¤@¬qªº¤èªk§â¿é¤Jªº¦r¤¸Åܦ¨ 0AH¡AµM«á¦A§â­è­è©ÒÁ¿ªºÅܼƭ¼¥H 10H¡A¦]¬°¦¹ÅܼƬ°¹s¡A©Ò¥H­¼¿nÁÙ¬O¹s¡A¦A§â·s³B²z¹Lªº¨º¤@­Ó¦ì¼Æ¥[¨ìÅܼÆùØ¡A³o¼Ë¸ÓÅܼƴNÅܦ¨ 0AH ¤F¡C²Ä¤G¦¸¡A°²¦p¨Ï¥ÎªÌ«ö¤U¡u9¡vÁä¡A¨º»ò³B²z³o­Ó«öÁä«áÀ³¸ÓÅܦ¨ 09H¡A¦A§âÅܼƭ¼¥H 10H¡A¸ÓÅܼƴNÅܦ¨ 0A0H¡A¦A¥[¤W 9¡A¸ÓÅܼƴNÅܦ¨ 0A9H ¤F¡C

¨Ì¦¹Ãþ±À¡A¨C¦¸¨Ï¥ÎªÌ«ö¤U¤@Áä¡A´N·|¨Ï¸ÓÅܼƭ¼¥H 10H¡A¦A¥[¤W³B²z¹Lªº«öÁä¼Æ­È ( ¤£ºÞ¨Ï¥ÎªÌ«ö­þ¤@­ÓÁä¡A³o­Ó¼Æ­È¦b 0¡ã0FH ½d³ò¤º )¡C³o¼Ë³sÄò¥|¦¸¡A´N¯à¦bÅܼÆùبú±o¨Ï¥ÎªÌ¿é¤Jªº¤Q¤»¶i¦ì¼Æ­È¤F¡C

©³¤U¨Ó»¡»¡·|¥Î¨ìªº x86 «ü¥O¡C


x86 «ü¥O¡GSHL/SAL »P SHR¡BSAR

SHL «ü¥Oªº»yªk¦p¤U¡G

SHL     ¥Øªº¹Bºâ¤¸,1        ¦¡(1)
SHL     ¥Øªº¹Bºâ¤¸,CL       ¦¡(2)
SHL     ¥Øªº¹Bºâ¤¸,¥ß§Y­È   ¦¡(3)

SHL «ü¥O¬O¡ushift logical left¡vªº·N«ä¡A¬O«ü¥Øªº¹Bºâ¤¸¤ºªº¨C­Ó¦ì¤¸¦V¥ª²¾¦ì¼Æ­Ó¦ì¤¸¡A¦pªG¥u²¾¤@­Ó¦ì¤¸¡A´N¥Î¦¡ (1)¡F¦pªG¤@¦¸­n²¾¦n´X­Ó¦ì¤¸¡A¥Î¦¡ (2)¡A§â­n²¾¦ìªº¦ì¤¸¼Æ¨Æ¥ý¦s¤J CL ùØ­±¡C8086/8088 CPU ¥u¯à¥Î³o¨âºØ¤èªk¡A80286 ¤Î§ó°ª¶¥ªº CPU ¥i¥H¥Î¦¡ (3)¡A­n²¾¦ìªº¦ì¤¸¼Æª½±µ¥H¥ß§Y­Èªí¥Ü¡C©³¤UÁ|­Ó¨Ò¤l»¡©ú¡C

¥k¹Ï¬O»¡©ú AX ¼È¦s¾¹ùتº¨C­Ó¦ì¤¸¦V¥ª²¾¤@¦ìªº±¡§Î¡CAX ¼È¦s¾¹¦³¤Q¤»¦ì¤¸¡A³Ì°ª¦ì¤¸¬O²Ä 15 ¦ì¤¸¡A³Ì§C¦ì¤¸¬O²Ä 0 ¦ì¤¸¡C·í°õ¦æ¡uSHL AX,1¡v«ü¥O®É¡A²Ä 15 ¦ì¤¸·|³Q²¾¦ÜºX¼Ð¼È¦s¾¹ ( carry flag¡A²ºÙ CF ) ùØ¡AµM«á²Ä 14 ¦ì¤¸²¾¦Ü²Ä 15 ¦ì¤¸¡A¨ä¾l¨Ì¦¹Ãþ±À¡K¡K²Ä¹s¦ì¤¸²¾¦Ü²Ä¤@¦ì¤¸¡A¦Ó²Ä¹s¦ì¤¸«h¶ñ¤J 0 ( ¥k¹Ï¤¤¡A¥H¯»¬õ¦âªº 0 ªí¥Ü )¡CSHL ©M SAL ( shift arithmetic left ) ªº¾÷±ñ½X¤@¼Ò¤@¼Ëªº¡A©Ò¥H¬O¬Û¦Pªº«ü¥O¡A¥¦­Ì¤£¬O±ÛÂà¡A©M ROL ¤£¦P¡C

SHL ¦³¤@¶µ¯S©Ê¡A«D±`¦n¥Î¡A¨º´N¬O¥i¥H·í°µ­¼¥H 2 ªº¾­¤è¡C¨Ò¦p¡uSHL AX,1¡v¬Û·í©ó§â AX ­¼¥H 2¡A¡uSHL AX,2¡v¬Û·í©ó­¼¥H 22¡A¡uSHL AX,2¡v¬Û·í©ó­¼¥H 23¡K¡K¥H¦¹Ãþ±À¡CÁÙ¬O¥H¤Q¶i¦ì¼Æ­È¨Ó¤ñ³ë¦n¤F¡A12 ¦V¥ª²¾²¾¦ì¡A¤£´NÅÜ 120¡A¬Û·í©ó­¼¥H 10¡F¦V¥ª²¾¨â¦ì¡A´NÅܦ¨ 1200¡A¬Û·í©ó¦¨ 102¡C

SHR ¬OÅÞ¿è¥k²¾ ( shift logical right ) ªº·N«ä¡A¥ç§Y§â¥Øªº¹Bºâ¤¸¤¤ªº¨C­Ó¦ì¤¸¡A¦V¥k²¾¼Æ­Ó¦ì¤¸¡C¥u¦³²¾¦ì¤è¦V¦V¥k¥H¤Î¬Û·í©ó°£¥H 2 ªº¾­¤è¡A³o¨âÂI»P SHL ¤£¦P¡A¨ä¥L¯S©Ê³£¤@¼Ë¡A¥]§t³Ì°ª¦ì¤¸·|¸É¤W 0¡C

¦ý¬O SAR ( shift arithmetic right¡Aºâ³N¥k²¾ ) «o»P SHR ¤£¦P¡ASAR «ü¥O¦b²¾¦ìªº®É­Ô¡A³Ì°ª¦ì¤¸«O«ù­ì¨Óªº­È¡C¨Ò¦p AL ¬°¡u1000 1100¡v¡A°õ¦æ¡uSAR AL,1¡v«á¡AAL Åܦ¨¡u1100 0110¡v¡A¥B¶i¦ìºX¼Ð³Q²M°£¡C¦pªG AL ¬°¡u1000 1100¡v¡A°õ¦æ¡uSAR AL,2¡v«á¡AAL Åܬ°¡u1110 0011¡v¡A¶i¦ìºX¼Ð³Q²M°£¡C

SHL¡BSAL¡BSHR¡BSAR ¥|«ü¥O°õ¦æ«á¡A·|¼vÅT¦h­ÓºX¼Ð¡A¥]§t¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð¡B¹s­ÈºX¼Ð¡B²Å¸¹ºX¼Ð¡B·¸¦ìºX¼Ð¤­­ÓºX¼Ð¡C


x86 «ü¥O¡GSUB

SUB «ü¥O¬O¦³¸¹¼Æªº´îªk¹Bºâ«ü¥O¡A»yªk¬O

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

SUB «ü¥O·|§â¥Øªº¹Bºâ¤¸´î±¼¨Ó·½¹Bºâ¤¸¤§«á¡A¦A§â®t¦s¤J¥Øªº¹Bºâ¤¸ùØ­±¡A¦]¦¹¡A¥Øªº¹Bºâ¤¸¤§­È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§­È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©ÎÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƩΥߧY­È¡C¦ý¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¥i¦P®É¬°ÅܼơA¥B¨âªÌªø«×­n¬Û¦P¡C

SUB «ü¥O·|¼vÅT³\¦hºX¼Ð¡A¥]§t¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð¡B»²§U¶i¦ìºX¼Ð¡B¹s­ÈºX¼Ð¡B²Å¸¹ºX¼Ð¡B·¸¦ìºX¼Ð¤»­ÓºX¼Ð¡C


INPUT1.ASM ­ì©l½X

©³¤U´N¬O INPUT1.ASM¡A¥¦¯àÅý¨Ï¥ÎªÌ¿é¤J¤@­Ó¦r²Õªø«×ªº¤Q¤»¶i¦ì¼Æ¡AµM«á§â¥¦¦s©ó°O¾ÐÅéùØ¡C

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
37
38
39
40
41
42
43
44
45
46
47
48
49
;¥ÑÁä½L¿é¤J¤@­Ó¦r²Õªøªº¤Q¤»¶i¦ì¼Æ¡AµM«á¦s¤JvalueÅܼÆùØ¡C
.MODEL          TINY
.386
;*******************************************************************************
.CODE
ORG             100h
;-------------------------------------------------------------------------------
start:          jmp     begin
value           DW      ?
error_message   DB      0dh,0ah,"Please input 0~9 or A~F.$"
begin:          mov     cx,4            ;¤@­Ó¦r²Õªº¤Q¤»¶i¦ì¼Æ¦³¥|¦ì
                mov     value,0         ;¨ÏvalueÂk¹s

next:           mov     ah,1            ;DOSªA°Èµ{¦¡¡AÁä½L¿é¤J¦r¤¸
                int     21h             ;AL¡×¿é¤J¦r¤¸ªºASCII½X
                cmp     al,"0"          ;ÀˬdAL¬O§_¦b30H¡ã39H¤§¶¡
                jb      illegal         ;­YAL¤ñ30H¤p¡A¨Ï¥ÎªÌ¿é¤J¤£¥¿½Tªº¦r¤¸
                cmp     al,"9"          ;­YAL¦b30H¡ã39H¤§¶¡¡A¸õ¨ìarabic_number³B
                jbe     arabic_number

                cmp     al,"A"          ;ÀˬdAL¬O§_¦b"A"¡ã"F"¤§¶¡
                jb      illegal         ;­YAL¤ñ"A"¤p¡A¨Ï¥ÎªÌ¿é¤J¤£¥¿½Tªº¦r¤¸
                cmp     al,"F"          ;­YAL¦b"A"¡ã"F"¤§¶¡¡A¸õ¨ìuppercase³B
                jbe     uppercase

                cmp     al,"a"          ;ÀˬdAL¬O§_¦b"a"¡ã"f"¤§¶¡
                jb      illegal         ;­YAL¤ñ"a"¤p¡A¨Ï¥ÎªÌ¿é¤J¤£¥¿½Tªº¦r¤¸
                cmp     al,"f"          ;­YAL¦b"A"¡ã"F"¤§¶¡¡A¸õ¨ìlowercase³B
                jbe     lowercase

illegal:        mov     ah,9
                mov     dx,OFFSET error_message
                int     21h             ;¨Ï¥ÎªÌ¿é¤J¤£¦Xªkªº¦r¤¸
                jmp     quit            ;¦L¥X¿ù»~°T®§¤§«áÂ÷¶}µ{¦¡

arabic_number:  sub     al,"0"          ;¨Ïªü©Ô§B¼Æ¦r¦b0H¡ã9H¤§¶¡
                jmp     shift

uppercase:      sub     al,37h          ;¨Ï¤j¼g­^¤å¦r¥À¦b0AH¡ã0FH¤§¶¡
                jmp     shift

lowercase:      sub     al,57h          ;¨Ï¤p¼g­^¤å¦r¥À¦b0AH¡ã0FH¤§¶¡
shift:          shl     value,4         ;value¡×value¡Ñ10H
                cbw                     ;¨ÏAHÅܬ°0
                add     value,ax        ;value¡×value¡ÏAX
                loop    next
quit:           int     20h
;*******************************************************************************
END             start

²ÕĶ¤Î³sµ²¤è¦¡¸ò¥H«e¤@¼Ë¡A¦b¡uMS-DOS 6.20¡vµêÀÀ¾÷¾¹¤¤¡A¥ý¤Á´«¤l¥Ø¿ý¬°¡uE:\DOS\INPUT¡v«á¡A¦A¿é¤J¡uml input1.asm¡v§Y¥i¡C©³¤U¤p¤ì°¸¸Ñ»¡­ì©lµ{¦¡ªº²Ä 14¡ã29 ¦æ¡A³o¬qµ{¦¡³B²z¨Ï¥ÎªÌ©Ò«ö¤UªºÁä¬O§_¬°¦Xªkªº¤Q¤»¶i¦ì¦r¤¸¡A¦pªG¤£¬O´N¸õ¨ì illegal ¼Ð°O¡A¦L¥X¿ù»~°T®§«áÂ÷¶}µ{¦¡¡F¦pªG¬O¡A´N­n¨Ì¾Ú¨Ï¥ÎªÌ¿é¤Jªº¬Oªü©Ô§B¼Æ¦r¡AÁÙ¬O¤j¼g­^¤å¦r¥À¡AÁÙ¬O¤p¼g­^¤å¦r¥À¥h­pºâ¡A¨Ï«öÁä©Ò¥Nªíªº¦r¤¸¸¨¦b 0¡ã0FH ¤§¶¡¡C

¬d ASCII ªí¡A´N¥i¥Hª¾¹D¡Aªü©Ô§B¼Æ¦r¡B¤j¼g­^¤å¦r¥À¡B¤p¼g­^¤å¦r¥À¨Ã¨S¦³³sµÛ±Æ¦C¡A¦p¤Uªí¡A¥Î±a¦³©³¦âªº°Ï¶ôªí¥Ü¡G

¦r¤¸ASCII ½X¦r¤¸ASCII ½X¦r¤¸ASCII ½X¦r¤¸ASCII ½X¦r¤¸ASCII ½X
030H3CH48H54H60H
131H3DH49H55Ha61H
232H3EH4AH56Hb62H
333H3FH4BH57Hc63H
434H40H4CH58Hd64H
535HA41H4DH59He65H
636HB42H4EH5AHf66H
737HC43H4FH5BH67H
838HD44H50H5CH68H
939HE45H51H5DH69H
3AHF46H52H5EH6AH
3BH47H53H5FH6BH

¤p¤ì°¸ªº°µªk¬O³Ì¥ýÀˬd¬O§_¬°ªü©Ô§B¼Æ¦r¡Aªü©Ô§B¼Æ¦rªº ASCII ½X¦b 30H¡ã39H ¤§¶¡¡A¦]¦¹¤p©ó 30H ªº´N¤£¬Oªü©Ô§B¼Æ¦r¡A¤]¤£¬O­^¤å¦r¥À¡Aªí¥Ü¨Ï¥ÎªÌ¿é¤Jªº¤£¬O¤Q¤»¶i¦ì¸Ó¦³ªº²Å¸¹¡A´N¸õ¨ì³B²z¤£¦Xªk¦r¤¸³B¡A¤]´N¬O illegal ³B¡C³q¹L¤j©ó©Îµ¥©ó 30H Àˬd«á¡A¦AÀˬd¦³¨S¦³¶W¹L 39H¡A¦pªG¨S¦³ªí¥Ü¬°ªü©Ô§B¼Æ¦r¡A¨ì arabic_number ³B¡AÅý AL ´î¥h 30H¡A´N¯à¨Ï 30H¡ã39H ªº ASCII ½XÅܦ¨ 0H¡ã9H ªº¼Æ­È¡A¦s©ó AL ùØ­±¡C

¦pªG¶W¹L 39H¡A¨º»ò¥i¯à¬O­^¤å¦r¥À¡C¦ý¤j¼g­^¤å¦r¥À±q 41H ¶}©l¡A©Ò¥HÀˬd¬O§_¤p©ó 41H¡A¦pªG¤p©óªí¥Ü¨Ï¥ÎªÌ¿é¤J¿ù»~¡A´N¸õ¨ì illegal ³B¡C¦pªG¤j©ó©Îµ¥©ó 41H¡A¦AÀˬd¬O§_¶W¹L 46H¡A¦pªG¨S¦³ªí¥Ü¬° A¡ãF ¤§¶¡¡C°²¦p¨Ï¥ÎªÌ«ö¤Uªº¬O¡uA¡vÁä¡AAL ·|¶Ç¦^ 41H ( ¤Q¶i¦ìªº 65 )¡A§Ú­ÌÀ³¸Ó­n§â¥¦Åܦ¨¤Q¤»¶i¦ìªº 0AH ( ¤Q¶i¦ìªº 10 )¡A©Ò¥H­n´î¥h 55 ( ¤Q¶i¦ìªº 37H )¡C³o´N¬O²Ä 39 ¦æ¡A¬°¤°»ò­n´î¥h 37H ªº­ì¦]¡C

¨ä¾lªº´N¬OÀˬd¬O§_¬°¤p¼gªº­^¤å¦r¥À¡A¡ua¡v¡ã¡uf¡v¡A¹Lµ{´N¤£­«½Æ¤F¡C

±µ¤U¨Óªº¬O²Ä 43¡ã45 ¦æ¡A³o¤T¦æµ{¦¡¡A´N¬OÅý­ì¥ýªºÅܼơAvalue¡A­¼¥H 10H¡A¦A¥[¤W AL ùØ­±ªº¼Æ¡CAL ªº¼Æ¬O®Ú¾Ú¨Ï¥ÎªÌ«ö¤Uªº«öÁä³B²z«á±o¨ìªº¡C³o¬q«e­±¤w¸g´£¹L¤F¡A¤]¤£¦A­«½Æ¡C¦ý¦³­Ó«ü¥O¡ACBW ­È±o¤@´£¡A¤£¹L¦bÁ¿ CBW ¤§«e¡A¥ý­nª¾¹D¤°»ò¬O¦³¸¹¼Æ¡A½Ð¬Ýµù¤@¡C


x86 «ü¥O¡GCBW¡BCWD¡BCDQ

CBW ¬O¡uconvert byte to word¡vªº·N«ä¡A¥¦¬O§ïÅܸê®ÆÃþ«¬ªº«ü¥O¡A¨ä»yªk¬O

CBW

ªí­±¤W CBW ¨S¦³¹Bºâ¤¸¡A¦ý¨ä¹ê¬O¦³­ÓÁôÂ꺹Bºâ¤¸¡A¨º´N¬O AX ¼È¦s¾¹¡CCBW ·|§â¦s©ó AL ªº¼Æ­È¡AÅܦ¨¦s©ó AX¡C¥ç§Y¡A§â¦ì¤¸²Õªº¸ê®ÆÃþ«¬¡A¥H¦³¸¹¼Æªº¤è¦¡Åܦ¨¦r²Õªº¸ê®ÆÃþ«¬¡C

­Y AL ªº²Ä 7 ¦ì¤¸¬° 0¡A°õ¦æ§¹ CBW «á¡AAH ¤º©Ò¦³¦ì¤¸³£Åܬ° 0¡F­Y AL ªº²Ä 7 ¦ì¤¸¬° 1¡A°õ¦æ§¹«á¡AAH ¤º©Ò¦³¦ì¤¸Åܬ° 1¡C¤]´N¬O»¡¡ACBW ·|§â AL ¤ºªº²Å¸¹¡A©µ¦ù¨ì AH ¤º¡C³o¼Ë´N¯à§â AL ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü AX¡C

¨Ò¦p¤U¹Ï AX ¬° 0FF65H¡AAL ¬° 65H¡A²Ä¤C¦ì¤¸¬O¹s¡C·í°õ¦æ CBW «á¡AAL ¤Wªº²Ä¤C¦ì¤¸ÂX¥R¨ì AH ¼È¦s¾¹¡A¨Ï AH ¤Wªº¨C­Ó¦ì¤¸³£Åܦ¨ 0¡C

¥t¥~¦³¨â­Ó«ü¥O¡ACWD¡BCDQ¡A©M CBW «ÜÃþ¦ü¡CCWD ¬O¡uconvert word to double word¡vªº·N«ä¡A¥¦§â AX ¬Ý¦¨¦³¸¹¼Æ¡A±N¨ä²Ä 15 ¦ì¤¸ªº²Å¸¹ÂX¥R¦Ü DX¡A¥ç§Y§â AX ÂX¥R¦Ü DX:AX¡CCDQ ¬O¡uconvert double word to quad word¡v§â EAX ¬Ý¦¨¦³¸¹¼Æ¡A±N¨ä²Ä 31 ¦ì¤¸ªº²Å¸¹ÂX¥R¦Ü EDX¡A¥ç§Y§â EAX ÂX¥R¦¨ EDX:EAX¡C

¦b INPUT1.ASM ªº²Ä 44 ¦æ¡A¨Ï¥ÎªÌ¿é¤J¦r¤¸ªº ASCII ½X¡A¤w¸g³Q²Ä 36¡ã42 ¦æªºµ{¦¡½Õ¾ã¹L­n¡A¨Ï¨ä½d³ò¸¨¦b 0¡ã9H ¤§¶¡¡A¨Ã¦s©ó AL ùØ¡C²Ä 43 ¦æ¡A¥H¨Ï­ì¥ýªºÅܼƭ¼¥H 10H ¤F¡A±µ¤U¨Ó­n§â AL ¥[¨ìÅܼÆùØ¡C¦ý¦]¬°ÅܼƬO¤Q¤»¦ì¤¸ªø¡AAL ¬O¤K¦ì¤¸ªø¡Aªø«×¨Ã¤£¬Ûµ¥¡A¦]¦¹­n§â AH Åܦ¨¹s¡C¦Ó§Ú­Ì¯à°÷½T©w¡AAL ¥²¬°¥¿¼Æ¡A¦]¨ä½d³ò¥²¦b 0¡ã9H ¤§¶¡¡A¬G¥Î CBW «ü¥O¡C·íµM¡A¨Ï¥Î¡uMOV AH,0¡v¤]¬O¥i¥Hªº¡C


¨Ï¥Î MASM 6.x °ª¯Å»yªk¡GINPUT2.ASM

·L³n¦è¤¸ 1992 ¦~µo°âªº MASM 6.x ª©¡A·s¼W¤F³\¦h¥[±j°²«ü¥O¡A¥]§t¤FÃþ¦ü°ª¶¥µ{¦¡»y¨¥ªº±ø¥ó±±¨î¬yµ{«ü¥O ( conditional control flow )¡C³o¨Ç«ü¥O¥]§t¤F©³¤U´XºØ¡AµM«á¡A¤p¤ì°¸·|§Q¥Î©³¤Uªº±ø¥ó±±¨î¬yµ{§ï¼g INPUT1.ASM¡C


.IF/.ESLEIF/.ELSE/.ENDIF

³Ì²³æªº±¡§Î¬O¡J

.IF     §PÂ_¦¡
        µ{¦¡¤@
.ELSE
        µ{¦¡¤G
.ENDIF

¤W­±ªº¼gªk¡AÀ³¸Ó«Ü®e©ö¤F¸Ñ¡C·í§PÂ_¦¡¬°¡u¯u¡v®É°õ¦æµ{¦¡¤@ùتº«ü¥O¡F¬°¡u°°¡v®É´N°õ¦æµ{¦¡¤Gùتº«ü¥O¡C°²¦p¬°¡u°°¡v®É¤£¥Î°õ¦æ¥ô¦ó«ü¥O¡A«h .ELSE ¥H¤Îµ{¦¡¤G¥i¥H§R°£¡A´NÅܦ¨©³¤Uªº¼Ë¤l¡G

.IF     §PÂ_¦¡
        µ{¦¡¤ù¬q
.ENDIF

©³¤U§Ú­Ì¬Ý¤@­Ó¨Ò¤l¡A¨Ó»¡©ú²ÕĶ¾¹¬O¦p¦ó§â³o¨Ç°²«ü¥OÂà´«¦¨¾÷±ñ½Xªº¡C¨Ò¦p¡A¤U­±¥ªÃ䪺¨Ò¤l¬O¡u¦pªG AX µ¥©ó BX¡A´N¦b¿Ã¹õ¤W¦L¥X¤j¼gªº­^¤å¦r¥À A¡F§_«h¦L¥X¦ì§} 200H ªº¦r¦ê¡v( ³oùتºµ¥©ó¡A¥²¶·¥Î¡u==¡v)¡G

.IF AX==BX
        MOV     DL,"A"
        MOV     AH,2
        INT     21H
.ELSE
        MOV     DX,200H
        MOV     AH,9
        INT     21H
.ENDIF
        INC     CX
10B8:0100 3BC3          CMP	AX,BX
10B8:0102 7508          JNZ	010C
10B8:0104 B241          MOV	DL,41
10B8:0106 B402          MOV	AH,02
10B8:0108 CD21          INT	21
10B8:010A EB07          JMP	0113
10B8:010C BA0002        MOV	DX,0200
10B8:010F B409          MOV	AH,09
10B8:0111 CD21          INT	21
10B8:0113 41            INC	CX

¸g¹L²ÕĶ«áªºµ²ªG¦b¤W­±¥k¥bÃä¡C§A¥i¥H¬Ý¨ì¡A¡u.IF/ELSE/ENDIF¡v¤´µM¬O¥Î CMP¡BJNZ¡BJMP ³o¨Ç x86 «ü¥O¨Ó§@ÅÞ¿è§PÂ_¤Î¸õÅD¡C¦]¦¹³o¨Ç«ü¥Oªº­­¨î ( ¨Ò¦p JNZ ¸õÅD¶ZÂ÷¥u¯à¦b¡Ð128¡ã127 ¤§¶¡ ) ¡A¤]´N¬O¡u.IF/ELSE/ENDIF¡vªº­­¨î¡CÁöµM¦p¦¹¡A¨Ï¥Î³o¨Ç°²«ü¥O¡A¥i¥HÅýµ{¦¡¬yµ{Åܱo²M·¡©ú¥Õ¡A¤è«K©ó¾\Ū­×§ï¡C¦]¦¹¡A¦pªG±z¨Ï¥Î MASM 6.x ª©¥»ªº¸Ü¡A«Øij¥i¥H¾¨¶q¥Î³oºØ°²«ü¥O¡C

¦]¬°¡u.IF/.ESLEIF/.ELSE/.ENDIF¡v¬O¥Ñ²ÕĶ¾¹±N¤§¡u½Ķ¡v¦¨ 80x86 «ü¥O¶°ªº¬Y¤@¨Ç«ü¥O¡A¦A±N¤§¬Û¤¬·f°t¡A©Ò¥H¡u.IF/.ESLEIF/.ELSE/.ENDIF¡v¥u¬O°²«ü¥O¡C

§PÂ_¦¡¤]¥s±ø¥ó ( condition )¡A¨ä¼Ò¼Ë¤j­P¥i¤À¬°¥|ºØ¡J

①¡G¥i¥H¬O¼Æ­ÈÃö«Y¦¡¡A¨ä§Î¦¡¬°¡G

¹Bºâ¤¸1 ¤ñ¸û¹Bºâ¤l ¹Bºâ¤¸2

¹Bºâ¤¸1 ¥i¥H¬°¼È¦s¾¹©ÎÅܼơA¹Bºâ¤¸2 ¥i¥H¬O¼È¦s¾¹¡BÅܼƩΥߧY­È¡A¦ý¤£¯à¦P®É¬°ÅܼơA³o¬O¦]¬°¦b x86 «ü¥OùØ¡A¥i¥H¦³¡uCMP AX,BX¡v¡A¦ý¨S¦³¤ñ¸û¨â­ÓÅܼƪº«ü¥O¡C¨Ò¦p¤W­±ªº¨Ò¤l¡A¡u.IF AX==BX¡v¤¤¡A¡uAX==BX¡v´N¬O§PÂ_¦¡¡AAX¡BBX ¬O¨â­Ó¹Bºâ¤¸¡A¦Ó¡u==¡v¬O¤ñ¸û¹Bºâ¤l¡C±`¥Îªº¤ñ¸û¹Bºâ¤l¡A¨£¤Uªí¡G

¤ñ¸û¹Bºâ¤l·N¸q¤ñ¸û¹Bºâ¤l·N¸q¤ñ¸û¹Bºâ¤l·N¸q
==µ¥©ó!=¤£µ¥©ó>¤j©ó
<¤p©ó>=¤j©ó©Îµ¥©ó<=¤p©ó©Îµ¥©ó

②¡G¥i¥H¬O¼Æ­ÈÃö«Y¦¡¤§¶¡¡A¦A°µ½ÆÂøªºÅÞ¿è¹Bºâ¡C¨Ò¦p¨â­Ó¼Æ­ÈÃö«Y¦¡³£¬°¯u®É¤~°õ¦æ¬Y¨Ç«ü¥O¡C¥i¥ÎªºÅÞ¿è¹Bºâ¤l¦p¤Uªí¡G

ÅÞ¿è¹Bºâ¤l·N¸qÅÞ¿è¹Bºâ¤l·N¸qÅÞ¿è¹Bºâ¤l·N¸q
&&¥B||©Î!«D

¨Ò¦p©³¤Uªº¨Ò¤l¬O¡A¦pªG AL<100 ¥B AL>50 ( ¨ä¹ê´N¬O AL ¦b 50¡ã100 ¤§¶¡ )¡A´N¨Ï BX ¥[¤W 200H¡C

.IF (al<100)&&(al>50)
        MOV     BX,200H
.ENDIF

③¡G§PÂ_¦¡¤]¥i¥H¶È¶È¬O¤@­Ó¹Bºâ¤¸¡A¦¹¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼơB¼Æ­È¡C¨Ï¥Î³oºØ±¡ªp®É¬O«ü·í¹Bºâ¤¸«D¹s®É¡A·|³Q»{¬°¬O¡u¯u¡v¡F¬°¹s®É¡A³Q»{¬°¬O¡u°°¡v¡C¨Ò¦p©³¤Uªº¨Ò¤l¬O¡u¦pªG AL ¤£¬°¹s¡A´N¨Ï BX ¥[ 100H¡v¡G

.IF AL
        ADD     BX,100H
.ENDIF

④¡G¹Bºâ¤¸¤]¥i¥H¬OºX¼Ðªºª¬ºA¡A¥i¥H¥ÎªººX¼Ðª¬ºA¦p¤Uªí¡G

ºX¼Ð·N¸qºX¼Ð·N¸qºX¼Ð·N¸q
ZERO?¹s­ÈºX¼Ð³]©w®É¬°¯uCARRY?¶i¦ìºX¼Ð³]©w®É¬°¯uOVERFLOW?·¸¦ìºX¼Ð³]©w®É¬°¯u
SIGN?²Å¸¹ºX¼Ð³]©w®É¬°¯uPARITY?¦P¦ìºX¼Ð³]©w®É¬°¯u

¨Ò¦p©³¤Uªº¨Ò¤l¬O¡u·í AL µ¥©ó BL¡A©Î CY ®É¡A´NÅý CX Åܬ°¹s¡v¡G

.IF (AL==BL)||CARRY?
        MOV     CX,0
.ENDIF

¦b¤º©w±¡§Î¤U¡AML.EXE ³£·|§â¦b§PÂ_¦¡¤¤ªº¼È¦s¾¹·í¦¨µL¸¹¼Æ¡A¥HµL¸¹¼Æ§PÂ_¨ä¤j¤p¡C¦pªG­n¨Ï¼È¦s¾¹·í¦¨¦³¸¹¼Æ¨Ó§PÂ_®É¡A¥i¥H¦b«e­±¥[¤W¡uSBYTE PTR¡v¡B¡uSWORD PTR¡v¡B¡uSDWORD PTR¡v±j­¢¨Ï¨äÅܦ¨¦³¸¹¼Æ¡C«Ü©úÅ㪺¡A¡uSBYTE PTR¡v¡B¡uSWORD PTR¡v¡B¡uSDWORD PTR¡v³o¨Ç¸ê®ÆÃþ«¬¤§«e«a¥H¡uS¡v¡A³o¡uS¡vªí¥Ü²Å¸¹ ( sign ) ¤§·N¡C¤U­±ªº¨Ò¤l¡A½ÐŪªÌ¸Õ¸Õ¬Ý¡A§PÂ_³Ì«á DX ¬O¦h¤Ö¡H

        MOV     AL,0FFH
        MOV     BL,1
        MOV     DX,0
.IF SBYTE PTR AL>BL
        MOV     DX,1
.ENDIF

¦]¬°¦b¤ñ¸û®É¡Aµ{¦¡¥H¡uSBYTE PTR¡vªí©ú AL »P BL ­n·í¦¨¦³¸¹¼Æ¤ñ¸û¡CAL ¤§­È¬° 0FFH ¬O¦³¸¹¼Æªº ¡Ð1¡FBL ¬° 1¡A¤£½×¦³¸¹¼ÆÁÙ¬OµL¸¹¼Æ³£¬O 1¡C¦]¦¹ AL ¤p©ó BL¡A¬G¤£·|°õ¦æ¡u .IF¡v»P¡u.ENDIF¡v¤§¶¡ªº«ü¥O¡A©Ò¥H DX ¬° 0¡C

¤W­±ªºµ{¦¡¡A¦pªG§â¡uSBYTE PTR¡v®³±¼¡A°õ¦æ§¹«á¡ADX ¬O 1¡C

¤W­±©Ò´£¨ìªº³Ì¦h¥u¦³¨âºØ¤À¤ä±¡§Î¡A¥ç§Y¡u­Y¡K¡K´N°õ¦æµ{¦¡¤@¡A§_«h°õ¦æµ{¦¡¤G¡v¡C¦ý¬O¡u.IF/.ELSE/.ENDIF¡vÁÙ¥i¥HÂX¥R¦¨§ó¦hªº¤À¤ä¡A¦p©³¤Uªºµ{¦¡¡G

.IF     §PÂ_¦¡¤@
        µ{¦¡¤@
.ELSEIF §PÂ_¦¡¤G
        µ{¦¡¤G
.ELSEIF §PÂ_¦¡¤T
        µ{¦¡¤T
.ELSE
        µ{¦¡¥|
.ENDIF

³oºØ¦h­Ó¤À¤ä¬yµ{¬O¡A°²¦p§PÂ_¦¡¤@¬°¯u¡A«h°õ¦æµ{¦¡¤@ªº«ü¥O¡F°²¦p§PÂ_¦¡¤G¬°¯u¡A«h°õ¦æµ{¦¡¤Gªº«ü¥O¡F°²¦p§PÂ_¦¡¤T¬°¯u¡A«h°õ¦æµ{¦¡¤Tªº«ü¥O¡K¡K¡A°²¦p³£¤£¬O¤W­±ªº±¡§Î¡A«h°õ¦æ .ELSE ¤§«áªºµ{¦¡¡C´«¥y¸Ü»¡¡A¡u.IF/.ESLEIF/.ELSE/.ENDIF¡vªº¥Îªk«Ü¦³¼u©Ê¡A±z¥i¥H¨Ì»Ý­n¡A¬Ù«o¡u.ELSEIF¡v©Î¬Ù«o¡u.ELSE¡v¡A¤]¥i¥Hµø±¡ªp¼W¥[¡u.ELSEIF¡v±ø¥ó¤À¤ä¡A¤£¹L¤£½×¨º¤@ºØ±¡§Î¡A¡u.IF¡v ©M¡u.ENDIF¡v¥²©w¬O¦¨¹ï·f°t¦b¤@°_¡A¦n¹³¤@¹ï¤Ò©d¤@¼Ë¡A¨Ã¥B­n©ñ¦b±ø¥ó±±¨î¬yµ{ªº³Ì«e­±»P³Ì«á­±¡C

©³¤Uªº¨Ò¤l¡AAX ¤w¦s¦³¤ô·»²Gªº pH ­È¡A¦pªG AX ¬°¤C¡A¤ô·»²G§e²{¤¤©Ê¡F¤p©ó¤C¡A¤ô·»²G§e²{»Ä©Ê¡F¤j©ó¤C¡A¤ô·»²G§e²{ÆP©Ê¡G

ACID    DB      "The solution is acid.$"
BASE    DB      "The solution is base.$"
NEUTRAL DB      "The solution is neutral.$"
        ⁝
.IF AX<7
        mov     dx,OFFSET ACID
.IF AX==7
        mov     dx,OFFSET NEUTRAL
.IF AX>7
        mov     dx,OFFSET BASE
.ENDIF
        mov     ah,9
        int     21h


¡u.WHILE/.ENDW¡v»P¡u.REPEAT/.UNTIL¡v

MASM 6.x ªº°ª¶¥±ø¥ó±±¨î¬yµ{«ü¥O¡A°£¤F¡u.IF/.ESLEIF/.ELSE/.ENDIF¡v¥~¡AÁÙ¦³¡u.WHILE/.ENDW¡v»P¡u.REPEAT/.UNTIL¡v¡C

¥ý¨Ó¬Ý¬Ý¡u.WHILE/.ENDW¡vªº»yªk¡J

.WHILE  §PÂ_¦¡
        µ{¦¡
.ENDW

¡u.WHILE/.ENDW¡v°j°éªº°õ¦æ¹Lµ{¦p¤U¡J·íµ{¦¡°õ¦æ¨ì .WHILE ®É¡A·|Àˬd§PÂ_¦¡¬O§_¬°¯u¡A°²¦p¬°¯u¡A«h°õ¦æ .WHILE »P .ENDW ¤§¶¡ªºµ{¦¡¡Aª½¨ì¹J¨ì .ENDW ®É¡A¦A¦^¨ì¶}ÀY .WHILE ³BÀˬd§PÂ_¦¡¬O§_¬°¯u¡A­Y¬°¯u®É¡A¦A«×°õ¦æ .WHILE »P .ENDW ¤§¶¡ªºµ{¦¡¡A¤@ª½¨ì§PÂ_¦¡¬°°²®É¡A¤~¸õ¨ì .ENDW ¤U¤@¦æµ{¦¡°õ¦æ¡C©Ò¥H¬Ý°_¨Ó¡A¡u.WHILE/.ENDW¡v´N¹³¬O C/C¡Ï¡Ï ªº WHILE {} °j°é¤@¼Ë¡C

¦A¨Ó¬Ý¬Ý¡u.REPEAT/.UNTIL¡vªº»yªk¡J

.REPEAT
        µ{¦¡
.UNTIL  §PÂ_¦¡

¡u.REPEAT/.UNTIL¡v°j°éªº°õ¦æ¹Lµ{¦p¤U¡G·íµ{¦¡°õ¦æ¨ì .REPEAT ®É¡A·|¥ý°õ¦æ .REPEAT ©M .UNTIL ¤§¶¡ªºµ{¦¡¡AµM«áÀˬd .UNTIL ¤§«áªº§PÂ_¦¡¡A­Y§PÂ_¦¡¬°¯u¡A«hÂ÷¶}°j°é¡A§PÂ_¦¡¬°°°¡A«h¦^¨ì .REPAET ³B°õ¦æ .REPEAT ©M .UNTIL ¤§¶¡ªºµ{¦¡¡AµM«á¦A¤@ª½­«½Æ¡C¤]´N¬O»¡¡A³o¬qµ{¦¡½X·|¤@ª½­«½Æ¦b .REPEAT ¨ì .UNTIL ¤§¶¡ªºµ{¦¡¡Aª½¨ì§PÂ_¦¡¬°¯u®É¸õ¥X°j°é¡C³o¤@¹ï°²«ü¥O©M C/C¡Ï¡Ï ªº DO °j°é¤@¼Ë¡C

¡u.REPEAT/.UNTIL¡v»P¡u.WHILE/.ENDW¡v«Ü¹³¡A¦ýµy¦³¤£¦P¡C¡u.REPEAT/.UNTIL¡v·|¥ý°õ¦æ¨ä¤¤ªºµ{¦¡¤@¦¸¡AµM«á¦A§PÂ_ .UNIT «áªº¯u°°¡A¥H¨M©w¬O§_­«½Æ¦A°õ¦æ¤@¦¸¡F¦Ó .WHILE/.ENDW «h·|¥ý§PÂ_ .WHILE «áªº¯u°°¡A¨M©w¬O§_°õ¦æ¨ä¤ºªºµ{¦¡¡A¦]¦¹¦³¥i¯à¤£·|°õ¦æ¨ä¤¤ªºµ{¦¡¡C


¡u.BREAK .IF¡v»P¡u.CONTINUE .IF¡v

¦b¡u.WHILE/.ENDW¡v©Î¡u.REPEAT/.UNTIL¡v°j°éùØ¡A°£¤FÅý§PÂ_¦¡§PÂ_¥i°h¥X°j°é¥~¡A¦pªG¦³¨ä¥L±¡§Î¤]­n°h¥X°j°é®É¡A¤]¥i¥H¥[¤W¡u.BREAK .IF¡v°²«ü¥O¡A±j¨î°h¥X°j°é¡Aªí¥Ü¥u¦³¦b .IF ¤§«áªº±ø¥ó¬°¡y¯u¡z®É¡A¤~°h¥X°j°é¡C¨Ò¦p©³¤Uªºµ{¦¡¬OÅý¨Ï¥ÎªÌ¿é¤J¤@­Ó¦r¦ê¨Ã¦s©ó string ¦r¦êÅܼÆùØ¡Aª½¨ì¨Ï¥ÎªÌ«ö¤U Enter Á䬰¤î¡J

        mov     bx,OFFSET string
.WHILE 1
        mov     ah,1
        int     21h
.BREAK .IF al==0dh
        mov     [bx],al
        inc     bx
.ENDW

¡u.CONTINUE .IF¡v«h¬O¦b .IF ¤§«áªº§PÂ_¦¡¬°¯u®É¡A·|¸õ¨ì¡u.WHILE/.ENDW¡v©Î¡u.REPEAT/.UNTIL¡v°j°é¶}©l³B°õ¦æ¡C¨Ò¦p¤U­±¬O¤@­Ó¿é¤J¼Æ¦r¦r¦êªºµ{¦¡¡A·í¨Ï¥ÎªÌ¤£¬O«ö 0¡ã9 ªºªü©Ô§B¼Æ¦r®É¡A·|¸õ¦^°j°é°_©l³B¡AÄ~Äòµ¥«Ý¨Ï¥ÎªÌ¿é¤J¼Æ¦r¡F¦pªG¨Ï¥ÎªÌ«ö¤U Enter Áä ( ASCII ½X¬° 0DH ) ©Î Esc Áä ( ±½´y½X¬O 01 ) ®É¡A¸õ¥X°j°é¡C

.REPEAT
        mov     ah,1
        int     21h
.BREAK .IF (al==0dh)||(al==01)
.CONTINUE .IF (al<='0')||(al>='9')
        stosb
.UNTIL ah==1


INPUT2.ASM ­ì©l½X

INPUT1.ASM ¦³³\¦h¦a¤è­n§PÂ_©Ò¿é¤Jªº¦r¤¸¬O§_¬°¤Q¤»¶i¦ì¼Æ¦rªº¦Xªk¦r¤¸¡A¤£¶ÈÁcÂø¡A¤]Ãø¥H¾\Ū¡C¤p¤ì°¸¥H MASM 6.x ·s¼Wªº±ø¥ó±±¨î¬yµ{«ü¥O§ï¼g INPUT1.ASM¡A©ó¬OÅܦ¨©³¤Uªºµ{¦¡¡AINPUT2.ASM¡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
;¥ÑÁä½L¿é¤J¤@­Ó¦r²Õªøªº¤Q¤»¶i¦ì¼Æ¡AµM«á¦s¤JvalueÅܼÆùØ¡C
.MODEL          TINY
.386
;*******************************************************************************
.CODE
ORG             100h
;-------------------------------------------------------------------------------
start:          jmp     begin
value           DW      ?
error_message   DB      0dh,0ah,"Please input 0~9 or A~F.$"
begin:          mov     cx,4            ;¤@­Ó¦r²Õªº¤Q¤»¶i¦ì¼Æ¦³¥|¦ì
                mov     value,0         ;¨ÏvalueÂk¹s
.WHILE cx
                mov     ah,1            ;DOSªA°Èµ{¦¡¡AÁä½L¿é¤J¦r¤¸
                int     21h             ;AL¡×¿é¤J¦r¤¸ªºASCII½X
        .IF (al>="0")&&(al<="9")
                sub     al,"0"
        .ELSEIF (al>="A")&&(al<="F")
                sub     al,37h
        .ELSEIF (al>="a")&&(al<="f")
                sub     al,57h
        .ELSE
                mov     ah,9
                mov     dx,OFFSET error_message
                int     21h
.BREAK .IF 1
        .ENDIF
                shl     value,4         ;value¡×value¡Ñ10H
                cbw                     ;¨ÏAHÅܬ°0
                add     value,ax        ;value¡×value¡ÏAX
                dec     cx
.ENDW
                int     20h
;*******************************************************************************
END             start

¤ñ¸û INPUT1.ASM »P INPUT2.ASM¡Aµo²{«áªÌªº­ì©l½Xµu¤F«Ü¦h¡A¤Ö¤F³\¦h¼Ð°O¡A¦b§PÂ_¨Ï¥ÎªÌ¬O§_¿é¤J¥¿½Tªº¤Q¤»¶i¦ì¦r¤¸¡A¤]²¼ä§ã­n³\¦h¡A¨Ã¥B®e©ö¾\Ū¡A³o¬O¡uµ²ºc¤Æ¡vÀuÂI¡F¦ý¬O¯ÊÂI«h¬O¥i°õ¦æÀɸû¤j¡A«o¤j¤£¤F¦h¤Ö¡C¦]¦¹ªñ¥Nµ{¦¡³]­p¡A¤j¦h§Æ±æµ{¦¡³]­p®v¯à³]­p¥Xµ²ºc¤Æªºµ{¦¡¨Ó¡C

x86 «ü¥O¡GDEC

DEC «ü¥Oªº¥Îªk¬O¡G

DEC     ¹Bºâ¤¸

DEC «ü¥O¬O¨Ï¨ä«á©Ò±µªº¹Bºâ¤¸´î¤@¡A³o¸Ì¥i¥H°µ¬°¹Bºâ¤¸ªº¦³ÅܼƩμȦs¾¹¡C®Ú¾Ú DEC ¹Bºâ«áªºµ²ªG¡A¨ü¼vÅTªººX¼Ð¦³·¸¦ìºX¼Ð¡B²Å¸¹ºX¼Ð¡B¹s­ÈºX¼Ð¡B»²§U¶i¦ìºX¼Ð¤Î¦P¦ìºX¼Ð¡A¶i¦ìºX¼Ð¤£¨ü¼vÅT¡C



µù¤@¡GµL¸¹¼Æ ( Unsigned Number ) »P¦³¸¹¼Æ ( Signed Number )

µL¸¹¼Æ´N¬O¨S¦³¥¿¡B­t¸¹ªº¼Æ¡A¤@¯ë§Ú­Ì§â¥¦¬Ý¦¨¬O¥¿¼Æ¡A­n©w¸q¤@­Ó¦ì¤¸²Õªø«×¡B¤@­Ó¦r²Õªø«×¡B¤@­ÓÂù¦r²Õªø«×¡B¤@­Ó¥|¦r²ÕªºµL¸¹¼Æ¡A¥Î¡uDB¡v¡B¡uDW¡v¡B¡uDD¡v¡B¡uDQ¡v¡A¤]¥i¥H¥Î¡uBYTE¡v¡B¡uWORD¡v¡B¡uDWORD¡v¡B¡uQWORD¡v¡C¦p¤U­±ªº¥Îªk¡A³£¬O©w¸qµL¸¹¼Æ¡C

ÅÜ¼Æ    DB      ¼Æ­È
ÅÜ¼Æ    DW      ¼Æ­È
ÅÜ¼Æ    DD      ¼Æ­È
ÅÜ¼Æ    DQ      ¼Æ­È

¦³¸¹¼Æ¬O«ü±a¦³¥¿¸¹©Î­t¸¹ªº¼Æ¡A¥H³Ì°ª¦ì¤¸ªí¥Ü¥¿¡B­t¸¹¡C³Ì°ª¦ì¤¸¬°¹s¡Aªí¥Ü¦¹¼Æ¬°¥¿¼Æ¡F³Ì°ª¦ì¤¸¬°¤@¡Aªí¥Ü¦¹¼Æ¬O­t¼Æ¡C¥H¤@­Ó¦ì¤¸²Õªø«×ªº¼Æ¨Ó»¡¡A²Ä¤C¦ì¤¸¬° 1¡A´N¥Nªí­t¼Æ¡F¬°¹s¡A´N¥Nªí¥¿¼Æ¡C

¦³¤F³oÆ[©À¥H«á¡A¨º ¡Ð1 «ç»òªí¥Ü©O¡H¥H¤@¦ì¤¸²Õªø«×ªº¦³¸¹¼Æ¨Ó»¡¡A¥i¯à¦³¤H¥H¬° 1¡A¥Î¤G¶i¦ìªí¥Ü¬O¡u0000 0001¡v¡F¡Ð1 ¬O­t¼Æ¡A¦]¦¹²Ä¤C¦ì¤¸¬° 1¡A©Ò¥H¡Ð1 ¬O¡u1000 0001¡v¡C¦ý³oºØ·Qªk¬O¿ùªº¡A¦]¬° ¡Ð1 ¤ñ¹sÁÙ­n¤p¤@¡A©ÎªÌ¤Ï¹L¨Ó»¡¡A¡Ð1 ¥[¤@µ¥©ó¹s¡C¡u1000 0001¡v¥[¤@«áÅܦ¨¡u1000 0010¡v¡A·Ó­è¤~ªºÅÞ¿è¡A³o¬O ¡Ð2¡AÅãµM³o¼Ëªº·Qªk¬O¿ù»~ªº¡C

¨º«ç¼Ë¤~¹ï©O¡HÀ³¸Ó³o¼Ë¡A¡u1111 1111¡v¥[¤@Åܦ¨¡u0001 0000 0000¡v¡AÁöµM¶W¹L¤F¤@­Ó¦ì¤¸²Õªº½d³ò¡A¦pªG¶È¬Ý¤@­Ó¦ì¤¸²Õ¡A¨º»ò´N­è¦n¬O¹s¡C¦b¹q¸£¬ì¾Ç¤W¡A§Ú­Ì³W©w¤F¥[¡B´îªk¤¤¡A¥Øªº¹Bºâ¤¸©M¨Ó·½¹Bºâ¤¸ªø«×¬Û¦P¡C°ò©ó¥H¤W²z¥Ñ¡A¤@­Ó¦ì¤¸²Õ¼e«×®É¡A¡Ð1 ¥H¤G¶i¦ìªí¥Ü¬°¡u1111 1111¡v¡C¦P²z¡A¤@­Ó¦r²Õ¼e«×®É¡A¡Ð1 ¬°¡u1111 1111 1111 1111¡v¡C

§Ú­Ì¥i¥H§â¦³¸¹¼Æ¤¤ªº¥¿¡B­t¼Æ·Q·Q¦¨¥H¹s¬°¬É½u¡A¦p¤U¹Ï¬õ¦âªº¼Æ¦r´N¬O¦³¸¹¼Æ¡C¦V¥k¬°¦³¸¹¼Æªº¥¿¼Æ¡A¨C¸g¤@®æ¤À§O¬O 1¡B2¡B3¡K¡K127¡F¦V¥ª¬°¦³¸¹¼Æªº­t¼Æ¡A¤À§O¬O ¡Ð1¡B¡Ð2¡B¡Ð3¡K¡K¡Ð128¡C³Ì«á¤À§O²×¤î¦b¥¿¼Æ³Ì¤jªº 127 ©M­t¼Æ³Ì¤pªº ¡Ð128¡C

¤W¹Ï¤]ªí¥Ü¤F¦P¤@­Ó¤Q¤»¶i¦ìªº¼Æ­È¡A¥i¥H¸ÑÄÀ¬°¦³¸¹¼Æ¤]¥i¥H¬Ý¦¨µL¸¹¼Æ¡A³o§¹¥þ­n¬Ýµ{¦¡¦p¦ó¸ÑÄÀ¥H¤Î¦p¦ó©w¸qÅܼơC¨Ò¦p¡u0FFH¡v¥i¥H¥NªíµL¸¹¼Æªº 255 ( ¤Q¶i¦ì )¡A¤]¥i¥H¬O¦³¸¹¼Æ ¡Ð1 ( ¤Q¶i¦ì )¡C³o§¹¥þ­n¬Ý·íªì¦b©w¸qÅܼƮɦp¦ó©w¸qªº¡C©w¸qµL¸¹¼Æ¥Î¡uDB¡v©Î¡uBYTE¡v¡F©w¸q¦³¸¹¼Æ¥Î¡uSBYTE¡v¡A³oùتº¡uS¡vÅãµM¬O signed ªº·N«ä¡C

x       db      0ffh    ;x¡×255
y       sbyte   0ffh    ;y¡×¡Ð1
z       sbyte   ?
¡K      ¡K¡K    ¡K¡K
        mov     z,81h   ;z¡×¡Ð127

¤W­±ªºµ{¦¡½XùØ¡A§â z ©w¸q¬°¦³¸¹¼Æ¡A¬G¡umov z,81h¡v¨ä¹ê´N¬OÅý z Åܦ¨ ¡Ð127¡Cx ©M y ¨âÅܼƳ£¬O¡u0FFH¡v¡A¦ý¬O x ­n§â¥¦·Q¦¨¬OµL¸¹¼Æ¡A255¡F y «o¬O¦³¸¹¼Æ ¡Ð1¡C§A¤]¥i¥H§â¡uy sbyte 0ffh¡v¼g¦¨¡uy sbyte -1¡v¡C

¾¨ºÞ¦p¦¹¡A©w¸qµL¸¹¼Æ¥Î¡uDB¡v©Î¡uBYTE¡v¡A¦³¸¹¼Æ¥Î¡uSBYTE¡v¡A«o¤£¬O±j¨î³W©wªº¡C¦]¦¹§AÁÙ¬O¥i¥H¥Î¹³¡ux DB -1¡v¡B¡uy SBYTE 255¡v³o¼Ëªº«ü¥O¡A³o¨Ç³£¯à³q¹L²ÕĶ¡C§Ú·Q³o¤j·§¬O¦]¬°¦s¤Jªº¼Æ­È¡A³Ì«á³£Åܦ¨¤Q¤»¶i¦ì¼Æ­È¡A¦Ó¥B³£¬O 0FFH¡A¨S¦³®t§O¡A¦ý¬OÁÙ¬O­n¤p¤ß¨Ï¥Î¡C

©w¸q¨ä¥Lªø«×ªº¦³¸¹¼Æ»PµL¸¹¼Æ¡A¤]³£©M¦ì¤¸²ÕÃþ¦ü¡A¤p¤ì°¸¾ã²z¦¨¤Uªí¡G

ºØÃþ°²«ü¥O¦WºÙªø«× ( ¦ì¤¸²Õ )©Ò¯àªí¥Üªº¾ã¼Æ½d³ò
µL¸¹¼ÆDB¡BBYTE¦ì¤¸²Õ10¡ã255
DW¡BWORD¦r²Õ20¡ã65,535
DD¡BDWORDÂù¦r²Õ40¡ã4,294,967,295
DQ¡BQWORD¥|¦r²Õ80¡ã18,446,744,073,709,551,615
¦³¸¹¼ÆSBYTE¦ì¤¸²Õ1¡Ð128¡ã127
SWORD¦r²Õ2¡Ð32,768¡ã32,767
SDWORDÂù¦r²Õ4¡Ð2,147,483,648¡ã2,147,483,647

¦^ÅU


x86 «ü¥O¡GSHL/SAL

SHL ( shift logical left ) »P SAL ( shift arithmetic left ) ¬O¤@¼Ëªº«ü¥O¡A¨ä»yªk¦p¤U¡G

SHL     ¥Øªº¹Bºâ¤¸,1        ¦¡(1)
SHL     ¥Øªº¹Bºâ¤¸,CL       ¦¡(2)
SHL     ¥Øªº¹Bºâ¤¸,¥ß§Y­È   ¦¡(3)

SHL «ü¥O¬Oªº·N«ä¡A¬O«ü¥Øªº¹Bºâ¤¸¤ºªº¨C­Ó¦ì¤¸¦V¥ª²¾¦ì¼Æ­Ó¦ì¤¸¡A¦pªG¥u²¾¤@­Ó¦ì¤¸¡A´N¥Î¦¡ (1)¡F¦pªG¤@¦¸­n²¾¦n´X­Ó¦ì¤¸¡A¥Î¦¡ (2)¡A§â­n²¾¦ìªº¦ì¤¸¼Æ¨Æ¥ý¦s¤J CL ùØ­±¡C8086/8088 CPU ¥u¯à¥Î³o¨âºØ¤èªk¡A¸û°ª¶¥ªº CPU ¥i¥H¥Î¦¡ (3)¡A­n²¾¦ìªº¦ì¤¸¼Æª½±µ¥H¥ß§Y­Èªí¥Ü¡C

¥Ñ³Ì°ª¦ì¦V¥ª²¾¥Xªº¸ê®Æ·|®ø¥¢¤£¨£¡A¥u¦³³Ì«á¤@¦¸²¾¥Xªº¦ì¤¸·|¦s¤J¶i¦ìºX¼ÐùØ¡C¥Ñ³Ì§C¦ì¤¸¦V¥ª²¾¤Jªº¦ì¤¸¡A³£·|¶ñ¤W¹s¡A¥ç§Y§â¹s²¾¤J³Ì§C¦ì¤¸¡C

SHL ¦³¤@¶µ¯S©Ê¡A«D±`¦n¥Î¡A¨º´N¬O¥i¥H·í°µ­¼¥H 2 ªº¾­¤è¡C¨Ò¦p¡uSHL AX,1¡v¬Û·í©ó§â AX ­¼¥H 2¡A¡uSHL AX,2¡v¬Û·í©ó­¼¥H 22¡A¡uSHL AX,2¡v¬Û·í©ó­¼¥H 23¡K¡K¥H¦¹Ãþ±À¡C


x86 «ü¥O¡GSHR

SHR ¬OÅÞ¿è¥k²¾ ( shift logical right ) ªº·N«ä¡A¥ç§Y§â¥Øªº¹Bºâ¤¸¤¤ªº¨C­Ó¦ì¤¸¡A¦V¥k²¾¼Æ­Ó¦ì¤¸¡C¥u¦³²¾¦ì¤è¦V¦V¥k¥H¤Î¬Û·í©ó°£¥H 2 ªº¾­¤è¡A³o¨âÂI»P SHL ¤£¦P¡A¨ä¥L¯S©Ê³£¤@¼Ë¡A¥]§t³Ì°ª¦ì¤¸·|¸É¤W 0¡C


x86 «ü¥O¡GSAR

SAR ¬Oºâ³N¥k²¾ ( shift arithmetic right ) ªº·N«ä¡A¥ç§Y§â¥Øªº¹Bºâ¤¸¤¤ªº¨C­Ó¦ì¤¸¡A¦V¥k²¾¼Æ­Ó¦ì¤¸¡CSAR «ü¥O¦b¨C¦¸²¾¦ìªº®É­Ô¡A³Ì°ª¦ì¤¸«O«ù­ì¨Óªº­È¡C¦pªG AL ¬°¡u1000 1100¡v¡A°õ¦æ¡uSAR AL,2¡v«á¡AAL Åܬ°¡u1110 0011¡v¡A¶i¦ìºX¼Ð³Q²M°£¡C


x86 «ü¥O¡GSUB

SUB «ü¥O¬O¦³¸¹¼Æ´îªk¹Bºâ«ü¥O¡A»yªk¬O

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

SUB «ü¥O·|§â¥Øªº¹Bºâ¤¸´î±¼¨Ó·½¹Bºâ¤¸¤§«á¡A¦A§â®t¦s¤J¥Øªº¹Bºâ¤¸ùØ­±¡A¦]¦¹¡A¥Øªº¹Bºâ¤¸¤§­È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§­È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©ÎÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƩΥߧY­È¡C¦ý¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¥i¦P®É¬°ÅܼơA¥B¨âªÌªø«×­n¬Û¦P¡C

SUB «ü¥O·|¼vÅT³\¦hºX¼Ð¡A¥]§t¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð¡B»²§U¶i¦ìºX¼Ð¡B¹s­ÈºX¼Ð¡B²Å¸¹ºX¼Ð¡B·¸¦ìºX¼Ð¤»­ÓºX¼Ð¡C


x86 «ü¥O¡GCBW¡BCWD¡BCDQ

CBW ( convert byte to word ) «ü¥O·|§â AL ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü AX¡C­Y AL ªº²Ä¤C¦ì¤¸¬°¤@¡A«h AX ªº²Ä 8¡ã15 ¦ì¤¸§¡Åܬ°¤@¡F­Y AL ªº²Ä¤C¦ì¤¸¬°¹s¡A«h AX ªº²Ä 8¡ã15 ¦ì¤¸§¡Åܬ°¹s¡C

CWD ( convert word to double word ) «ü¥O·|§â AX ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü DX:AX¡C­Y AX ªº²Ä¤Q¤­¦ì¤¸¬°¤@¡A«h DX ©Ò¦³¦ì¤¸§¡Åܬ°¤@¡F­Y AX ªº²Ä¤Q¤­¦ì¤¸¬°¹s¡A«h DX ©Ò¦³¦ì¤¸§¡Åܬ°¹s¡C

CDQ ( convert double word to quad word ) «ü¥O·|§â EAX ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü EDX:EAX¡C­Y EAX ªº²Ä¤T¤Q¤@¦ì¤¸¬°¤@¡A«h EDX ©Ò¦³¦ì¤¸§¡Åܬ°¤@¡F­Y EAX ªº²Ä¤T¤Q¤@¦ì¤¸¬°¹s¡A«h EDX ªº©Ò¦³¦ì¤¸§¡Åܬ°¹s¡C

CBW¡BCWD¡BCDQ §¡¤£¼vÅTºX¼Ð¡C


µL¸¹¼Æ»P¦³¸¹¼Æ

µL¸¹¼Æ´N¬O¨S¦³¥¿¡B­t¸¹ªº¼Æ¡A¤@¯ë§Ú­Ì§â¥¦¬Ý¦¨¬O¥¿¼Æ¡A­n©w¸q¤@­Ó¦ì¤¸²Õªø«×¡B¤@­Ó¦r²Õªø«×¡B¤@­ÓÂù¦r²Õªø«×¡B¤@­Ó¥|¦r²ÕªºµL¸¹¼Æ¡A¥Î¡uDB¡v¡B¡uDW¡v¡B¡uDD¡v¡B¡uDQ¡v¡A¤]¥i¥H¥Î¡uBYTE¡v¡B¡uWORD¡v¡B¡uDWORD¡v¡B¡uQWORD¡v¡C

¦³¸¹¼Æ¬O«ü±a¦³¥¿¸¹©Î­t¸¹ªº¼Æ¡A¥H³Ì°ª¦ì¤¸ªí¥Ü¥¿¡B­t¸¹¡C³Ì°ª¦ì¤¸¬°¹s¡Aªí¥Ü¦¹¼Æ¬°¥¿¼Æ¡F³Ì°ª¦ì¤¸¬°¤@¡Aªí¥Ü¦¹¼Æ¬O­t¼Æ¡C¥H¤@­Ó¦ì¤¸²Õªø«×ªº¼Æ¨Ó»¡¡A²Ä¤C¦ì¤¸¬° 1¡A´N¥Nªí­t¼Æ¡F¬°¹s¡A´N¥Nªí¥¿¼Æ¡C­n©w¸q¤@­Ó¦ì¤¸²Õ¡B¤@­Ó¦r²Õ¡B¤@­ÓÂù¦r²Õªº¦³¸¹¼Æ¡A¥i¥H¤À§O¥Î¡uSBYTE¡v¡B¡uSWORD¡v¡B¡uSDWORD¡v¡F¦ý¬O¨S¦³¡uSQWORD¡v¡C


.IF/.ESLEIF/.ELSE/.ENDIF °²«ü¥O

³o¬O MASM 6.x ·s¼Wªº±ø¥ó±±¨î¬yµ{«ü¥O¡A¨ä»yªk¬O¡G

.IF     §PÂ_¦¡¤@
        µ{¦¡¤@
.ELSEIF §PÂ_¦¡¤G
        µ{¦¡¤G
.ELSEIF §PÂ_¦¡¤T
        µ{¦¡¤T
.ELSE
        µ{¦¡¥|
.ENDIF

³oºØ¦h­Ó¤À¤ä¬yµ{¬O¡A°²¦p§PÂ_¦¡¤@¬°¯u¡A«h°õ¦æµ{¦¡¤@ªº«ü¥O¡F°²¦p§PÂ_¦¡¤G¬°¯u¡A«h°õ¦æµ{¦¡¤Gªº«ü¥O¡F°²¦p§PÂ_¦¡¤T¬°¯u¡A«h°õ¦æµ{¦¡¤Tªº«ü¥O¡K¡K¡A°²¦p³£¤£¬O¤W­±ªº±¡§Î¡A«h°õ¦æ .ELSE ¤§«áªºµ{¦¡¡C´«¥y¸Ü»¡¡A¡u.IF/.ESLEIF/.ELSE/.ENDIF¡vªº¥Îªk«Ü¦³¼u©Ê¡A±z¥i¥H¨Ì»Ý­n¡A¬Ù«o¡u.ELSEIF¡v©Î¬Ù«o¡u.ELSE¡v¡A¤]¥i¥Hµø±¡ªp¼W¥[¡u.ELSEIF¡v±ø¥ó¤À¤ä¡A¤£¹L¤£½×¨º¤@ºØ±¡§Î¡A¡u.IF¡v ©M¡u.ENDIF¡v¥²©w¬O¦¨¹ï·f°t¦b¤@°_¡A¦n¹³¤@¹ï¤Ò©d¤@¼Ë¡A¨Ã¥B­n©ñ¦b±ø¥ó±±¨î¬yµ{ªº³Ì«e­±»P³Ì«á­±¡C


.WHILE/.ENDW °²«ü¥O

.WHILE/.ENDW ªº»yªk¡J

.WHILE  §PÂ_¦¡
        µ{¦¡
.ENDW

.WHILE/.ENDW °j°éªº°õ¦æ¹Lµ{¦p¤U¡J·íµ{¦¡°õ¦æ¨ì .WHILE ®É¡A·|Àˬd§PÂ_¦¡¬O§_¬°¯u¡A°²¦p¬°¯u¡A«h°õ¦æ .WHILE »P .ENDW ¤§¶¡ªºµ{¦¡¡Aª½¨ì¹J¨ì .ENDW ®É¡A¦A¦^¨ì¶}ÀY .WHILE ³BÀˬd§PÂ_¦¡¬O§_¬°¯u¡A­Y¬°¯u®É¡A¦A«×°õ¦æ .WHILE »P .ENDW ¤§¶¡ªºµ{¦¡¡C¤@ª½¨ì§PÂ_¦¡¬°°²®É¡A¤~¸õ¨ì .ENDW ¤U¤@¦æµ{¦¡°õ¦æ¡C


.REPEAT/.UNTIL °²«ü¥O

.REPEAT/.UNTIL ªº»yªk¡J

.REPEAT
        µ{¦¡
.UNTIL  §PÂ_¦¡

.REPEAT/.UNTIL °j°éªº°õ¦æ¹Lµ{¦p¤U¡G·íµ{¦¡°õ¦æ¨ì .REPEAT ®É¡A·|¥ý°õ¦æ .REPEAT ©M .UNTIL ¤§¶¡ªºµ{¦¡¡AµM«áÀˬd .UNTIL ¤§«áªº§PÂ_¦¡¡A­Y§PÂ_¦¡¬°¯u¡A«hÂ÷¶}°j°é¡A§PÂ_¦¡¬°°°¡A«h¦^¨ì .REPAET ³B°õ¦æ .REPEAT ©M .UNTIL ¤§¶¡ªºµ{¦¡¡AµM«á¦A¤@ª½­«½Æ¡C¤]´N¬O»¡¡A³o¬qµ{¦¡½X·|¤@ª½­«½Æ¦b .REPEAT ¨ì .UNTIL ¤§¶¡ªºµ{¦¡¡Aª½¨ì§PÂ_¦¡¬°¯u®É¸õ¥X°j°é¡C


.CONTINUE .IF °²«ü¥O

.CONTINUE .IF ªº»yªk¦p¤U¡G

.CONTINUE .IF §PÂ_¦¡

.CONTINUE .IF ¥Î©ó .WHILE/.ENDW ©Î .REPEAT/.UNTIL ¤§¤º¡A·í§PÂ_¦¡¬°¯u®É¡A¥i¥H¸õ¦Ü°j°éªº³Ì«e­±¡C


.BREAK .IF °²«ü¥O

.BREAK .IF ªº»yªk¦p¤U¡G

.BREAK .IF §PÂ_¦¡

.BREAK .IF »P .CONTINUE .IF «Ü¬Û¹³¡A³£¥Î©ó .WHILE/.ENDW ©Î .REPEAT/.UNTIL ¤§¤º¡A·í§PÂ_¦¡¬°¯u®É¡A¥i¥H±j¨î°h¥X°j°é¡A¦Ó¤£¬O¦^¨ì°j°éªº¤@¶}ÀY¡C

¨Ò¦p©³¤Uªºµ{¦¡¬O¡u·í¨Ï¥ÎªÌ«ö¤Uªü©Ô§B¼Æ¦r®É¡A±N¥¦¦s¤J DX ©Ò«üªº¦ì§}Àx¦s°_¨Ó¡F¦pªG¤£¬Oªü©Ô§B¼Æ¦r¡A´N¸õ¥X°j°é¡v¡G

        mov     bx,200h
.WHILE  1
        mov     ah,1
        int     21h
.BREAK .IF (al<"0")||(al>"9")
        mov     [bx],al
        inc     bx
.ENDW
        int     20h