¤p¤ì°¸¥´ºâ¦b¥»³¹ùØ¡A»¡©ú¦p¦ó¦L¥X 16 ¦ì¤¸ªøªº¤Q¤»¶i¦ì¼ÆÈ¡A³oÓ¼ÆÈ«ê¦n¬O¤@ӼȦs¾¹ªºªø«×¡C¦]¦¹¦b¥»³¹ùØ¡A¤p¤ì°¸¥´ºâ§â BX ùرªº¼ÆȦL¦b¿Ã¥ú¹õ¤W¡CÂǥѳoÓµ{¦¡¡A¥i¥HÅýŪªÌ§ó¤F¸Ñ²Õ¦X»y¨¥¬O¦p¦ó¥Ñ³Ì°ò¦ªº¤u§@¶}©l¡AºCºCªº©¹¤W¼W¥[¡A³Ì«á¦¨´N°¶¤jªº¤u§@¡C
°²¦p BX ¤º¤§¼ÆȬ° 4162H¡An§â BX ¤§È¦L¦b¿Ã¥ú¹õ¤W¡A¨Ã¤£¹³¨ä¥L¤¤¶¥©Î°ª¶¥»y¨¥¨º¼Ë¡A¥un¥Î«ü¥O¡uPRINT BX¡v§Y¥i¡A¤]¤£¯à¹³©³¤U¨º¼Ë¡G
MOV BX,4162H ;ASCII ½Xªº 41H ¥Nªí¡uA¡v¡A62H ¥Nªí¡ub¡v MOV STRING,BX ;§â BX ¦s¤J STRING ¦r¦ê MOV AH,9 MOV DX,OFFSET STRING;¨ú±o STRING ªº¦ì§} INT 21H
¦]¬°³o¼Ë¦L¥X¨Óªº¬O BH¡BBL ©Ò¥Nªíªº ASCII ¦r¤¸¡A¡ubA¡K¡K¡v¡A¨Ã¤£¬O¤Q¤»¶i¦ì¼ÆÈ¡A4142 ( µù¤@ )¡C¨º»òn¦p¦ó°µ©O¡H
¨ä¹ê¤]¤£Ãø¡A«Ü¦n²z¸Ñ¡C¦pªG BX ¤ºªº¼ÆȬO 4162H¡An¦L¥X¨Ó¡AÅãµM¬On¤À¥|¦¸¦L¡A¦]¦¹¶Õ¥²n¥Î¨ì°j°é¡C²Ä¤@¦¸¦L¡u4¡v³oÓ¦r¤¸¡B²Ä¤G¦¸¦L¡u1¡v³oÓ¦r¤¸¡K¡K¡AÀˬd³o¨Çªü©Ô§B¼Æ¦r ( ¤]´N¬O³o¨Ç¦r¤¸ ) ªº ASCII ½s½X¡A4 ªº ASCII ½X¬O 34H¡B1 ªº ASCII ½X¬O 31H¡B¡K¡K¡C³o¨Çªü©Ô§B¼Æ¦rªº ASCII ½X¦b 30H¡ã39H ¤§¶¡¡C
®Ú¾Ú²Ä¤@³¹ªºªA°Èµ{¦¡¡A¥H²Ä¤@¦¸¦L¥X¨Óªº¡u4¡v³oÓ¦r¤¸¬°¨Ò¡An¦L¥X³oÓ¦r¤¸¡A¥²¶·¥Î©³¤Uµ{¦¡¡G
MOV DL,34H MOV AH,2 INT 21H
²Ä¤G¦¸n¦L¥X¨Óªº¦r¤¸¬O¡u1¡v¡A´N±o¦b DL ùئs©ñ 31H¡C«Ü©úÅã DL ¼È¦s¾¹ùتº¤Q¤»¶i¦ìªºÓ¦ì¼Æ¬O¨Ó¦Ûì¨Ó BX ¼È¦s¾¹ùتº¥|Ó¦ì¼Æªº¼ÆÈ¡ADL ùؤQ¤»¶i¦ìªº¤Q¦ì¼Æ¬O¦Û¦æ¥[¤W¥hªº¡AÀ³¸Ó¬O¥H 30H ¬°°ò·Ç©¹¤W¥[ªºµ²ªG¡C¨º»ò¦³¨S¦³¿ìªk¤@¦¸¥u¨ú¥X BX ¼È¦s¾¹ùتº¥|Ó¦ì¼Æ¤¤ªº¤@Ó¡A¦Ó¥B¥Ñ³Ì°ª¦ì¼Æ¶}©l©O¡Hµª®×¬O¡K¡K¦³ªº¡In¥Î¨ì¨âÓ x86 «ü¥O¡GROL »P AND¡C
©M¨ä¥Lµ{¦¡»y¨¥¬Û¤ñ¡A²Õ¦X»y¨¥³Ì¾Õªøªº´N¬O¦ì¤¸¹Bºâ¡AROL »P AND ³£·|²o¯A¨ì¦ì¤¸¹Bºâ¡C
ROL ¬O¦V¥ª±ÛÂà¼ÆӦ줸ªº«ü¥O ( rotate left )¡A¨ä»yªk¬O
ROL ¹Bºâ¤¸,1 ¦¡(1) ROL ¹Bºâ¤¸,CL ¦¡(2) ROL ¹Bºâ¤¸,¥ß§YÈ ¦¡(3)
ROL «ü¥O·|§â¹Bºâ¤¸ùرªº¨CӦ줸¦V¥ª±ÛÂà¡A³oùتº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡A¤]¥i¥H¬O°O¾ÐÅéÅܼơA¨º¤°»ò¬O±ÛÂà©O¡HÁÙ¬OÁ|Ó¨Ò¤l»¡©ú¡C¦p¤U¹Ï¡ABX ¬° 4162H¡A´«¦¨¤G¶i¦ì¬O¡u0100 0001 0110 0010¡v¡A¦V¥ª±ÛÂà¤@Ӧ줸ªº·N«ä¬O²Ä 15 ¦ì¤¸ªº 0 ¥Ñ¤U¤è±ÛÂಾ¨ì²Ä 0 ¦ì¤¸¡Aì¨Ó²Ä 0 ¦ì¤¸ªº 0 ¦V¥ª²¾¨ì²Ä 1 ¦ì¤¸¡Aì¨Ó²Ä 1 ¦ì¤¸ªº 1 ¦V¥ª²¾¨ì²Ä 2 ¦ì¤¸¡A¨ä¾l¨Ì¦¹Ãþ±À¡A³Ì«áÅܦ¨¡u1000 0010 1100 0100¡v¡A´NÅܦ¨¤Q¤»¶i¦ìªº 82C4H¡C
ROL «ü¥OÁÙ·|¼vÅT¶i¦ìºX¼Ð ( ¶i¦ìºX¼ÐºÙ¬° carry flag¡A²ºÙ CF )¡C·í¦V¥ª±ÛÂà¤@¦ì¤¸®É¡A²Ä¤Q¤¦ì¤¸°£¤F±ÛÂà¦Ü²Ä 0 ¦ì¤¸¤§¥~¡A¤]·|¦P®É½Æ»s¨ì¶i¦ìºX¼Ð¡F¦pªG¬O¦V¥ª±ÛÂà¦hӦ줸®É¡A´N¬O³Ì«á¤@¦¸±ÛÂ઺²Ä 15 ¦ì¤¸½Æ»s¨ì¶i¦ìºX¼Ð¡C¦]¦¹·í BX ¬° 4162H ®É¡A°õ¦æ¡uROL BX,1¡v®É¡A¶i¦ìºX¼Ð¬° 0¡C¦pªG BX ¬° 4162H¡A°õ¦æ¡uROL BX,2¡v®É¡A´N·|³]©w¶i¦ìºX¼Ð ( ¥ç§Y¶i¦ìºX¼Ð·|Åܦ¨ 1 )¡C
¦V¥ª±ÛÂ঳¨âÓ¯S©Ê¡G①¦pªG¹Bºâ¤¸¬O 8 ¦ì¤¸ªº¼È¦s¾¹¡A±ÛÂà 4 Ӧ줸¡A¨º»ò´N·|Åý¸û°ªªº¥|Ӧ줸»P¸û§Cªº¥|Ӧ줸¤¬´«¡C¨Ò¦p AL ¬° 1AH¡A°õ¦æ¡uROL AL,4¡v«á¡AAL Åܦ¨ 0A1H¡C②¦pªG¹Bºâ¤¸¬O 16 ¦ì¤¸ªº¼È¦s¾¹¡A±ÛÂà 4 Ӧ줸«á¡A·|§â³Ì°ªªº¥|Ӧ줸²¾¨ì³Ì§Cªº¥|Ӧ줸¡A¦¸°ªªº¥|Ӧ줸Åܦ¨³Ì°ªªº¥|Ӧ줸¡A¨Ò¦p AX ¬° 4162H¡A°õ¦æ¡uROL AX,4¡v´N·|Åܦ¨ 1624H¡C²Ä¤GÓ¯S©Ê´N¬O PRINTBX.ASM n¥Î¨ìªº¡C
8086/8088 °õ¦æ ROL «ü¥O®É¡A¥u¯à±ÛÂà¤@Ӧ줸¡A¥ç§Y¥u¯à¥Î¦¡¤l (1)¡F¦pªGn±ÛÂà¦hӦ줸¡A¤]¤£¬O¤£¥i¥H¡A¦ýn¥Î¦¡¤l (2)¡A¦b°õ¦æ ROL ¤§«e¡A¥ý§ân±ÛÂ઺¦ì¤¸Ó¼Æ¦s¤J CL ¼È¦s¾¹ùØ¡C80286 ¤Î¨ä¥H«áªº CPU n±ÛÂà¦hӦ줸¡A¥iª½±µ¼g¦b¹Bºâ¤¸¤§«á¡A¦p¦¡¤l (3)¡A¥ß§YÈ´N¬O±ÛÂ઺¦ì¤¸¼Æ¡C
ROR ¬O rotate right ªº·N«ä¡A°£¤F±ÛÂà¤è¦V¦V¥k¤§¥~¡A¨ä¾lªº¯S©Ê³£»P ROL ³£¤@¼Ë¡C
AND «ü¥Oªº»yªk¬O
AND ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
³oÓ«ü¥O¬O±N¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸°µ AND ¹Bºâ¡A¦A±Nµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡CAND ½Ķ¦¨¡u¥B¡vªº·N«ä¡A³oºØ¹Bºâ¬O¥u¦³·í¨âÓ±ø¥ó³£¦¨¥ß®É¤~¬°¯u¡C
¨Ò¦p§A©ñ¾Ç¦^®a¡A¶ý¶ý»¡¡G¡un¼g§¹¤µ¤Ñªº§@·~¨Ã¥B¹w²ß§¹©ú¤éªº¥\½Ò¤~¯àª±¹q¸£¡C¡v·N«ä´N¬O¦pªG§A¡u¤µ¤é§@·~¡v©M¡u¹w²ß©ú¤é¥\½Ò¡v¥un¦³¤@¶µ¨S°µ§¹¡A´N¤£¯à¡uª±¹q¸£¡v¡A¥u¦³·í¨â¶µ³£°µ¦n¤F¤~¥i¥Hª±¹q¸£¡C
¦b¹q¸£¤¤¡A¡u1¡vªí¥Ü¯u©Î¦¨¥ßªº·N«ä¡A¡u0¡vªí¥Ü°°©Î¤£¦¨¥ßªº·N«ä¡C©Ò¥H¡A¥u¦³·í¨âӼƳ£¬°¤@¡A°µ AND ¹Bºâ®É¡A¨äµ²ªG¤~¬°¤@¡A¥un¹Bºâªº¨â¼Æ¦³¤@Ó¬°¹s¡Aµ²ªG´N¬°¹s¡CAND ¹Bºâªí¦p¤U¡G
0 AND 0¡×0 0 AND 1¡×0 1 AND 0¡×0 1 AND 1¡×1
AND «ü¥O¤¤ªº¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©Î°O¾ÐÅéÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O±`¼Æ¡B¼È¦s¾¹©Î°O¾ÐÅéÅܼơA¦ý¬O¨Ó·½¹Bºâ¤¸»P¥Øªº¹Bºâ¤¸¤£¥i¦P¬°°O¾ÐÅéÅܼơC¨Ó·½¹Bºâ¤¸»P¥Øªº¹Bºâ¤¸ªºªø«×¥²¶·¤@P¡A°µ AND ¹Bºâ®É¡A¬Û¹ïÀ³ªº¦ì¤¸¤¬¬Û¹Bºâ¡A¥ç§Y¨Ó·½¹Bºâ¤¸ªº²Ä 0 ¦ì¤¸»P¥Øªº¹Bºâ¤¸²Ä 0 ¦ì¤¸°µ AND ¹Bºâ¡B¨Ó·½¹Bºâ¤¸ªº²Ä 1 ¦ì¤¸»P¥Øªº¹Bºâ¤¸²Ä 1 ¦ì¤¸°µ AND ¹Bºâ¡K¡K¨ä¾l¨Ì¦¹Ãþ±À¡C
Á|Ó¨Ò¤l»¡©ú¡C¦p¥k¹Ïªº DL ¼È¦s¾¹¤§È¬° 24H¡A°õ¦æ¡uAND DL,0FH¡v®É¡A§â¨CӦ줸¹ï»ô«á¡A¨CӦ줸°µ AND ¹Bºâ«á¡Aµ²ªG¦p³Ì¤U±¶À¦r©Ò¥Ü¡Cȱo¤@´£ªº¬O¡A0FH ³oÓ¼ÆÈ¡A¸û°ªªº¥|Ӧ줸§¡¬° 0¡A¦]¦¹¤£ºÞ DL ¸û°ªªº¥|Ӧ줸¬O¤°»ò¡A»P¨ä°µ AND ¹Bºâ«á§¡¬° 0¡F¦Ó¸û§Cªº¥|Ӧ줸§¡¬°¤@¡A¤]¤£ºÞ DL ¸û§Cªº¥|Ӧ줸¬O¤°»ò¡A¨ä¼ÆÈ«O«ù¤£ÅÜ¡C
¹³¤W±³o¼Ë¡A§â¤@Ó¾ã¼Æªº¬Y¨Ç¦ì¤¸²M°£ ( ²M°£ªº·N«ä¬OÅܬ° 0 )¡A¦Ó«O¯d¨ä¥L¦ì¤¸ªº¹Lµ{ºÙ¬°¡u¾B¸n¡v( mask )¡A¤èªk«Ü²³æ¡A¥ý³]©w¤@¼ÆÅýn¾B¸nªº¦ì¤¸³£³]¬°¹s¡AµM«á©Mì¾ã¼Æ°µ AND ¹Bºâ´N¥i¥H¤F¡C
Á¿¸Ñ§¹¥Î ROL »P AND ¨âÓ«ü¥O¥i¥H§â BX ùرªº¤Q¤»¶i¦ì¼ÆȪº¥|Ó¦ì¼Æ¨Ì§Ç©î¸Ñ¶}¨Ó¡A©³¤U¤p¤ì°¸´N¦C¥Xì©lµ{¦¡¨Ó¡A¥HÅWŪªÌ¡G
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 22 23 |
.MODEL TINY ;²ÕĶ¨Ã³sµ²¦¨PRINTBX.COM
.386 ;¨Ï¥Î386«ü¥O¶°¡A¥i¥H¥Î¡uROL BX,4¡v
;*******************************************************************************
.CODE
ORG 100h
;-------------------------------------------------------------------------------
start: jmp begin
value DW 4162h ;n¦b¿Ã¥ú¹õ¤W¦L¥X¨Óªº¤Q¤»¶i¦ì¼Æ
begin: mov bx,value ;§â¦¹¼Æ¦s¤JBX
mov cx,4 ;BX¤º¦³¥|Ó¦ì¼Æ¡A©Ò¥Hn¦L¥|¦¸
mov ah,2 ;DOSªA°Èµ{¦¡¡AAH¡×2¡A¦L¥X¦r¤¸
next: rol bx,4 ;±ÛÂà¥|Ӧ줸¡A§Y¤Q¤»¶i¦ìªº¤@Ó¦ì¼Æ
mov dl,bl ;«O¦sBX¡A¥ÎDL¹Bºâ
and dl,0fh ;¾B¸nDL¤º¸û°ªªº¥|Ӧ줸
add dl,"0" ;¨ÏDL¤§ÈÅܦ¨ªü©Ô§B¼Æ¦rªºASCII½X
cmp dl,"9" ;Àˬd¬O§_¬°^¤å¦r¥À
jbe print_it ;¦pªG¤£¬O¡A´N¸õ¨ìprint_it
add dl,7 ;¦pªG¬O¡A¥[¤W7¡A¨ÏDLÅܦ¨A¡ãF
print_it: int 21h ;¦L¥X¦r¤¸
loop next ;¬O§_¤w¦L¥X¥|Ó¦ì¼Æ¤F¡AY§_¡A¸õ¨ìnext
int 20h ;Y¬O¡Aµ²§ô
;*******************************************************************************
END start |
§â PRINTBX.ASM ²ÕĶ³sµ²ªº¤è¦¡«Ü²³æ¡A¶}±Ò¡uMicrosoft Virtual PC¡v¡A°õ¦æ¨ä¤¤ªº¡uMS-DOS 6.20¡vµêÀÀ¾÷¾¹¡AµM«á¿é¤J¤U±ªº«ü¥O¡G
C:\>e: [Enter] E:\>cd dos\printbx [Enter] E:\DOS\PRINTBX>ml printbx.asm [Enter] Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: printbx.asm Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved. Object Modules [.obj]: printbx.obj/t Run File [printbx.com]: "printbx.com" List File [nul.map]: NUL Libraries [.lib]: Definitions File [nul.def]: E:\DOS\PRINTBX>
¬Ý¨ì¤W±ªº PRINTBX.ASM¡A±q²Ä¤Q¤@¦æ¨ì¤G¤Q¦æ´N¬O¦L¥X BX ¤ºªº¥|¦ì¼Æªº¤Q¤»¶i¦ì¼ÆÈ¡A©³¤U¤@¤@¸ÑÄÀ·s«ü¥O¡C
¡u.386¡v°²«ü¥O¬O¥Î¨Ó«ü¥Ü ML.EXE ¦b½s»sµ{¦¡½Xªº®ÉÔ¡A¨Ï¥Î 80386 «ü¥O¶°½s»s¡C¦b²Ä¹s³¹¡u80286¡BIBM PC/AT »P MS¡ÐDOS 3.0¡v¤@¸`¤¤´¿«ü¥X¡Ax86 CPU ¦³¦V¤U¬Û®eªº¯S©Ê¡A·s¤@¥Nªº CPU ¤¤·s¼W¤@¨Ç«ü¥O¦P®É¤S¯à°õ¦æ«e¤@¥N CPU ªº©Ò¦³«ü¥O¡CºI¦Ü¥Ø«e ( ¥Á°ê 110 ¦~ )¡A^¯Sº¸¥X«~ªº CPU ¤]¾ú¸g³\¦h¥N¤F¡A¦]¦¹¤~·|¦³³oÓ°²«ü¥O¡C¦pªG¤£«ü©wþ¤@¥N CPU ªº¸Ü¡AML.EXE ¹w³]«ü¥O¶°¬O¡u.8086¡v¡A¤]´N¬O 8086/8088 CPU ªº«ü¥O¶°¡C
«e±´£¹L¡A8086/8088 ªº¦V¥ª±ÛÂà«ü¥O¡A¨C¦¸¥u¯à±ÛÂà¤@Ӧ줸¡C¦ý¬O²{¦bªº¹q¸£©Ò°t³Æªº CPU ¦´N¬O Core i3/5/7/9 ( ¤ñ .586 ÁÙn§ó·sªº CPU ) ¤F¡A·íµMÀ³¸Ó¥Î§ó¦nªº«ü¥O¶°¡C¬°¤F¯à°÷¨Ï¥Î¡uROL BX,4¡v³oºØ¤@¦¸¥i¥H±ÛÂà¥|Ӧ줸ªº«ü¥O¡A¤p¤ì°¸¨Ï¥Î¡u.386¡v°²«ü¥O¡A«ü©w¯à¨Ï¥Î 80386 «ü¥O¶°¡C
©³¤U¤@¨t¦Cªº°²«ü¥O¡A´£¨ÑŪªÌ°Ñ¦Ò¡CÃþ¦üªº°²«ü¥O¦³¡u.286¡v¡B¡u.386¡v¡B¡u.486¡v¡B¡u.586¡v¥H¤Î¡u.286P¡v¡B¡u.386P¡v¡B¡u.486P¡v¡B¡u.586P¡v¡A«á±¥|Ó°²«ü¥OÅýµ{¦¡¯à¨Ï¥Î¯S®íªº«ü¥O¡A³o¨Ç¯S®íªº«ü¥O¤j¦h¥Î©ó«OÅ@¼Ò¦¡ªº¯SÅv¶¥¯Å«ü¥O¡C¥t¥~ÁÙ¦³³]©w¯BÂI¹Bºâ¾¹«ü¥O¶°ªº¡A¥]§t¡u.8087¡v¡B¡u.287¡v¡B¡u.387¡v¡A¤@¯ë¦Ó¨¥¡A¦pªGì©lµ{¦¡¤w«ü©w¬YÓ CPU ªº«ü¥O¶°¡AML.EXE ·|¦Û¦æ·f°t»P¤§°t¦Xªº¯BÂI¹Bºâ¾¹«ü¥O¶°¡C¨Ò¦p«ü©w¡u.286¡v¡AML.EXE ·|¦Û°Ê«ü©w¡u.287¡v¡A¦ý¤]¥i¥H¦Û¦æ«ü©w¨ä¥L¯BÂI¹Bºâ¾¹«ü¥O¶°¡CÁÙ¦³¡u.8086¡v¡B¡u.186¡vµ¥°²«ü¥O
ª`·N¡I¡u.MODEL¡v»P¡u.386¡vªº¥ý«á¦¸§Ç«Ü«n¡C¦pªG¡u.MODEL¡v¦b«e¡A¡u.386¡v¦b«á¡A¨º»ò·|¨Ï¥Î¤Q¤»¦ì¤¸ªº°Ï¬q¡A³o¬O¦b DOS ¨t²Î¤¤ªºµ{¦¡¨Ï¥Îªº¤è¦¡¡F¦pªG¡u.386¡v¦b«e¡A¡u.MODEL¡v¦b«á¡A¨º»ò·|¨Ï¥Î¤T¤Q¤G¦ì¤¸ªº°Ï¬q¡A³o¬O¦b Windows ¨t²Î¤¤ªºµ{¦¡¨Ï¥Îªº¤è¦¡¡C
DEBUG µLªk»{ÃÑ¥þ³¡¡u.286¡vªº«ü¥O¶°¡A¹³¡uROL BX,4¡v´NµLªk¥¿±`Åã¥Ü¡C§Ú̹êÅç¬Ý¬Ý¡G
E:\DOS\PRINTBX>debug printbx.com [Enter] -u [Enter] 10B8:0100 EB02 JMP 0104 10B8:0102 62 DB 62 10B8:0103 41 INC CX 10B8:0104 8B1E0201 MOV BX,[0102] 10B8:0108 B90400 MOV CX,0004 10B8:010B B402 MOV AH,02 10B8:010D C1 DB C1 ¡÷¦¹³B¥»À³¸Ó¬O¡uROL BX,4¡v¦ý DEBUG ¤£»{±o 80286 ©Ò¦³«ü¥O¡A©Ò¥H¤Ï²ÕĶ¿ù»~ 10B8:010E C3 RET 10B8:010F 048A ADD AL,8A 10B8:0111 D380E20F ROL WORD PTR [BX+SI+0FE2],CL 10B8:0115 80C230 ADD DL,30 10B8:0118 80FA39 CMP DL,39 10B8:011B 7E03 JLE 0120 10B8:011D 80C207 ADD DL,07 -q [Enter] E:\DOS\PRINTBX>
¥i¥H¥Î¥t¤@Ó°£¿ù¾¹¥N´À¡A¤p¤ì°¸±ÀÂ˪º¬OÀH MASM 4.0 ªþªº²Å¸¹°£¿ù¾¹¡ASYMDEB.EXE¡A¦pªG±z«ö·Ó¤p¤ì°¸²Ä¹s³¹¤Îªþ¿ý¤@ªº¤è¦¡¦w¸Ë¡ASYMDEB.EXE ¤w¸g¦b¡uC:\TOOLS\¡v¤l¥Ø¿ýùؤF¡CSYMDEB ªº¨Ï¥Î¤èªk©M DEBUG Ãþ¦ü¡A¦ý¥\¯à§ó¬°±j¤j¡A§Ú̸ոլݡG
E:\DOS\PRINTBX>c:\tools\symdeb printbx.com [Enter] Microsoft (R) Symbolic Debug Utility Version 4.00 Copyright (C) Microsoft Corp 1984, 1985. All rights reserved. Processor is [80286] -u 104 [Enter] 1405:0104 8B1E0201 MOV BX,[0102] 1405:0108 B90400 MOV CX,0004 1405:010B B402 MOV AH,02 1405:010D C1C304 ROL BX,04 ¡÷¤Ï²ÕĶ¥¿½T 1405:0110 8AD3 MOV DL,BL 1405:0112 80E20F AND DL,0F 1405:0115 80C230 ADD DL,30 ;'0' 1405:0118 80FA39 CMP DL,39 ;'9' -q [Enter] E:\DOS\PRINTBX>
PRINTBX.ASM ªº²Ä¤K¦æ¡A¡uvalue DW 4162h¡v¡Avalue ¬OÅܼƦWºÙ¡A³oùتºÅܼƬOÀx¦s¦b°O¾ÐÅ餤ªº¬Y¤@Ó¦ì§}¡A¤£¬OÀx¦s¦b¼È¦s¾¹ùØ¡A©Ò¥H¤]¥s°O¾ÐÅéÅܼơF·íµM§A¤]¥i¥H§â¼È¦s¾¹·í¦¨ÅܼơA¥s¼È¦s¾¹ÅܼơA¦ý¥H«á¤p¤ì°¸§â°O¾ÐÅéÅܼƺ٬°ÅܼơA¼È¦s¾¹ÅܼƴN¥s¼È¦s¾¹¡C¦b²Õ¦X»y¨¥¤¤¡A«Å§i¤@ÓÅܼƱĥΪº¤èªk¦p¤U¡G
ÅܼƦW DW ¼ÆÈ
¦b²Õ¦X»y¨¥ùØ¡A¥ÎÅܼƦWºÙ¥N´À¦ì§}¡A¨Ò¦p¦b PRINTBX ùØ¡Avalue ´N¬O¦ì§} 0102¡A§A¥i¥H¬Ý¨£¤W±¥Î SYMDEB ¤Ï²ÕĶªºµ²ªG ( ¥H¬õ¦rªí¥Ü )¡C¦pn§â value ¤§È²¾¤J BX¡A²ÕĶ«á·|Åܦ¨¡uMOV BX,[0102]¡v¡C³oùئ³ÓÆ[©À¯S§O«n¡A¥H¤¤¬A¸¹§â¦ì§}¬A°_¨Ó¡A¥Nªí¦¹¦ì§}¤ºªº¼ÆÈ¡C¦]¦¹¡A¡u[0102]¡v¥Nªíªº¬O¦ì§} 0102 ªº¼ÆÈ¡A¥ç§Y [0102]¡×4162¡C( ½Ð°Ñ¾\µù¤G )
©w¸qÅܼƮɡA¦pªG¤£ª¾¹D¼ÆȬO¦h¤Ö¡A¤]¥i¥H¥Î¡u?¡v¥N´À¡C¨Ò¦p
unknow DW ?
DW ¬O©w¸q¤Q¤»¦ì¤¸ªºÅܼơA¤Q¤»¦ì¤¸ªøºÙ¬°¡u¦r²Õ¡v¡A¼ÆÈ¥u¯à¦b 0¡ã65535 ¤§¶¡¡ADW ¤]¥i¥H¼g¦¨ WORD¡A¨Ò¦p
unknow WORD ?
ÅܼƦWºÙªº²Ä¤@Ó¦r¥²¶·¥H^¤å¦r¥À¡B©³½u¡B@¡B?¡B$ µ¥¬°¶}ÀY¡A¨ä«áÁÙ¥i¥H¥Îªü©Ô§B¼Æ¦r¡A·íµM^¤å¡B©³½u¡B@ ¤´µM¥i¥H¨Ï¥Î¡C¹ï ML.EXE 6.11 ª©¨Ó»¡¡AÅܼƦWºÙ³Ì¦h¥u¯à¨ì 247 Ó¦r¤¸¡A¤w¸g«D±`¨¬°÷¤F¡C¥t¥~ÅܼƦWºÙ¤£¯à©M°²«ü¥O©Î¬O x86/x87 «ü¥O¶°«½Æ¡C
¦pªG§A½T©w¬YÓÅܼƤ£·|¶W¹L 255 ªº¸Ü¡A¥i¥H¥Î DB ©Î BYTE ©w¸q¤K¦ì¤¸ªºÅܼơA½d³ò±q 0 ¨ì 255¡A¨ä»yªk¬°¡G
ÅܼƦW DB ¼ÆÈ ÅܼƦW BYTE ¼ÆÈ
°£¤F DB¡BDW ¥~¡AÁÙ¦³¦n´XºØ¸ê®ÆÃþ«¬¡A¨ä¼ÆȽd³ò¤£¦P¡A¦C¦b¤Uªí¡G
¸ê®ÆÃþ«¬ | «Å§i¤è¦¡ | ¦WºÙ | ªø«×¡@( ¦ì¤¸²Õ ) | µL¸¹¾ã¼Æ½d³ò |
¡@¡@¡@¦r¤¸ | DB ©Î BYTE | ¦ì¤¸²Õ | 1 | 0¡ã255 |
µL¸¹µu¾ã¼Æ | DW ©Î WORD | ¦r²Õ | 2 | 0¡ã65535 |
¡@µL¸¹¾ã¼Æ | DD ©Î DWORD | Âù¦r²Õ | 4 | 0¡ã4294967295 |
µL¸¹ªø¾ã¼Æ | DQ ©Î QWORD | ¥|¦r²Õ | 8 | 0¡ã18446744073709551615 |
ADD ¬O¥[ªk«ü¥O¡A»yªk¬O
ADD ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
ADD ·|§â¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¬Û¥[¡A¨Ã§â©M¦s¤J¥Øªº¹Bºâ¤¸ùر¡C¦]¦¹¡A¥Øªº¹Bºâ¤¸¤§È·|§ïÅÜ¡A¨Ó·½¹Bºâ¤¸¤§È¤£ÅÜ¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©Î°O¾ÐÅéÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡B°O¾ÐÅéÅܼƩΥߧYÈ¡A¦ý¬O¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¦ì¤¸¼Æ¶·¤@P¡A¥B¤£¥i¦P®É¬°°O¾ÐÅéÅܼơC¨Ò¦p©³¤Uªº¨Ò¤l¡G
value DW ? ¡K¡K ¡K¡K ADD AX,BX ADD AX,value ADD AX,9 ADD avlue,CX
¤W±ªº«ü¥O³£¬O¥¿½Tªº¡C
¦^¨ì PRINTBX ì©lµ{¦¡¤¤¡A²Ä¤Q¤¦æ¬O¡uADD DL,"0"¡v¡A²ÕĶ¾¹·|§â¤@¹ï¡u"¡v©Î¤@¹ï¡u'¡v¤ºªº¦r¤¸¡AÂà´«¦¨ ASCII ½X¡A¤]´N¬O»¡³o¤@¦æ·|¦Û°ÊÅܦ¨¡uMOV DL,30H¡v¡A¦]¬°¦r¤¸¡u0¡vªº ASCII ½X¬O 30H¡C
±µ¤U¨Ón»¡©úªº¬O²Ä¤Q¤»¡B¤Q¤C¦æ¡G
cmp dl,"9" ;Àˬd¬O§_¬°^¤å¦r¥À jbe print_it ;¦pªG¤£¬O¡A´N¸õ¨ìprint_it
³o¨â¦æ¬OÀˬd DL ¬O§_¶W¹L 39H ( ªü©Ô§B¼Æ¦r 9 ªº ASCII ½X¬O 39H )¡A¦pªG¨S¶W¹L´N¸õ¨ì print_it ³BÄ~Äò°õ¦æ¡F¦pªG¶W¹L´N°õ¦æ¡uJBE print_it¡v¤U¤@¦æ«ü¥O¡C¬°¤°»ònÀˬd DL ¦³¨S¦³¶W¹L 39H ©O¡H³o¬O¦]¬°¤Q¤»¶i¦ì¼ÆȬO¥H 0¡ã9 »P A¡ãF ªí¥Ü¡A¦ý¬O¦b ASCII ½s½X¤¤¡Aªü©Ô§B¼Æ¦r«á±¨Ã¤£¬O^¤å¦r¥À¡A^¤å¦r¥À A ªº ASCII ½X¬O 41H¡A»P 39H ¹j¤F¤CÓ¦r¤¸¡C©Ò¥H¦pªG DL ¶W¹L 39H¡Aªí¥Ü¦¹¦ì¼Æ¥²¶·¥H A¡ãF ªí¥Ü¡A»Ýn¦A¥[¤W 7¡C
JBE «ü¥Oªº¤@¯ë¥Îªk¬O
CMP ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸ JBE ¼Ð°O
JBE ³q±`¦b CMP «ü¥O¤§«á¡Aªí¥Ü¥Øªº¹Bºâ¤¸§C©ó©Îµ¥©ó¨Ó·½¹Bºâ¤¸ ( §C©ó´N¬O¤p©óªº·N«ä¡A¦b²Õ¦X»y¨¥¤¤¡A§C©ó¥Î¦bµL¸¹¼Æªº¤ñ¸û )¡A´N¸õÅD¦Ü¼Ð°O³B°õ¦æ¡CJBE ¨ä¹ê¬O¡ujump short if below or equal¡vªº·N«ä¡A¤]¥i¥H¥Î JNA¡A¨âªÌ¬O¤@¼Ëªº·N«ä¡CJNA ¬O¡ujump short if not above¡v¡A¥ç§Y¤£°ª©ó´N¸õÅD¡C¤£ºÞ¬O JBE ©Î JNA ³£¥u¯à¬Oµuµ{¸õÅD¡A¨Ã¥B CPU ·|±N¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸·í°µµL¸¹¼Æ¨Ó¤ñ¸û¡Cn¸ÑÄÀµL¸¹¼Æ¬O¤°»ò¡A¨Ã¤£®e©ö¡A¦]¦¹¥H«á¦A»¡¡A²{¦b¥i¥H§âµL¸¹¼Æ·í¦¨¥¿¼Æ¡A¦ý¨âªÌ¨Ã¤£§¹¥þ¬Û¦P¡C¦³ÃöµL¸¹¼Æªº¤ñ¸û¡AÁÙ¦³³\¦h¬ÛÃö¥B±`¨£ªº«ü¥O¡A½Ð¾\Ūµù¤T¡C
¦b°õ¦æ JBE ®É¡ACPU ·|ÀˬdºX¼Ð¼È¦s¾¹¡C·í¹sȺX¼Ð³B©ó³]©wª¬ºA¡A©Î¶i¦ìºX¼Ð³B©ó³]©wª¬ºA¡A´Nµo¥Í¸õÅD¡C«e¤@Ó±ø¥ó«Ü®e©ö²z¸Ñ¡A·í¹sȺX¼Ð³]©w®É¡Aªí¥Ü¹Bºâµ²ªG¬°¹s¡A¥ç§Y¥Øªº¹Bºâ¤¸µ¥©ó¨Ó·½¹Bºâ¤¸¡A§Yµo¥Í¸õÅD¡C¨º»ò¶i¦ìºX¼Ð©O¡H©³¤U¤p¤ì°¸n»¡©úªº¬O¶i¦ìºX¼Ðªº·N¸q¡C
¶i¦ìºX¼Ð²ºÙ CF¡A·í CPU °µ¹Bºâ®É¡A¦pªGµo¥Í¶i¦ì©Îɦì®É¡A¶i¦ìºX¼Ð³Q³]¬° 1¡F¤Ï¤§³]¬° 0¡C©³¤Uªº¨Ò¤lÅã¥Ü¤F¨â¼Æ¬Û¥[¥H¤Î¬Û´î¡A¶i¦ìºX¼Ðªºª¬ºA¡C¦b¨C¦¸°õ¦æ DEBUG ªº¡uT¡v«ü¥O«á¡A©Ò¦C¥X¨Ó¼È¦s¾¹¤§Èªº²Ä¤G¦æ«á±¡A´N¬OºX¼Ð¼È¦s¾¹¤§È¡A¨ä¤¤ NC ¥Nªí¶i¦ìºX¼Ð¬° 0¡ACY ¥Nªí¶i¦ìºX¼Ð¬° 1¡G
C:>debug [Enter] -a [Enter] 1096:0100 mov al,90 [Enter] 1096:0102 mov bl,80 [Enter] 1096:0104 mov cl,9 [Enter] 1096:0106 add al,bl [Enter] 1096:0108 sub al,cl [Enter] 1096:010A sub al,cl [Enter] 1096:010C [Enter] -t[Enter] AX=0090 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0102 NV UP EI PL NZ NA PO NC 1096:0102 B380 MOV BL,80 -t[Enter] AX=0090 BX=0080 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0104 NV UP EI PL NZ NA PO NC 1096:0104 B109 MOV CL,09 -t[Enter] AX=0090 BX=0080 CX=0009 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0106 NV UP EI PL NZ NA PO NC 1096:0106 00D8 ADD AL,BL -t[Enter] AX=0010 BX=0080 CX=0009 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0108 OV UP EI PL NZ NA PO CY 1096:0108 28C8 SUB AL,CL ³o¬O°õ¦æ ADD AL,BL «áªº¶i¦ìºX¼Ð¡A¶i¦ì¤F⤶ -t[Enter] AX=0007 BX=0080 CX=0009 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=010A NV UP EI PL NZ AC PO NC 1096:010A 28C8 SUB AL,CL ³o¬O°õ¦æ SUB AL,CL «áªº¶i¦ìºX¼Ð¡A¨Sɦì⤶ -t[Enter] AX=00FE BX=0080 CX=0009 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=010C NV UP EI NG NZ AC PO CY 1096:010C C3 RET ³o¬O°õ¦æ SUB AL,CL «áªº¶i¦ìºX¼Ð¡Aɦì¤F⤶ -
90h¡Ï80h À³¬° 110h¡A±q¤G¦ì¼ÆÅܤT¦ì¼Æµo¥Í¶i¦ì¡ACPU ´N·|³]©w¶i¦ìºX¼Ð ( CY )¡CÁöµM«á¨Ó AL ¬° 1¡A¦ý¦]¬°¶i¦ìºX¼Ð¬°¤@¡Aµo¥Í¤F¶i¦ì¡A©Ò¥H¬Û¥[ªºµ²ªG¨Ã¤£¬Oªí±¤W AL ªº¼ÆÈ¡C±µµÛ¬O¦ì§} 0108 ³Bªº´îªk¡A¹Bºâ«e¡AAL ¬° 10¡ACL ¬° 9¡A¥H AL ´î¥h CL ®É¡AAL ¤j©ó CL¡A°÷´î¡A¤£·|µo¥Íɦì¡ACPU ·|²M°£¶i¦ìºX¼Ð ( NC )¡C±µµÛ¬O¦ì§} 0109 ³Bªº¡uSUB AL,CL¡v¡A³o®ÉÔ AL ¤p©ó CL µo¥Íɦì¡ACPU ·|³]©w¶i¦ìºX¼Ð ( CY )¡C³o¤T³B§¡¥HÂŦrÅã¥Ü¡C
¦b²Ä¤T³¹ùØ´¿´£¹L¡ACMP «ü¥O¨ä¹ê¬O§@´îªk¹Bºâ¡A¥u¬O¤£§â©Ò±oªº®tÀx¦s°_¨Ó¡C¦]¦¹°õ¦æ§¹ CMP «ü¥O¡A¤]·|¼vÅT¶i¦ìºX¼Ð¡C¦pªG¶i¦ìºX¼Ð³Q³]©w¡Aªí¥Üµo¥Íɦì¡A¤]´N¬O¥Øªº¹Bºâ¤¸¤ñ¸û¤p¡A¨Ó·½¹Bºâ¤¸¸û¤j¡C©Ò¥H JBE «ü¥Oªº°µªk¡A´N¬OÀˬd¶i¦ìºX¼Ð¡A¦pªG³]©w¡A´Nªí¥Ü¥Øªº¹Bºâ¤¸¤p¡Aµo¥Í¸õÅD¡C
§Ú̹ê»Ú¤W¼gµ{¦¡®É¡A¥u»Ý°O±o JBE ¬O«ü¤p©ó©Îµ¥©ó®É¡A´Nµo¥Í¸õÅD¡C¦Ó¤£»Ýn°O±o°õ¦æ JBE ®É¡A¬O¨Ì¾Úþ¤@ºØºX¼Ðª¬ºA¡C¤p¤ì°¸·|§â³o¨Çì²z¼g¥X¨Ó¡A¥u¬O·Q§i¶D¤j®a¡AJBE ©Î¨ä¥L±ø¥ó¸õÅD«ü¥O¡A³£¬O¨Ì·ÓºX¼Ð³]©w¡A¤~¨M©w¦p¦ó¸õÅD¡C
CLC »P STC ¬O¥Î¨Ó²M°£¶i¦ìºX¼Ð©M³]©w¶i¦ìºX¼Ð¥Îªº¡A¨ä·N¬°¡uclear carry flag¡v©M¡uset carry flag¡v¡A³£¨S¦³¹Bºâ¤¸¡C
ÁöµM³oÓµ{¦¡µLªk¦L¥X BX ªº¼ÆȨӡA¥u¯à¦L¥X BH¡BBL ©Ò¥Nªíªº ASCII ¦r¤¸¡A¨Ã¤£²Å¦X§Ú̪ºn¨D¡C¦ýȱoª`·Nªº¬O¡A¦L¥X¨Óªº¦r¤¸¬O¡ubA¡K¡K¡v¡A¬°¦ó¤£¬O¡uAb¡K¡K¡v©O¡H³o¨ä¤¤ªº¹D²zÁÙ¤j¦³¾Ç°Ý©O¡I
ì¨Ó IBM Ó¤H¹q¸£¤Î¨ä¬Û®e¾÷ºØ¦b°O¾ÐÅé¤Wªº¦w±Æ¬O¡A¸û°ª¦ì¼Æ¦s©ñ©ó°ª¦ì§}ªº°O¾ÐÅé¡A¦Ó¸û§C¦ì¼Æ¦s©ñ©ó§C¦ì§}ªº°O¾ÐÅé¡A³oºØ¦ì¤¸²Õ±Æ¦Cªº¤è¦¡ºÙ¬°¡u¤pºÝ§Ç¡v( little-endian )¡C¨Ò¦p¤Q¤»¶i¦ìªº 1234H ¦û¥Î¨âӦ줸²Õ¡A1 ¬O³Ì°ª¦ì¼Æ¡A¼g¦b³Ì¥ªÃä¡F4 ¬O³Ì§C¦ì¼Æ¡A¼g¦b³Ì¥kÃä¡C¦ý¬O¡A°O¾ÐÅ骺¦w±Æ¬O§C¦ì§}¦b¥ªÃä¡A°ª¦ì§}¦b¥kÃä¡C¦ý¬O¦pªG§â 1234H ¦s¤J°O¾ÐÅé¦ì§} 0110 ³B®É¡A»Ý¦û¥Î¨âӦ줸²Õ¡A¦]¦¹ 0110 ³B¦s©ñ 34H¡A0111 ³B¦s©ñ 12H¡C
¦]¦¹Åª¨ú©Î¼g¤J®É¡A±`±`nÄA˹L¨Ó«ä¦Ò¡C¨Ò¦p©³¤Uªºµ{¦¡¤ù¬q¡G
C:\>debug [Enter] -a [Enter] 1096:0100 mov bx,1234 [Enter] 1096:0103 mov [110],bx [Enter] ¡÷§â BX ¦s©ó°O¾ÐÅé 0110 ³Bªº¤@Ó¦r²ÕùØ 1096:0107 [Enter] -d 110 l10 [Enter] 1096:0110 04 8B C6 F7 0A 0A D0 D3-48 DA 2B D0 34 00 85 10 ........H.+.4... -t [Enter] AX=0000 BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0103 NV UP EI PL NZ NA PO NC 1096:0103 891E1001 MOV [0110],BX DS:0110=8B04
¤W±ªº¨âÓ«ü¥O¬O¦b©|¥¼§â BX ¤§¤º®e 1234H ¶ñ¤J¦ì§} 0110 ¤§«e¡A¦ì§} 0110¡ã0111 ³Bªº¦r²Õ¬õ¦rªí¥Ü¡C©³¤U¤U¹F¡uT¡v«ü¥O¡A°õ¦æ§â BX ¤º¤§¼ÆȦs¤J°O¾ÐÅé¦ì§} 0110 ³B¡G
-t [Enter] AX=0000 BX=1234 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1096 ES=1096 SS=1096 CS=1096 IP=0107 NV UP EI PL NZ NA PO NC 1096:0107 47 INC DI -d 110 l10 [Enter] 1096:0110 34 12 C6 F7 0A 0A D0 D3-48 DA 2B D0 34 00 85 10 4.......H.+.4... - ⤷110 ³Bªº¡u34 12¡v´N¬Oì¥ý BX ¤§È¡A1234H
¤W±µ{¦¡·|§â 1234H ¦s¤J°O¾ÐÅé 0110 ³Bªº¤@Ó¦r²ÕùØ¡C¦b DEBUG ¥Î Dump «ü¥OÆ[¹î®É¡AÅã¥Üªºªø«×¬O¤@Ӧ줸²Õ¡A¤@Ó¦r²Õn¦û¥Î¨âӦ줸²Õ¡C¹³¤W± BX ùتº 1234H¡A12H ¬O¸û°ª¦ì¼Æ¡A¦s©ó¸û°ª¦ì§}¡A0111 ³B¡F34H ¬O¸û§C¦ì¼Æ¡A¦s©ó¸û§C¦ì§}¡A0110 ³B¡C¦]¦¹¦b DEBUG ùجݰ_¨Ó¬OÄA˪º¡Aªì¾ÇªÌ«Ü®e©ö·d²V¡C
¥t¥~¦³¨Ç¹q¸£¤W¡A¬O§â¸û°ª¦ì¼Æ¦s©ñ©ó§C¦ì§}ªº°O¾ÐÅé¡A¦Ó¸û§C¦ì¼Æ¦s©ñ©ó°ª¦ì§}ªº°O¾ÐÅé¡A³oºØ¦ì¤¸²Õ±Æ¦Cªº¤è¦¡ºÙ¬°¡u¤jºÝ§Ç¡v( big-endian )¡C
¦b²Õ¦X»y¨¥ùØ¡A[¦ì§}] ¥Nªí¸Ó¦ì§}¤ºªº¼ÆÈ¡A¨Ò¦p¥»¨Òùتº¡uMOV BX,[0102]¡v¡A¨Ã¤£¬O§â 0102 ©ñ¨ì BX ùØ¡A¦Ó¬O§â°O¾ÐÅé¦ì§} 0102 ªº¤º®e©ñ¨ì BX ùØ¡C¦]¬° BX ¬O¤Q¤»¦ì¤¸ªº¼È¦s¾¹¡A¦b°O¾ÐÅé¦ì§} 0102 ³B¡A16 ¦ì¤¸ªº¸ê®Æ¬O 4162H¡A¦]¦¹°õ¦æ§¹³o±ø«ü¥O«á BX ¬° 4162H¡C
«e±´X³¹´£¹L¡AÅܼƦWºÙ¨ä¹ê¤]¬O¬YÓ¦ì§}¡A¹³ printbx.asm ùتº value¡A¥Nªíªº´N¬O 0102 ³oÓ¦ì§}¡C·Ó²zÁ¿¡A¦bì©l½X¤¤¦pªG¼g
MOV BX,value ;²Ä①¦¡
À³¸Ó¬On§â value ¥Nªíªº¦ì§}²¾¤J BX ùؤ~¹ï¡A¤]´N¬O BX «á¨Ó¬O 0102¡C¦pªGn¨ú±o¦ì§} 0102 ¤ºªº¼ÆÈ¡AÀ³¸Ón¼g¦¨
MOV BX,[value] ;²Ä②¦¡
¤~¹ï§a¡Hªº½T¦p¦¹¡A³oùر`±`Åý¤H·d¤£²M·¡¡A¦]¦¹¦³¨Ç²ÕĶ¾¹n¦s¨úÅܼÆùتº¤º®e¡A¨ä»yªkn¼g¦¨Ãþ¦ü²Ä②¦¡¤~¦æ¡C¤£¹L MASM «h¤´±Ä¥Î²Ä①¦¡¡A³o¤j·§¬O¬°¤F°t¦X°ª¶¥»y¨¥ªº«ä¸ô§a¡H
°£¤F¥»³¹¤¶²Ð¹Lªº JBE «ü¥O¥~¡AÁÙ¦³¥t¥~¤TÓ«ü¥O©M JBE Ãþ¦ü¡A¥¦Ì¬O JA¡BJB¡BJAE¡C³o¥|ºØ«ü¥O¡CJA ¬O¡ujump short if above¡vªºÁY¼g¡A·N«ä¬O¦pªG°ª©ó´N¸õÅD¡C°ª©ó©Î§C©óªº·N«ä¨ä¹ê´N¬O¤j©ó©Î¤p©ó¡A¥¦Ì³q±`¥Î¦b¤ñ¸ûµL¸¹¼Æªº¤j¤p¡CJA ÁÙ»Ýn·f°t CMP ¨Ï¥Î¡A¹³¤U±ªº¼Ë¤l¡G
CMP ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸ JA ¼Ð°O
¤W±¨â¦æªºµ{¦¡¬O¤ñ¸û¥Øªº¹Bºâ¤¸©M¨Ó·½¹Bºâ¤¸¡A¦pªG¥Øªº¹Bºâ¤¸°ª©ó¨Ó·½¹Bºâ¤¸¡A¨º»ò¸õ¨ì¼Ð°O³B°õ¦æ¡A§_«h°õ¦æ¡uJA ¼Ð°O¡vªº¤U¤@¦æ«ü¥O¡C¨Ò¦p©³¤Uªºµ{¦¡¡G
MOV CX,1
MOV AX,100
CMP AX,4
JA OK ;¦]¬° AX¡Ö4¡A©Ò¥H·|¸õ¨ì OK: ³B°õ¦æ
MOV CX,0
OK:
¦]¬° AX¡Ö4¡A©Ò¥H°õ¦æ§¹¡uJA OK¡v«á´Nª½±µ¸õÅD¨ì OK: ³B¡A¦]¦¹¤£·|°õ¦æ¡uMOV CX,0¡v¡A¬G CX ¤´«O«ùìÈ¡A1¡C
JB ¬O¡ujump short if below¡vªºÁY¼g¡A·N«ä¬O¦pªG§C©ó´N¸õÅD¡CJAE ¬O¡ujump short if above or equal¡vªºÁY¼g¡A·N«ä¬O¦pªG°ª©ó©Îµ¥©ó´N¸õÅD¡C
ADD ªº»yªk¬O
ADD ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
ADD «ü¥O·|§â¥Øªº¹Bºâ¤¸¥[¤W¨Ó·½¹Bºâ¤¸¤§«á¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©Î°O¾ÐÅéÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡B°O¾ÐÅéÅܼƩΥߧYÈ¡C¦ý¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¥i¦P®É¬°°O¾ÐÅéÅܼơA¥B¨âªÌªø«×n¬Û¦P¡C
AND ªº»yªk¬O
AND ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸
ADD «ü¥O·|§â¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸°µ¡u¥B¡v¹Bºâ¤§«á¡A¦A§âµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©Î°O¾ÐÅéÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡B°O¾ÐÅéÅܼƩΥߧYÈ¡C¦ý¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¥i¦P®É¬°°O¾ÐÅéÅܼơA¥B¨âªÌªø«×n¬Û¦P¡C
¤@¯ë¦Ó¨¥¡AAND «ü¥O¥Î¢¦b¨Ï¹Bºâ¤¸ªº¬Y¨Ç¦ì¤¸Åܬ°¹s¡A¦ý¤Sn«O¯d¨ä¥L¦ì¤¸¤§È¡A³oºØ¹Lµ{ºÙ¬°¡u¾B¸n¡v( mask )¡C
CLC »P STC ¬Ò¤£»Ýn¹Bºâ¤¸¡A¤À§O¬O²M°£¶i¦ìºX¼Ð©M³]©w¶i¦ìºX¼Ð¡C
JBE ¤@¯ën·f°t CMP ¨Ï¥Î¡A¤è¦¡¦p¤U¡G
CMP ¥Øªº¹Bºâ¤¸,¨Ó·½¹Bºâ¤¸ JBE ¼Ð°O
JBE ¬O¦b¤ñ¸û¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤§«á¡A¦pªG¥Øªº¹Bºâ¤¸¤p©ó©Îµ¥©ó¨Ó·½¹Bºâ¤¸¡A´N¨Ïµ{¦¡±±¨îÅv¸õÅD¨ì¼Ð°O³B¡CJBE »P JNA ¬O¤@¼Ëªº«ü¥O¡A³£¥u¯à©¹§C¦ì§}¸õÅD 128 Ӧ줸²Õ¡A©Î©¹°ª¦ì§}¸õÅD 128 Ӧ줸²Õ¡C
ROL »P ROR ªº»yªk¬O
ROL ¥Øªº¹Bºâ¤¸,CL ROL ¥Øªº¹Bºâ¤¸,¥ß§YÈ ROR ¥Øªº¹Bºâ¤¸,CL ROR ¥Øªº¹Bºâ¤¸,¥ß§YÈ
ROL ( rotate left ) ¬O¨Ï¥Øªº¹Bºâ¤¸¦V¥ª±ÛÂà¼ÆӦ줸ªº«ü¥O¡A¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹©Î°O¾ÐÅéÅܼơA±ÛÂà´XӦ줸¥H CL ©Î¥ß§YȪí¥Ü¡C³Ì«á¤@¦¸±ÛÂ઺³Ì°ª¦ì¤¸¡A¤£¶È·|±ÛÂà¨ì³Ì§C¦ì¤¸¥h¡AÁÙ·|½Æ»s¨ì¶i¦ìºX¼ÐùØ¡C
ROR ¬O rotate right ªº·N«ä¡A°£¤F±ÛÂà¤è¦V¦V¥k¤§¥~¡A¨ä¾lªº¯S©Ê³£»P ROL ³£¤@¼Ë¡C
.386 °²«ü¥O¥Î¨Ó«ü¨Ï ML.EXE ±Ä¥Î 80386 CPU ªº«ü¥O¶°½s¼¶µ{¦¡½X¡CML.EXE ¹w³]ªº«ü¥O¶°¬O 8086/8088¡A¶V°ª¯Åªº CPU¡A«ü¥OÂX¼Wªº¶V¦h¡C¦pªGµ{¦¡n¥Î¨ì§ó¦h¡B§ó±j¤jªº«ü¥O¡A´Nn¦Û¦æ©w¸q¡u.386¡v¡B¡u.486¡v©Î¡u.586¡v³o¨Ç°²«ü¥O¡C
¥t¥~¡ADOS ¬O¤Q¤»¦ì¤¸ªº§@·~¨t²Î¡A©Ò¥Hn¼¶¼g¦b DOS ¨t²Î¤U¯à°õ¦æªºµ{¦¡¡A¥²¶·½s½X¡B©w§}¦¨¤Q¤»¦ì¤¸¡C³o®É¥²¶·¡u.MODEL¡v¦b«e¡A¡u.386¡v¦b«á¤~¦æ¡F¦pªG¤Ï¹L¨Ó¡A¨º»ò·|²ÕĶ¦¨¤T¤Q¤G¦ì¤¸ªºµ{¦¡¡C
°O¾ÐÅéÅܼƨä¹ê´N¬OÅܼơAn©w¸q¤@ÓÅܼơA¥i¥H¥Î©³¤Uªº°²«ü¥O¡G
ÅܼƦW DB ¼ÆÈ ÅܼƦW DW ¼ÆÈ
«eªÌ¬O©w¸q¤K¦ì¤¸ªºÅܼơA½d³ò±q 0 ¨ì 255¡F«áªÌ©w¸q¤Q¤»¦ì¤¸ªºÅܼơA½d³ò±q 0 ¨ì 65535¡CDB ©Î DW ¤]¥i¥H¤À§O¥Î BYTE ©Î WORD ¥N´À¡C
ÅܼƦW BYTE ¼ÆÈ ÅܼƦW WORD ¼ÆÈ
ªí¥Ü¡CÅܼƦWºÙªº²Ä¤@Ó¦r¥²¶·¥H^¤å¦r¥À¡B©³½u¡B@¡B?¡B$ µ¥¬°¶}ÀY¡A¨ä«áÁÙ¥i¥H¥Îªü©Ô§B¼Æ¦r¡A·íµM^¤å¡B©³½u¡B@ ¤´µM¥i¥H¨Ï¥Î¡C¹ï ML.EXE 6.11 ª©¨Ó»¡¡AÅܼƦWºÙ³Ì¦h¥u¯à¨ì 247 Ó¦r¤¸¡A¦ý¤w¸g«D±`¨¬°÷¤F¡C¥t¥~ÅܼƦWºÙ¤£¯à©M°²«ü¥O©Î¬O x86/x87 «ü¥O¶°«½Æ¡C