¤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
¤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¤¸«á¡An¥ý§â¦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
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)¡An²¾¦ìªº¦ì¤¸¼Æª½±µ¥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
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
©³¤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´Nn¨Ì¾Ú¨Ï¥ÎªÌ¿é¤Jªº¬Oªü©Ô§B¼Æ¦r¡AÁÙ¬O¤j¼g^¤å¦r¥À¡AÁÙ¬O¤p¼g^¤å¦r¥À¥hpºâ¡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 |
0 | 30H | 3CH | 48H | 54H | 60H | ||||
1 | 31H | 3DH | 49H | 55H | a | 61H | |||
2 | 32H | 3EH | 4AH | 56H | b | 62H | |||
3 | 33H | 3FH | 4BH | 57H | c | 63H | |||
4 | 34H | 40H | 4CH | 58H | d | 64H | |||
5 | 35H | A | 41H | 4DH | 59H | e | 65H | ||
6 | 36H | B | 42H | 4EH | 5AH | f | 66H | ||
7 | 37H | C | 43H | 4FH | 5BH | 67H | |||
8 | 38H | D | 44H | 50H | 5CH | 68H | |||
9 | 39H | E | 45H | 51H | 5DH | 69H | |||
3AH | F | 46H | 52H | 5EH | 6AH | ||||
3BH | 47H | 53H | 5FH | 6BH |
¤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©Ò¥Hn´î¥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
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¡FY 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 ¦æªºµ{¦¡½Õ¾ã¹Ln¡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
·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
³Ì²³æªº±¡§Î¬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¨ä¼Ò¼Ë¤jP¥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®É¬°¯u | CARRY? | ¶i¦ìºX¼Ð³]©w®É¬°¯u | OVERFLOW? | ·¸¦ìºX¼Ð³]©w®É¬°¯u |
SIGN? | ²Å¸¹ºX¼Ð³]©w®É¬°¯u | PARITY? | ¦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ªGn¨Ï¼È¦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¡uY¡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¨Ã¥Bn©ñ¦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
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¡AY¬°¯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Â_¦¡¡AY§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
¦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
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
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
µL¸¹¼Æ´N¬O¨S¦³¥¿¡Bt¸¹ªº¼Æ¡A¤@¯ë§Ú̧⥦¬Ý¦¨¬O¥¿¼Æ¡An©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³Ì°ª¦ì¤¸ªí¥Ü¥¿¡Bt¸¹¡C³Ì°ª¦ì¤¸¬°¹s¡Aªí¥Ü¦¹¼Æ¬°¥¿¼Æ¡F³Ì°ª¦ì¤¸¬°¤@¡Aªí¥Ü¦¹¼Æ¬Ot¼Æ¡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 ¬Ot¼Æ¡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§â¦³¸¹¼Æ¤¤ªº¥¿¡Bt¼Æ·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 ©Mt¼Æ³Ì¤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ÁÙ¬On¤p¤ß¨Ï¥Î¡C
©w¸q¨ä¥Lªø«×ªº¦³¸¹¼Æ»PµL¸¹¼Æ¡A¤]³£©M¦ì¤¸²ÕÃþ¦ü¡A¤p¤ì°¸¾ã²z¦¨¤Uªí¡G
ºØÃþ | °²«ü¥O | ¦WºÙ | ªø«× ( ¦ì¤¸²Õ ) | ©Ò¯àªí¥Üªº¾ã¼Æ½d³ò |
µL¸¹¼Æ | DB¡BBYTE | ¦ì¤¸²Õ | 1 | 0¡ã255 |
DW¡BWORD | ¦r²Õ | 2 | 0¡ã65,535 | |
DD¡BDWORD | Âù¦r²Õ | 4 | 0¡ã4,294,967,295 | |
DQ¡BQWORD | ¥|¦r²Õ | 8 | 0¡ã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 |
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)¡An²¾¦ìªº¦ì¤¸¼Æª½±µ¥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
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
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
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
CBW ( convert byte to word ) «ü¥O·|§â AL ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü AX¡CY AL ªº²Ä¤C¦ì¤¸¬°¤@¡A«h AX ªº²Ä 8¡ã15 ¦ì¤¸§¡Åܬ°¤@¡FY AL ªº²Ä¤C¦ì¤¸¬°¹s¡A«h AX ªº²Ä 8¡ã15 ¦ì¤¸§¡Åܬ°¹s¡C
CWD ( convert word to double word ) «ü¥O·|§â AX ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü DX:AX¡CY AX ªº²Ä¤Q¤¦ì¤¸¬°¤@¡A«h DX ©Ò¦³¦ì¤¸§¡Åܬ°¤@¡FY AX ªº²Ä¤Q¤¦ì¤¸¬°¹s¡A«h DX ©Ò¦³¦ì¤¸§¡Åܬ°¹s¡C
CDQ ( convert double word to quad word ) «ü¥O·|§â EAX ¤¤ªº¦³¸¹¼Æ¡AÂX¥R¦Ü EDX:EAX¡CY EAX ªº²Ä¤T¤Q¤@¦ì¤¸¬°¤@¡A«h EDX ©Ò¦³¦ì¤¸§¡Åܬ°¤@¡FY EAX ªº²Ä¤T¤Q¤@¦ì¤¸¬°¹s¡A«h EDX ªº©Ò¦³¦ì¤¸§¡Åܬ°¹s¡C
CBW¡BCWD¡BCDQ §¡¤£¼vÅTºX¼Ð¡C
µL¸¹¼Æ´N¬O¨S¦³¥¿¡Bt¸¹ªº¼Æ¡A¤@¯ë§Ú̧⥦¬Ý¦¨¬O¥¿¼Æ¡An©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³Ì°ª¦ì¤¸ªí¥Ü¥¿¡Bt¸¹¡C³Ì°ª¦ì¤¸¬°¹s¡Aªí¥Ü¦¹¼Æ¬°¥¿¼Æ¡F³Ì°ª¦ì¤¸¬°¤@¡Aªí¥Ü¦¹¼Æ¬Ot¼Æ¡C¥H¤@Ӧ줸²Õªø«×ªº¼Æ¨Ó»¡¡A²Ä¤C¦ì¤¸¬° 1¡A´N¥Nªít¼Æ¡F¬°¹s¡A´N¥Nªí¥¿¼Æ¡Cn©w¸q¤@Ӧ줸²Õ¡B¤@Ó¦r²Õ¡B¤@ÓÂù¦r²Õªº¦³¸¹¼Æ¡A¥i¥H¤À§O¥Î¡uSBYTE¡v¡B¡uSWORD¡v¡B¡uSDWORD¡v¡F¦ý¬O¨S¦³¡uSQWORD¡v¡C
³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¨Ã¥Bn©ñ¦b±ø¥ó±±¨î¬yµ{ªº³Ì«e±»P³Ì«á±¡C
.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¡AY¬°¯u®É¡A¦A«×°õ¦æ .WHILE »P .ENDW ¤§¶¡ªºµ{¦¡¡C¤@ª½¨ì§PÂ_¦¡¬°°²®É¡A¤~¸õ¨ì .ENDW ¤U¤@¦æµ{¦¡°õ¦æ¡C
.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Â_¦¡¡AY§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 ªº»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 ªº»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