Ch 05¡@¦L¥X¼È¦s¾¹ªº¼Æ­È

¤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


PRINTBX.ASM µ{¦¡

°²¦p BX ¤º¤§¼Æ­È¬° 4162H¡A­n§â BX ¤§­È¦L¦b¿Ã¥ú¹õ¤W¡A¨Ã¤£¹³¨ä¥L¤¤¶¥©Î°ª¶¥»y¨¥¨º¼Ë¡A¥u­n¥Î«ü¥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


­ì²z

¨ä¹ê¤]¤£Ãø¡A«Ü¦n²z¸Ñ¡C¦pªG BX ¤ºªº¼Æ­È¬O 4162H¡A­n¦L¥X¨Ó¡AÅãµM¬O­n¤À¥|¦¸¦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¤¸¬°¨Ò¡A­n¦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¦³ªº¡I­n¥Î¨ì¨â­Ó x86 «ü¥O¡GROL »P AND¡C


x86 «ü¥O¡GROL »P ROR

©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ªG­n±ÛÂà¦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


x86 «ü¥O¡GAND

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¡u­n¼g§¹¤µ¤Ñªº§@·~¨Ã¥B¹w²ß§¹©ú¤éªº¥\½Ò¤~¯àª±¹q¸£¡C¡v·N«ä´N¬O¦pªG§A¡u¤µ¤é§@·~¡v©M¡u¹w²ß©ú¤é¥\½Ò¡v¥u­n¦³¤@¶µ¨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¥u­n¹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


PRINTBX.ASM ªº­ì©lµ{¦¡

Á¿¸Ñ§¹¥Î 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©Ò¥H­n¦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¡A­Y§_¡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


.386 °²«ü¥O

¡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>


°O¾ÐÅéÅܼÆ

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¦p­n§â 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¦ì¤¸²Õ10¡ã255
µL¸¹µu¾ã¼ÆDW ©Î WORD¦r²Õ20¡ã65535
¡@µL¸¹¾ã¼ÆDD ©Î DWORDÂù¦r²Õ40¡ã4294967295
µL¸¹ªø¾ã¼ÆDQ ©Î QWORD¥|¦r²Õ80¡ã18446744073709551615


x86 «ü¥O¡GADD

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


x86 «ü¥O¡GJBE

±µ¤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¸¹¼Æ¨Ó¤ñ¸û¡C­n¸ÑÄÀµ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¼Ð ( Carry Flag )

¶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


x86 «ü¥O¡GCLC »P STC

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



µù¤@¡G¤p§ÇºÝ ( Little-Endian ) »P¤j§ÇºÝ ( Big-Endian )

Áöµ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


µù¤G¡G¤@­Ó¼Ò½k¤£²Mªº¦a¤è

¦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    ;²Ä①¦¡

À³¸Ó¬O­n§â value ¥Nªíªº¦ì§}²¾¤J BX ùؤ~¹ï¡A¤]´N¬O BX «á¨Ó¬O 0102¡C¦pªG­n¨ú±o¦ì§} 0102 ¤ºªº¼Æ­È¡AÀ³¸Ó­n¼g¦¨

        MOV     BX,[value]  ;²Ä②¦¡

¤~¹ï§a¡Hªº½T¦p¦¹¡A³oùر`±`Åý¤H·d¤£²M·¡¡A¦]¦¹¦³¨Ç²ÕĶ¾¹­n¦s¨úÅܼÆùتº¤º®e¡A¨ä»yªk­n¼g¦¨Ãþ¦ü²Ä②¦¡¤~¦æ¡C¤£¹L MASM «h¤´±Ä¥Î²Ä①¦¡¡A³o¤j·§¬O¬°¤F°t¦X°ª¶¥»y¨¥ªº«ä¸ô§a¡H


µù¤T¡G±`¨£ªº±ø¥ó¸õÅD«ü¥O

°£¤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


¦^ÅU


x86 «ü¥O¡GADD

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


x86 «ü¥O¡GAND

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¦ý¤S­n«O¯d¨ä¥L¦ì¤¸¤§­È¡A³oºØ¹Lµ{ºÙ¬°¡u¾B¸n¡v( mask )¡C


x86 «ü¥O¡GCLC »P STC

CLC »P STC ¬Ò¤£»Ý­n¹Bºâ¤¸¡A¤À§O¬O²M°£¶i¦ìºX¼Ð©M³]©w¶i¦ìºX¼Ð¡C


x86 «ü¥O¡GJBE/JNA

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


x86 «ü¥O¡GROL »P ROR

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

.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´N­n¦Û¦æ©w¸q¡u.386¡v¡B¡u.486¡v©Î¡u.586¡v³o¨Ç°²«ü¥O¡C

¥t¥~¡ADOS ¬O¤Q¤»¦ì¤¸ªº§@·~¨t²Î¡A©Ò¥H­n¼¶¼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¾ÐÅéÅܼÆ

°O¾ÐÅéÅܼƨä¹ê´N¬OÅܼơA­n©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