Ch 07¡@¤Q¤»¶i¦ì¼ÆÅܦ¨¤Q¶i¦ì¼Æ

¦b¤é±`¥Í¬¡¤¤¡Aµ´¤j³¡¤Àªº¤H³£¬O¨Ï¥Î¤Q¶i¦ì­p¼Æ¡C¦]¦¹¦p¦ó§â¹q¸£¤¤ªº¤Q¤»¶i¦ì¼ÆÅܦ¨¤Q¶i¦ì¼Æ¡A¤]¬O±`¥Îªºµ{¦¡¡A¥»³¹´N¨Ó½Í¤@½Í³o­Óµ{¦¡¡C


­ì²z

¤£ºÞ¬O¤Q¶i¦ì¼Æ­È©ÎªÌ¬O¤Q¤»¶i¦ì¼Æ­È¡A¨ä¹ê¥u¬Oªí¥Ü¤è¦¡¤£¦P¡A¦ý¬O¡u¶q¡v¬O¤@¼Ëªº¡CÁ|­Ó¨Ò¤l¨Ó»¡¡A¤U­±ªº·Ó¤ùùئ@¦³¦n´X­Ó¬ü¤k¡A¥Î¤Q¶i¦ìªí¥Ü¬O 10¡F¥Î¤Q¤»¶i¦ìªí¥Ü¬O 0A¡C¤£ºÞ¥Î 10 ÁÙ¬O A¡A¼Æ¶q³£¬O¤@¼Ëªº¡C³o´N¬O¤p¤ì°¸»¡ªº¡u¼Æ¶q¬O¤@¼Ë¡vªº¡A¦ý¬Oªí¥Ü¤è¦¡¤£¦P¡A¥u¤£¹L§Ú­Ì²ßºD¤F¥Î¤Q¶i¦ìªí¥Ü¡C

¦pªG­n¥Î¤â»P¸£¡A§â¤Q¤»¶i¦ì´«ºâ¦¨¤Q¶i¦ì¡A¥i¥H°Ñ¦Òªþ¿ý¤G¡C¦pªG¥Î¹q¸£µ{¦¡¥h­pºâ¡A´N¤£¯à¥Î«e­±ªº¤èªk¡A¦]¬°¤£ºÞ¹q¸£«ç»òºâ¡AÀx¦s¦b°O¾ÐÅéùتº¸ê®Æ³Ì²×³£¥H¤G¶i¦ì¦s©ñ¡A¦]¦¹¤´µM¤£¯àªí¥Ü¥X¨Ó¡A¥²¶·¥t°_Äl¨_¤~¦æ¡C

¼È¥B¥ý©ñ¤U¦p¦ó¥Îµ{¦¡§â¤Q¤»¶i¦ìÅܦ¨¤Q¶i¦ìªº°ÝÃD¡A«ä¦Ò©³¤Uªº°ÝÃD¡G¦pªG­n§â¦s¦b°O¾ÐÅ餺ªº¥¿¾ã¼Æ¡A43981¡A¦L¦b¿Ã¹õ¤W¡A­n¦p¦ó°µ©O¡H­nª`·N³o¤£¬O¦r¦ê¡A¦Ó¬O¤@­Ó¥¿¾ã¼Æ¡C¤p¤ì°¸³o¼Ë«ä¦Ò¡A³o­Ó¥¿¾ã¼Æ¦³¤­¦ì¼Æ¡AÅãµM­n¦L¤­¦¸¡A¨C¦¸¥u¦L¤@­Ó¦r¤¸¡C¦pªG§â 43981 °£¥H¤Q¡A±o¨ì°Ó¬° 4398 ¦Ó¾l¼Æ¬O 1¡A¦A±N¾l¼ÆÂà´«¦¨ ASCII ¦r¤¸ 1 ( ASCII ¦r¤¸ªº¡u1¡v¨ä½s½X¬O 31H )¡A´N¥i¥H¦L¦b¿Ã¹õ¤W¤F¡C

        MOV     DL,31H
        MOV     AH,2
        INT     21H

±µ¤U¨Ó¦A±N«e¦¸°£ªkªº°Ó¼Æ¦A°£¥H 10¡A±o¨ì°Ó¬° 439 ¦Ó¾l¼Æ¬O 8¡A±N¾l¼ÆÂà´«¦¨ ASCII ½X¦r¤¸¡A¦A©I¥s AH¡×2/INT 21H¡F¡K¡K¨Ì¦¹Ä~Äò¡A³Ì«á´N¯à±o¨ì¨C­Ó¦ì¼Æ¨Ó¡C·íµM³o¼Ëªº¤èªk¬O±q­Ó¦ì¼Æ¶}©l¡A©Ò¥H­n¥ý½Õ¾ã¦n¿Ã¹õ¦ì¸m¡A±q³Ì¥kÃä¶}©l¦L¥Xªü©Ô§B¼Æ¦r¨Ó¡C

¦pªGÁA¸Ñ¤W­±ªº¹Lµ{¡A¦A¥[¤W«e­±¤p¤ì°¸©Ò»¡ªº¡u¦P¤@¼Æ¡A¥Î¤Q¶i¦ì©Î¥Î¤Q¤»¶i¦ìªí¥Ü¡A¥u¬Oªí¥Üªk¤£¦P¡A¦ý¼Æ¶q¬O¤@¼Ëªº¡v¡A¦b¹q¸£°O¾ÐÅ餺Áö¥H¤Q¤»¶i¦ì¤è¦¡ ( ÄY®æ»¡¬O¤G¶i¦ì ) ¦s©ñ¡A¦ý¬O¼Æ¶q»P¤Q¶i¦ì¤@¼Ë¡C­n¥H¹q¸£µ{¦¡§â¤@­Ó¾ã¼ÆÅܦ¨¤Q¶i¦ì¡A¨ä¹ê¨Ã¤£¬O¯uªºÅܦ¨¤Q¶i¦ì¼Æ­È¦s¦b°O¾ÐÅ餺¡A¦Ó¬O§â¥¦¥Hªü©Ô§B¼Æ¦r¦L¦b¿Ã¹õ¤W¡C

¨ä¹ê©Ò¥Î¤èªk«Ü²³æ¡A§â¦¹¾ã¼Æ³sÄò°£¥H¤Q¡A¨C¤@¦¸ªº¾l¼Æ´N¬O±q­Ó¦ì¼Æ¡B¤Q¦ì¼Æ¡B¦Ê¦ì¼Æ¡K¡K©¹¤W±Æ¡A¨C¦¸³£§â¾l¼ÆÅܦ¨ ASCII ½X¥ý¦s¦b°O¾ÐÅéùØ¡A³o¼Ë´N§Î¦¨¤@­Ó¦r¦ê¡AµM«á¦A¥Î AH¡×09H/INT 21H DOS ªA°Èµ{¦¡§â³o­Ó¦r¦ê¤@¦¸¦L¥X¨Ó¡A¦Ó¤£¥²¥Î AH¡×02/INT 21H ¤À¤­¦¸¦L¡C

¬JµM­n¥Î¨ì°£ªk¡A¥ý½Æ²ß¤p¾Çªº¼Æ¾Ç¡C¨Ò¦p¤@­Ó°£ªkºâ¦¡¡A¤Q¤C°£¥H¤Tµ¥©ó¤­¾l¤G¡A17¡Ò3¡×5...2¡A¨ä¤¤¤Q¤C¥s°µ³Q°£¼Æ¡A¤T¥s°µ°£¼Æ¡A¤­¥s°µ°Ó¼Æ¡A¤G¥s°µ¾l¼Æ¡C©³¤U¦A¤¶²Ð x86 ªº°£ªk«ü¥O¡C


x86 «ü¥O¡GDIV

DIV «ü¥O¬O¥\¥Î¬O­pºâ¥¿¾ã¼Æªº°£ªk¡A»yªk¦p¤U¡G

DIV     ¹Bºâ¤¸

°£ªk«ü¥Oªº³Q°£¼Æ¨Ã¨S¦³¼g¥X¨Ó¡A¤@«ß³£¬O AX ©Î DX:AX¡A©ÎªÌ¬O EDX:EAX¡A¦Ü©ó¬O­þ¤@­Ó¡A­n¬Ý¹Bºâ¤¸¨M©w¡C¹Bºâ¤¸¬O°£¼Æ¡A¥i¥H¼È¦s¾¹¡A¤]¥i¥H¬OÅܼơA¦ý¤£¥i¥H¬O±`¼Æ¡C①¦pªG¹Bºâ¤¸ªø«×¬O¤K¦ì¤¸¡A¨º»ò³Q°£¼Æ´N¬O AX¡F②¦pªG¹Bºâ¤¸ªø«×¬O¤Q¤»¦ì¤¸¡A¨º»ò³Q°£¼Æ´N¬O DX:AX¡F③¦pªG¹Bºâ¤¸ªø«×¬O¤T¤Q¤G¦ì¤¸¡A¨º»ò³Q°£¼Æ´N¬O EDX:EAX¡C²Ä③ºØ±¡§Î¡A¥u¦³¦b 80386 ©Î§ó°ª¶¥ªº CPU ¤~¯à¨Ï¥Î¡A¦ý¸Ü»¡¦^¨Ó¡A²{¦b ( ¥Á°ê 110 ¦~ )¡A­þ¤@­Ó¤Hªº CPU ¤£¬O¶W¹L 80386 ¤F¡H¤p¤ì°¸§â¥¦¾ã²z¦p¤Uªí¡G

¹Bºâ¤¸
( °£¼Æ )
³Q°£¼Æ°Ó¼Æ ¾l¼Æ½d¨Ò°Ó¤§
³Ì¤j­È
¹Bºâ¹Bºâ«e¹Bºâ«á
8¦ì¤¸AXALAH00AAh°£¥H12h
µ¥©ó09h¾l08h
AX=00AAh
BL=12h
AX=0809h
(AL=°Ó¡AAH=¾l)
BL=12h
255
16¦ì¤¸DX:AXAXDX1234FEDCh°£¥H5678h
µ¥©ó35E7h¾l2094h
AX=FEDCh
DX=1234h
BX=5678h
AX=35E7h(°Ó)
DX=2094h(¾l)
BX=5678h
65535
32¦ì¤¸
¥u¯à¥Î©ó
386µ¥¯Å¥H¤W
EDX:EAX EAXEDX0FEDCBA12345000h
°£¥H10000000hµ¥©ó
FEDCBA1h¾l2345000h
EAX=12345000h
EDX=0FEDCBAh
EBX=10000000h
EAX=0FEDCBA1h(°Ó)
EDX=2345000h(¾l)
EBX=10000000h
232¡Ð1
64¦ì¤¸
¥u¯à¥Î©ó
x64µ¥¯Å¥H¤W
RDX:RAX RAXRDX1CDEFAB1234567890h
°£¥H10000000hµ¥©ó
1CDEFAB123h¾l4567890h
RAX=CDEFAB1234567890h
RDX=1
RBX=10000000h
RAX=1CDEFAB123h(°Ó)
RDX=4567890h(¾l)
RBX=10000000h
264¡Ð1

¥H¤Wªí¤¤¡A16 ¦ì¤¸ªº°£ªk¬°¨Ò¤l¡A³Q°£¼Æ¬O 1234FEDCH¡AÅãµMµLªk©ñ¤J AX ùØ¡A¦]¦¹¥H¡uDX:AX¡v·í°µ³Q°£¼Æ¡C¦b°£¤§«e¡A­nÅý¸û°ª¦ì¼Æªº¦r²Õ©ñ¤J DX ùØ¡A¸û§Cªº¦r²Õ©ñ¤J AX ùØ¡A¥H¡uDX:AX¡v¤è¦¡ªí¥Ü¤T¤Q¤G¦ì¤¸ªº¼Æ­È¡CµM«á¦A§â°£¼Æ©ñ¤J BX ùØ¡A¦p¤U­±µ{¦¡¤ù¬q¡G

        MOV     AX,FEDC
        MOV     DX,1234
        MOV     BX,5678
        DIV     BX

°õ¦æ§¹¤W­zµ{¦¡«á¡AAX¡×35E7h ( °Ó¼Æ )¡ADX¡×2094h ( ¾l¼Æ )¡A¦Ó BX ¤§­È¤£ÅÜ¡C

DIV «ü¥O³Ì±`µo¥Íªº°ÝÃD¬O¡u·¸¦ì¡v¡A´N¬O°Ó¤Ó¤j¡A¥H­P©ó©ñ¤£¤U¼È¦s¾¹ùØ¡C¨Ò¦p¤Wªí¤¤¤Q¤»¦ì¤¸ªº°£ªk¡A§â°£¼Æ´«¤p¤@ÂIªº¼Æ¡A¨º»ò°Ó¼Æ´N·|Åܤj¡C¨Ò¦p¡G1234FEDCh¡Ò0CDh¡×16BC8Fh...59h¡A©Ò±oªº°Ó¼Æ¤w¸g¶W¹L AX ©Ò¯à®e¯Çªº½d³ò¤F¡AAX ³Ì¦h¥u¯à¬O 65535¡A¥ç§Y¤Q¤»¶i¦ìªº 0FFFFh¡C¹³³oºØ±¡§Î¡A¥Øªº¹Bºâ¤¸®e¯Ç¤£¤U­pºâ©Ò±oªºµ²ªG¡A´N·|µo¥Í·¸¦ì ( overflow )¡C°²¦pµo¥Í³oºØ±¡§Î¡ACPU ´N·|³]©w·¸¦ìºX¼Ð¡A¦b DEBUG ùتº·¸¦ìºX¼Ð·|Åܦ¨¡uOV¡v¡A¦P®É·|Â÷¶}­ì¨Óªºµ{¦¡¦^¨ì DOS¡A½Ð°Ñ¾\µù¤@¡C

DIV °£¤F·|¼vÅT·¸¦ìºX¼Ð¥~¡A¤]·|¼vÅT¶i¦ìºX¼Ð¡B²Å¸¹ºX¼Ð¡B¹s­ÈºX¼Ð¡B»²§U¶i¦ìºX¼Ð¡B¦P¦ìºX¼Ð¦@¤»ºØºX¼Ð¡C


x86 «ü¥O¡GXOR

¥ý¤¶²Ð¤°»ò¬O XOR¡CXOR ¤¤¤åºÙ¬°¡u¤¬¥¸©Î¡v( exclusive or )¡A¥¦¬OÅÞ¿è¹Bºâªº¤@ºØ¡A¨ä¯u­Èªí¦p¤U¡G

0 XOR 0¡×0
1 XOR 0¡×1
0 XOR 1¡×1
1 XOR 1¡×0

¥ç§Y¨â­Ó¬Û¦Pªº¹Bºâ¤¸§@¤¬¥¸©Î¹Bºâ¬° 0¡A¬Û²§ªº¨â¹Bºâ¤¸§@¤¬¥¸©Î¹Bºâ¬° 1¡C

¦b x86 «ü¥OùØ¡AXOR ªº»yªk¬O¡G

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

XOR ªº¹Bºâ¬O¥Øªº¹Bºâ¤¸©M¨Ó·½ºâ¤¸§@¤¬¥¸©Î¹Bºâ¤§«á¡A¦A§âµ²ªG¼g¤J¥Øªº¹Bºâ¤¸ùØ¡CÁ|­Ó¨Ò¤l¡A­Y AL¡×6B¡ABL¡×C2¡A°õ¦æ¡uXOR AL,BL¡v«áªºµ²ªG¬O¤°»ò©O¡H½Ð°Ñ¦Ò¥k¹Ï¡AAL ªº²Ä¹s¦ì¤¸»P BL ªº²Ä¹s¦ì¤¸§@¤¬¥¸©Î¹Bºâ¡A§Y¡u1 XOR 0¡v±o¡u1¡v¡FAL ªº²Ä¤@¦ì¤¸»P BL ªº²Ä¤@¦ì¤¸§@¤¬¥¸©Î¹Bºâ¡A§Y¡u1 XOR 1¡v±o¡u0¡v¡K¡K¨Ì¦¹Ãþ±À¡C

XOR ¹Bºâ¦³¤@ºØ«Ü©_§®ªº¯S©Ê¡A¨º´N¬O¡u¦pªG¬Y­Ó¼Æ»P¦Û¤v§@¤¬¥¸©Î¹Bºâ¡A©Ò±oµ²ªG¬°¹s¡v¡C¦bµ{¦¡¤¤¡A¦pªG­nÅý¬Y­Ó¼È¦s¾¹Åܦ¨¹s¡A¥i¥H¥Î³oºØ¤èªk¡C¨Ò¦p­n¨Ï DX Åܬ°¹s¡A¥i¥H¥Î¡uXOR DX,DX¡v¡C


DECIMAL.ASM ­ì©l½X

©³¤U´N¬O§â 0ABCDH Åܬ°¤Q¶i¦ìªºµ{¦¡­ì©l½X¡GDECIMAL.ASM¡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
;§â¤Q¤»¶i¦ì¼Æ0ABCDHÅܦ¨¤Q¶i¦ì¼Æ¡AµM«á¦L¥X¨Ó¡C
.MODEL  TINY
;*************************************************************
.CODE  
ORG     100h
;-------------------------------------------------------------
start:  jmp     begin
value   dw      0abcdh
ten     dw      10
answer  db      "0ABCDH=",5 DUP ("0"),"$"
begin:  mov     ax,value
        mov     bx,OFFSET answer+SIZEOF answer-2
        mov     cx,5
.WHILE cx
        xor     dx,dx
        div     ten
        add     [bx],dl
.BREAK .IF ax==0
        dec     bx
        dec     cx
.ENDW
        mov     dx,OFFSET answer
        mov     ah,9
        int     21h
        int     20h
;*************************************************************
END     start

²ÕĶ DECIMAL.ASM ­ì©lµ{¦¡«Ü®e©ö¡A¦b DOS ´£¥Ü²Å¸¹¤U¡A¿é¤J¡uml decimal.asm¡v§Y¥i¡C³o­Óµ{¦¡µ²ºc«Ü²³æ¡A´N¬O³sÄòªº°£ªk¦Ó¤w¡A¤£»Ý­n¦h»¡¡C¤U­±¬O­È±o»¡ªº¦a¤è¡G①DUP¡B②SIZEOF¡B③¦hÅܪº DB «ü¥O¡B④.BREAK .IF¡C¥ý»¡§¹³o¥|­Ó·sªº¹Bºâ¤l©Î«ü¥O¤§«á¡A¦A¨ÓÁ¿¸Ñ·s¹J¨ìªºµ{¦¡Æ[©À¡A¨Ò¦p¥H SYMDEB °lÂÜ¡B¡C


DUP ¹Bºâ¤l

DUP ¹Bºâ¤l¬O¥Î¨Ó©w¸q¤@­Ó¨ã¦³­«½Æ¥X²{ªº¼Æ­È¡A¥²¶··f°t DB¡BDW¡BDD µ¥°²«ü¥O¨Ï¥Î¡A¨ä»yªk¬O

¦¸¼Æ DUP ( ªì©l­È[,ªì©l­È[,...]])

¤W¦¡¤¤ªº¦¸¼Æ´N¬O­«½Æ¦¸¼Æ¡A­n­«½Æªº³¡¤À¦b«á­±¤@¹ï ( ) ¤ºªºªì©l­È¡A³oªì©l­È¤]¥i¥H¬O¦r¦ê¡C¦pªG¤£½T©wªì©l­È¡A¤]¥i¥H¥Î¡u?¡v¥N´À¡C¥t¥~¡A¦b ( ) ¤º¤]¥i¥H¦A«×¨Ï¥Î DUP ¹Bºâ¤l¡C©³¤U¬O´X­Ó¨Ò¤l¡G

a       BYTE    4 DUP (1)           ;¬Û·í©ó¡ua  DB  1,1,1,1¡v
b       DB      5 DUP (10 DUP (2))  ;¬Û·í©ó©w¸q¤F 50 ­Ó¦ì¤¸²Õªº 2
c       DB      3 DUP (1,2,3)       ;¬Û·í©ó©w¸q¤T¦¸¡u1,2,3¡v¡A¤]´N¬O¡uc  DB  1,2,3,1,2,3,1,2,3¡v
d       DB      2 DUP ("so ")       ;¬Û·í©ó¡ud  DB  "so ","so "¡v¡A¤]´N¬O¡ud DB "so so "¡v


¤T­Ó¹Bºâ¤l¡GTYPE¡BLENGTHOF »P SIZEOF

TYPE¡BLENGTHOF¡BSIZEOF ¤T­Ó¹Bºâ¤lªº»yªkÃþ¦ü¡A³£¬O

LENGTHOF ÅܼÆ
SIZEOF   ÅܼƩθê®ÆÃþ«¬
TYPE     ÅܼƩθê®ÆÃþ«¬

LENGTHOF ¬O¥Î¨ÓÅý²ÕĶ¾¹­pºâ©Ò©w¸qªºÅܼƦ¨­û¦³¦h¤Ö­Ó¡ASIZEOF ¥Î¨ÓÅý²ÕĶ¾¹­pºâ«á­±ªºÅܼƩθê®ÆÃþ«¬¦@§t¦³¦h¤Ö­Ó¦ì¤¸²Õ¡ATYPE «h¬O¶Ç¦^¨C­Ó¦¨­û¦³¦h¤Ö­Ó¦ì¤¸²Õ¡A¤]¥i¥H¶Ç¦^¦¹¸ê®ÆÃþ«¬¦³´X­Ó¦ì¤¸²Õ¡C¨Ò¦p©³¤Uªº¨Ò¤l¡G

                                          ;TYPE  LENGTHOF  SIZEOF
v1      DB      3 DUP (1,2,3)             ;  1       9         9
v2      DW      40 DUP (40 DUP (5))       ;  2    1600      3200
v3      DD      3 DUP (20,30)             ;  4       6        24
str1    DB      "After all, Tomorrow is", ;  1      35        35
                " another day."
str2    DB      "After all, Tomorrow is"  ;  1      22        22
        DB      " another day."

¤W­±¨Ò¤lùØ¡Av1 ¨ä¹ê¬O¡uv1 DB 1,2,3,1,2,3,1,2,3¡v¡A©Ò¥H¨C­Ó¦¨­û¤j¤p¬°¤@­Ó¦ì¤¸²Õ¡ATYPE v1 ¬° 1¡A¦¹¥~ v1 ¦³¤E­Ó¦¨­û¡A¬G LENGTHOF v1 ¬° 9¡Fv1 Á`¦@¦û¥Î 9 ­Ó¦ì¤¸²Õ ( 9¡Ñ1 )¡A¬G SIZEOF v1 ¬° 9¡C

v2 ¬O¥H DW ©w¸q¡A©Ò¥H¨C­Ó¦¨­û¤j¤p¬°¨â­Ó¦ì¤¸²Õ¡A¬G TYPE v2 ¬° 2¡F¦¹¥~¦b DUP ªº¬A¸¹ùئ³ 40 ­Ó¦¨­û¡A¦ý­n­«½Æ 40 ¦¸¡A¦]¦¹¦³ 40¡Ñ40 ­Ó¦¨­û¡A©Ò¥H LENGTHOF v2 ¬° 1600¡Fv2 Á`¦@¦û¥Î 3200 ­Ó¦ì¤¸²Õ ( 1600¡Ñ2 )¡A¬G SIZEOF v2 ¬° 3200¡C

¦]¬° v3 ¬O¥H DD ©w¸q¡A©Ò¥H¨C­Ó¦¨­û¤j¤p¬°¥|­Ó¦ì¤¸²Õ¡A¬G TYPE v3 ¬° 4¡Fv3 ¦b DUP ªº¬A¸¹ùئ³ 20¡B30 ¨â­Ó¦¨­û¡A¦ý­n­«½Æ 3 ¦¸¡A¦]¦¹Á`¦@¦³¤»­Ó¦¨­û¡A©Ò¥H LENGTHOF v3 ¬° 6¡Fv3 Á`¦@¦û¥Î 24 ­Ó¦ì¤¸²Õ ( 6¡Ñ4 )¡A¬G SIZEOF v3 ¬° 24¡C

³Ì«á¨â­Ó¨Ò¤l¬O¦³´«¦æªº¦r¦ê¡Aª`·N¨ì str1 ¦b¤Þ¸¹«á­±¦³³r¸¹¡Aªí¥Ü str1 ¦r¦ê·|©µ¦ù¨ì¤U¤@¦æ¡A³o®É­Ô¤U¤@¦æ¤£»Ý­n¥H¡uDB¡v©w¸q¡A¤]´N¬O»¡ str1 ¬O¡uAfter all,Tomorrow is another day.¡v¡A¦]¦¹ SIZEOF ­pºâ¥X¨Óªºµ²ªG¬° 35 ­Ó¦ì¤¸²Õ¡C

³Ì«á¤@­Ó¨Ò¤l¡Astr2¡A¤Þ¸¹«á­±¨S¦³³r¸¹¡Aªí¥Ü¦¹¦r¦ê¥u¦³¤@¦æ¦Ó¤w¡F¦b str2 ©³¤Uªº¦r¦ê¡A¦b²ÕĶ¾¹ªºµø¨¤¤¤»P str2 ¬O²@¤£¬Û¤zªº¡C¤]´N¬O»¡ str2 ¦r¦ê¬O¡uAfter all, Tomorrow is¡v¡A¦]¦¹ SIZEOF ­pºâ¥X¨Óªºµ²ªG¥u¦³ 22 ­Ó¦ì¤¸²Õ¡C¥Ñ¦¹¬Ý¨Ó¡A¦³¨S¦³¡u,¡v©M¡uDB¡v·N¸q§¹¥þ¤£¦P¡A·í©w¸qªº¦r¦ê¤Óªø­n´«¦æ®É¶·¤p¤ßª`·N¡C


¦hÅܪº DB «ü¥O

DB °²«ü¥O°£¤F¥H«eÁ¿ªº

ÅܼƦW  DB      ¼Æ­È
¦r¦ê¦W  DB      ¦r¦ê

¤§¥~¡A¨ä¹ê¤]¥i¥HÆF¬¡ªºÀ³¥Î¡A¹³ DECIMAL.ASM ùتº²Ä¤Q¦æ¡Aanswer¡Aªº©w¸q¡A¨ä¹ê¥Ü¤@­Ó¦r¦ê¡F

answer  db      "0ABCDH=",5 DUP ("0"),"$"

«e­±ªº¡u"0ABCDH="¡v«Ü©úÅã´N¬O¦r¦ê¡AµM¦Ó¤¤¶¡«o¬ï´¡µÛ¹³¡u5 DUP ("0")¡vªº¹Bºâ¤l¡A«á­±ÁÙ¥i¥H¦A±µ¤W¤@­Ó¦r¦ê¡A"$"¡C¹³³o¼Ëªº°µªk¬O¨S¦³°ÝÃD¦Ó¥B¬O¤¹³\ªº¡C¦b«á­±ªºµ{¦¡²Ä 17 ¦æ¡A°õ¦æ¡uadd [bx],dl¡v®É¡A§â DL ¤ºªº¼Æ­È¥[¨ì³o¤­­Ó¦r¤¸ùØ¡A³o¼Ë¬Ý°_¨Ó´N¦n¹³¬OÅܼƤ@¼Ë¡C

¨ä¹ê¤£ºÞ¬OÅܼƦW©Î¦r¦ê¦W¡A¦b²ÕĶ¾¹ªº²´ùس£¬O¤@­Ó¦ì§}¡A³o­Ó¦ì§}©ñµÛªº¬O¼Æ­ÈÁÙ¬O¦r¦ê¡A¨ä¹ê²ÕĶ¾¹¬O¤£¦b·Nªº¡C¦Ó¥B¤£½×¬O¼Æ­ÈÁÙ¬O¦r¦ê³£¬O¥i¥H¹Bºâªº¡A¦]¦¹¥i¥H§â DB ¼g¦¨³o¼Ë©_©Çªº¼Ë¤l¡A¬O²@µL°ÝÃDªº¡C¦pªG¥Î DEBUG Æ[¹î¡G

E:\DOS\DECIMAL>DEBUG DECIMAL.COM [Enter]
-D 100 L20 [Enter]
11F4:0100  EB 11 CD AB 0A 00 30 41-42 43 44 48 3D 30 30 30   ......0ABCDH=000
11F4:0110  30 30 24 A1 02 01 BB 11-01 B9 05 00 EB 0E 33 D2   00$...........3.
-

¤W­±¥Õ¦âªº³¡¤À´N¬O answer ªº¤º®e¡C¤@¶}©lµ{¦¡©|¥¼°õ¦æ«e¡Aanswer ¦r¦ê¬O¡u0ABCDH=00000$¡v¡A¸g¹Lµ{¦¡¹Bºâ«á¡A·|§â¨ä¤¤ªº¡u00000¡vÅܦ¨¾A·íªºªü©Ô§B¼Æ¦rªº¦r¤¸¡A´N¥i¥H¦L¥X¨Ó¤F¡C«e­±´£¨ì¡A¤Q¤»¦ì¤¸ªº¼Æ­È³Ì¦h¥iªí¥Ü 65535¡A¬O¤­¦ì¼Æ¡A©Ò¥H³sÄò°£¤­¦¸¤Q¡A²Ä¤@¦¸ªº¾l¼Æ¬O­Ó¦ì¼Æ¡A§â¥¦Âà´«¦¨ ASCII ¦r¤¸ªºªü©Ô§B¼Æ¦r«á¡AÀ³¸Ó©ñ¦b³Ì°ª¦ì§}¡A¤]´N¬O¦ì§} 0111 ³B¡C

¦b DECIMAL.ASM ùØ¡A¤p¤ì°¸¥Î BX ·í§@³o¤­¦ìªü©Ô§B¼Æ¦rªº«ü¼Ð¡A¤@¶}©lÅý BX «ü¦V 0110 ³B¡A¨C­pºâ¤@­Ó¦ì¼Æ´NÅý BX ´î¤@¡A«ü¦V¤U¤@­Ó¦ì¼Æ¡C


.BREAK .IF

¦³Ãö¡u.BREAK .IF¡vªº»¡©ú½Ð¬Ý«e¤@³¹ªº³oùØ¡A¦¹³B­n»¡ªº¬O¬°¦ó­n¦b³oùØ©ñ¤@­Ó¡u.BREAK .IF ax==0¡v¡AÀˬd AX ¬°¹s®É¸õ¥X¡u.WHILE/.ENDW¡v°j°é¡C

§Ú·Q³o­Ó²z¥Ñ¨Ã¤£Ãø¡A¦pªG value ¤§­È¬O¹³ 0FFH ³o¼Ëªº¼Æ¡A´«¦¨¤Q¶i¦ì«á¬O¤p©ó©Îµ¥©ó¥|¦ì¼Æªº¼Æ­È¡A¨º»ò«á­±ªº°ª¦ì¼Æ¥²©w¬O¡u0¡v¡A¤]´N¤£¥²¦A¥h­pºâ¤F¡C«ç»ò¥hÀˬd¬O§_¤p©ó©Îµ¥©ó¥|¦ì¼Æ©O¡H³o¤]¤£Ãø¡A·í°µ³sÄò°£ªk®É¡A©Ò±oªº°Ó¼Æ¬°¹s®É¡A´Nªí¥Ü¨S¦³§ó°ª¦ì¼Æ¤F¡C


¨Ï¥Î SYMDEB °lÂÜ DECIMAL.COM

SYMDEB.EXE ¬Oªþ¦b MASM 4.0 ªº¤@­Ó°£¿ùµ{¦¡¡AÁöµM¦W®ð¤£¦p DEBUG ¤j¡A¦ý¬O¥\¯à«o¤ñ DEBUG ±j±o¦h¡C©M DEBUG ¤ñ¸û¡ASYMDEB ªº·s¼W¥\¯à¤¤³Ì­«­n¬O¡G①¯à¦b°£¿ù®É¨Ï¥Î­ì©lµ{¦¡ªº²Å¸¹¦W¡A¤£¦A¬O«ÜÃø¬ÝÀ´ªº¦ì§}¡A©Ò¥H¦W¤§¬°¡u²Å¸¹°£¿ù¾¹¡v(symbolic debug)¡C②¼W¥[¤¤Â_ÂI¤Î¬ÛÃö«ü¥O¸s¡C③¥[±j¤F³\¦h DEBUG ©R¥O¡A¨Ò¦pÅã¥Ü IEEE ®æ¦¡¹ê¼Æ¡B8087/80287 «ü¥O¶°µ¥µ¥¡C

¦pªG§A¨S¦³ SYMDEB ¦Ó²{¦b­n¨Ï¥Îªº¸Ü¡A¥i¥H¨ì³oùؾ\Ūªþ¿ý¤@¡AùØ­±¦³¤èªk¥i¨ú±o SYMDEB¡C

SYMDEB ªº¨Ï¥Î¤è¦¡»P DEBUG Ãþ¦ü¡A¼Æ­È³£¬O¥H¤Q¤»¶i¦ìªí¥Ü¡A¦Ó¥B¤£¯à¥Î¤Q¶i¦ì¡FSYMDEB ªº«ü¥O¦h¥H¤@­Ó­^¤å¦r¥Àªí¥Ü¡A¥B¤£°Ï¤À¤j¤p¼g¡A¦ý¬O SYMDEB ¹ï¬Y¨Ç«ü¥O¡A¨Ò¦p D «ü¥O¡Aµ¥°µ¤F±j¤Æ¡A¥i¥H¥H¦r²Õ¡BÂù¦r²Õµ¥¤è¦¡¬Æ¦Ü¬O¯BÂI¤è¦¡Åã¥Ü¡A¦]¦¹¬Y¨Ç«ü¥O¬O¤@¸s«ü¥O²Õ¦¨ªº¡A«Ý·|¨à¤p¤ì°¸´N·|¤¶²Ð¤¤Â_ÂI«ü¥O¸s ( B «ü¥O¸s )¡C


°£¿ù®É¨Ï¥Î­ì©lµ{¦¡ªº²Å¸¹¦W

©³¤U¤p¤ì°¸´N¦p¦ó¦b°£¿ù®É¨Ï¥Î­ì©l½Xªº²Å¸¹¦W¥H¤Î¥[±jªº«ü¥O¨Ó»¡©ú¡C

¦b SYMDEB ùتº²Å¸¹¦WºÙ¥]§tÅܼƦW¡B¼Ð°O¦W©M°Æµ{¦¡¦W¤TºØ¡ASYMDEB ¥i¥H¦b°£¿ù¶¥¬q¥H­ì©l½X©Ò©w¸qªº¦WºÙÅã¥Ü³o¤TºØ¦WºÙ¡A¦Ó¤£¥²¦A¨Ï¥Î¦ì§}¡A¦]¦¹¤j¤jªº¼W¥[¤F¤è«K©Ê»P¥iŪ©Ê¡C

¬°¤F¹F¨ì³o­Ó¥Øªº¡A¥²¶·§â²Å¸¹¦WºÙ³£¼g¶i¤@­ÓºÙ¬°¡u²Å¸¹ÀÉ¡vªºÀÉ®×ùØ¡A²Å¸¹Àɪº°ÆÀɦW¬O SYM¡A¬O¥Ñ MAPSYM.EXE ³B²z¬M®gÀɲ£¥Íªº¡F¦Ó¬M®gÀÉ°ÆÀɦW¬° MAP¡A¬O¥Ñ LINK.EXE ³B²z OBJ Àɲ£¥Íªº¡A¦]¦¹­n¥Í¦¨²Å¸¹Àɪº¹Lµ{¦p¤U¡G

  1. ­º¥ý¡A­n¥Í¦¨¬M®gÀɪº²Å¸¹¦W¥²¶·¬O¡uPUBLIC¡vªº¡A¦³©³¤U¨âºØ¤èªk¡G
  2. ³sµ²®É¡A­n²£¥Í¬M®gÀÉ¡A¥²¶·¦b¨Ï¥Î MASM 6.x ªº ML.EXE ²ÕĶ®É¡A¥Î¡u/Fm¡v°Ñ¼Æ¡A¥i¥HÅý ML.EXE ¦b©I¥s LINK.EXE ®É¡A§â­n²£¥Í MAP Àɪº°T®§¶Çµ¹ LINK.EXE¡C( ¥ç§Y¡u/Fm¡v·|Åý LINK.EXE ¦Û°Ê¥Í¦¨¡u/m¡v°Ñ¼Æ¡C)
  3. ¥Î MAPSYM.EXE »s³y¥X SYM ÀÉ¡CMAPSYM ¯à³B²z¿é¤Jªº MAP ÀÉ¡AµM«á»s³y¥X SYM ÀÉ¡A¥¦ªº¨Ï¥Î¤èªk¬O¡G
    MAPSYM [/L] MAPÀɦW
    MAPSYM ¥u¦³¤@­Ó°Ñ¼Æ¡A/L¡A¥[¤W /L ªí¥Ü§âÅܼƦW¦CªíÅã¥Ü¦b¿Ã¹õ¤W¡A¤£¥[ /L ªí¥Ü¤£Åã¥Ü¡CMAP ÀɦW¥i¥H¬Ù²¤°ÆÀɦW¤]¥i¥H¼g¥X¨Ó¡C»s³y¥X¨Óªº SYM ÀÉ¥DÀɦW¥²»P MAP ¥DÀɦW¤@¼Ë¡AµLªk§ó§ï¡C

¨Ò¦p©³¤Uªº¹Lµ{¡A´N¯à»s³y¥X DECIMAL.SYM ÀɨӡG

E:\DOS\DECIMAL>ml /Fm /Zf decimal.asm [Enter] ¡÷¡u/Fm¡v»P¡u/Zf¡v­n°Ï¤À¤j¤p¼g¡A­þ­Ó°Ñ¼Æ¦b«e©Î«áµL©Ò¿×
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.

 Assembling: decimal.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]: decimal.obj/t
Run File [decimal.com]: "decimal.com"
List File [nul.map]: "decimal.map" /m ¡÷¡u/m¡v°Ñ¼Æ¨Ï LINK.EXE ¥Í¦¨ MAP ÀÉ¡A¡u/m¡v°Ñ¼Æ¬O ml.exe «ü©w¤F¡u/Fm¡v¤~¦³ªº
Libraries [.lib]: 
Definitions File [nul.def]:

E:\DOS\DECIMAL>mapsym decimal [Enter]
Microsoft (R) Symbol File Generator  Version 4.00
Copyright (C) Microsoft Corp 1984, 1985.  All rights reserved.

    Program entry point at 0000:0100

E:\DOS\DECIMAL>

¡u/Zf¡v¬O ML.EXE ªº¤@­Ó°Ñ¼Æ¡A¥¦ªº¥Øªº´N¬O¨Ï­ì©lµ{¦¡ùØ¡A©Ò¦³²Å¸¹¦WºÙ³£³]©w¬°¤½¶}ªº¡A¡u/Zf¡v°Ñ¼Æ¦³¤j¤p¼g¤§¤À¡A¤£¥i¼g¦¨¡u/zf¡v¡B¡u/ZF¡vµ¥µ¥¡C¡u/Fm¡v°Ñ¼Æ«h¬O«ü©w LINK.EXE ­n»s§@¥X MAP ÀɨӡA¦P¼Ë¤]¦³¤j¤p¼g¤§¤À¡F¡u/Fm¡v¤]¥i¥H¦b Fm ¤§«á«ü©w¦Û¤v·Q­nªº MAP ÀɦW¡A¦pªG¬Ù²¤«h¸ò­ì©lµ{¦¡¥DÀɦW¬Û¦P¡C


PUBLIC °²«ü¥O

PUBLIC °²«ü¥Oªº»yªk¬O

PUBLIC  [langtype] name[,[[langtype] name]...]

¤W¦¡¤¤ªº langtype ¦¡µ{¦¡»y¨¥¡A¥i¥H¬O C¡BSYSCALL¡BSTDCALL¡BPASCAL¡BFORTRAN ©Î BASIC¡A¦pªG¦b .MODEL ¤¤¤w¸g«ü©wªº¸Ü¡A¥H¦¹³B¬°·Ç¡A³o­ÓÄæ¦ì»P©I¥s¨ó©w¦³Ãö¡A¥H«á¦A»¡¡Cname ´N¬O­n«Å§i¬°¡uPUBLIC¡vªº²Å¸¹¦WºÙ¡C¡ulangtype name¡v¥i¥H¦³³\¦h²Õ¡A¤]¥i¥H¥u¦³¤@²Õ¡Aµø±¡§Î¨M©w¡C


¥Î SYMDEB °£¿ù

¬JµM SYMDEB «Â¤O¤ñ DEBUG ±j¤j¡A«Ý·|´N¨Ó¸Õ¸Õ¡C²{¦b¥ý¤¶²Ð SYMDEB ªº§¹¾ã»yªk¡G

SYMDEB [°Ñ¼Æ] [SYMÀÉ] [±ý°£¿ù¤§¥i°õ¦æÀÉ] [¸Ó¥i°õ¦æÀɤ§°Ñ¼Æ]

SYMDEB ªº°Ñ¼Æ¦³ 5 ­Ó¡C

  1. /IBM¡G¤]¥i²¼g¦¨¡u/I¡v¡A³o­Ó°Ñ¼Æ·|±j­¢ SYMDEB §â IBM PC ªº¬Û®e¾÷ºØ·í¦¨ IBM PC ¨Ï¥Î¡C
  2. /K¡G³o­Ó°Ñ¼Æ¥i¥H¨ÏÁä½Lªº¡uScroll Lock¡v©Î¡uBreak¡vÁä·í§@¤¤Â_Áä¨Ï¥Î¡C
  3. /N¡G³o­Ó°Ñ¼Æ¨Ï«D IBM PC ¦ý¬O°õ¦æ MS DOS ªº¾÷ºØµo´§µwÅ餤Â_¥\¯à¡C
  4. /S¡G¥i¥H¨Ï SYMDEB ¦b°£¿ùµe­±»P°õ¦æµe­±¤§¶¡¤Á´«¡A¹ï©ó¹Ï§Îµe­±«Ü¦³¥Î¡C
  5. /"«ü¥O"¡G¡u"¡v¤§¶¡¬° SYMDEB «ü¥O¡A¥¦¥i¥H«ü©w SYMDEB ¤@±Ò°Ê´N­n°õ¦æªº«ü¥O¡C

§Ú­Ì´N¨Ó¸Õ¸Õ¬Ý¡C­nª`·N¡A¸ü¤J®É¡A²Å¸¹ÀÉ­n¼g¦b«e­±¡A¥i°õ¦æÀɦb«á­±¡A¦p¤U¡G

E:\DOS\DECIMAL>c:\tools\symdeb decimal.sym decimal.com [Enter] ¡÷ª`·N¡I²Å¸¹ÀÉ­n¦b¥i°õ¦æÀɤ§«e
Microsoft (R) Symbolic Debug Utility  Version 4.00
Copyright (C) Microsoft Corp 1984, 1985.  All rights reserved.

Processor is [80286]
-u begin 137 [Enter] ¡÷¥ý¬Ý¬Ý¥þ³¡µ{¦¡¡A¦¹³Bªº begin ¼Ð°O¤]¥i¥H¥Î¦ì§} 0113 ¥N´À¡A¦ý¥Î¼Ð°O¦W¸û©ö²z¸Ñ
DGROUP:begin:
1551:0113 A10201         MOV	AX,[value] ¡÷¤£¬O¥Î¦ì§}ªí¥Ü¡A§ï¥ÎÅܼƦWºÙ value ¤F
1551:0116 BB1101         MOV	BX,0111 
1551:0119 B90500         MOV	CX,0005 
1551:011C EB0E           JMP	@C0001 ¡÷¤£¬O¥Î¦ì§}ªí¥Ü¡A§ï¥Î¼Ð°O¦WºÙ¡A¦]¬°¦¹³B§Ú­Ì¥Î .WHILE/ENDW ©Ò¥H¥Î¤º©w¼Ð°O¦WºÙ
DGROUP:@C0002:
1551:011E 33D2           XOR	DX,DX 
1551:0120 F7360401       DIV	Word Ptr [ten] ¡÷¤£¬O¥Î¦ì§}ªí¥Ü¡A§ï¥ÎÅܼƦWºÙ ten ¤F
1551:0124 0017           ADD	[BX],DL 
1551:0126 0BC0           OR     AX,AX
1551:0128 7406           JZ     @C0003
1551:012A 4B             DEC	BX 
1551:012B 49             DEC	CX 
DGROUP:@C0001:
1551:012C 0BC9           OR     CX,CX 
1551:012E 75EE           JNZ	@C0002 
DGROUP:@C0003:
1551:0130 BA0601         MOV	DX,0106 
1551:0133 B409           MOV	AH,09 
1551:0135 CD21           INT	21 
1551:0137 CD20           INT	20 
-d 100 l20 [Enter] ¡÷¦b¥ý¬Ý¬Ý¸ê®Æ°Ï ( ©³¤U¥Õ¦rªº³¡¤À )
1551:0100  EB 11 CD AB 0A 00 30 41-42 43 44 48 3D 30 30 30  k.M+..0ABCDH=000
1551:0110  30 30 24 A1 02 01 BB 11-01 B9 05 00 EB 0E 33 D2  00$!..;..9..k.3R
-

¦b©|¥¼¥¿¦¡»¡©ú¦p¦ó°lÂܤγ]¸m¤¤Â_ÂI¤§«e¡A¥ý¨Ó¬Ý¤@¬Ý¤W­±¤Ï²ÕĶªºµ²ªG¡A¹ï·Ó­ì©lµ{¦¡ªº²Ä 17¡B18 ¦æ¡A´N¯àµo²{¬õ¦rªº«ü¥O¨Ã¤£¦b­ì©lµ{¦¡ùØ­±¡A¦Ó¬O¸g¥Ñ¡u.BREAK .IF ax==0¡vÂà´«¦Ó¨Óªº¡CJZ «ü¥O¤w¸g´£¹L¤F¡A´N¬OÀˬd¹s­ÈºX¼Ð¡A¦pªG¹s­ÈºX¼Ð³]©w¤F´N·|¸õÅD¦Ü¼Ð°O¡u@C0003¡v³B¡C¨º¡uOR AX,AX¡v¬O¤°»ò©O¡H


x86 «ü¥O¡GOR

OR «ü¥O¬OÅÞ¿è¹Bºâ«ü¥O¡A¥¦¨Ï¨â­Ó¹Bºâ­ì§@¡u©Î¡v¹Bºâ¡C©Ò¿×¡u©Î¡v¹Bºâ¬O«ü¦³¼Æ­Ó±ø¥ó¡A¥u­n¨ä¤¤¤§¤@¦¨¥ß´N¥i¥H¤F¡C¨Ò¦p¦Ñ®v»¡¡G¡u©ú¤Ñ¦Ò¸Õ¡AÃD¥Ø¥u¦³¨âÃD¡A²Ä¤@ÃDµª¹ï©Î²Ä¤GÃDµª¹ï´N¤Î®æ¤F¡C¡v©Ò¥H¦pªG§A²Ä¤@ÃD¹ï²Ä¤GÃD¿ù¡A©Î²Ä¤@ÃD¿ù²Ä¤GÃD¹ï¡A©Î¨âÃD³£¹ï¡A³£ºâ¤Î®æ¡C

¦bÅÞ¿è¹BºâùØ¡A±`¥H 0 ¥Nªí°°¡B°²¡B§_©wªº¡A¥H 1 ¥Nªí¯u¡BªÖ©wªº¡COR ¹Bºâªº¯uªí¦p¤U¡G

0 OR 0¡×0
1 OR 0¡×1
0 OR 1¡×1
1 OR 1¡×1

x86 ªº«ü¥O OR «ü¥Oªº»yªk¬O

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

OR «ü¥O¬O±N¨Ó·½¹Bºâ¤¸ªº¨C­Ó¦ì¤¸»P¥Øªº¹Bºâ¤¸¬Û¹ïÀ³ªº¦ì¤¸§@ OR ¹Bºâ¡A¦A±N¨äµ²ªG¦s¤J¥Øªº¹Bºâ¤¸¤¤¡C¥Øªº¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼơA¨Ó·½¹Bºâ¤¸¥i¥H¬O¼È¦s¾¹¡BÅܼƻP¥ß§Y­È¡C¥Øªº¹Bºâ¤¸»P¨Ó·½¹Bºâ¤¸¤£¯à¦P®É¬OÅܼơA¦Ó¥B«×¥²¶·¬Û¦P¡A³£¬O¤K¦ì¤¸©Î¤Q¤»¦ì¤¸¼e¡C

¨Ò¦p¡AAL¡×32H¡A°õ¦æ¡uOR AL,0C3H¡v«áªºµ²ªG¦p¥k¹Ï¡A³Ì«áµ²ªG¬° F3¡A¦]¦¹ AL ¤]·|Åܦ¨ F3¡C

OR «ü¥O¦³¤@¶µ¯S©Ê¡A¦pªG¹ï¦Û¤v§@ OR ¹Bºâµ²ªG¬°¹s¡A«h¦Û¤v¥»¨­­ì¨Ó¤]¬O¹s¡C¦b²Õ¦X»y¨¥ùØ¡A±`±`¥Î³oºØ©Ê½è¥hÀˬd¬Y­Ó¼È¦s¾¹¬O§_¬°¹s¡C¹³¤W­±¥Î SYMDEB ¸ü¤J DECIMAL.COM «á¡A¦b¦ì§} 0126 ³B¡A¨Ï AX »P¥»¨­§@ OR ¹Bºâ¡A¦pªGµ²ªG¬°¹s¡A¨º»ò AX ¥»¨­­ì¥»´N¬O¹s¡C·íµM¤]¥i¥H¥Î¡uCMP AX,0¡v¨ÓÀˬd AX ¬O§_¬°¹s¡A¦ý³o¼Ëªº¸Ü¾÷±ñ½X·|¦h¤@­Ó¦ì¤¸²Õ¡C¦bµ{¦¡ 012C ³B¡A¤]¬O¥H¦P¼Ëªº¤èªkÀˬd CX ¬O§_¬°¹s¡C

¸ÑÄÀ§¹ OR «ü¥O«á¡A©³¤U¤p¤ì°¸¦A¸ÑÄÀ SYMDEB ªº¤¤Â_«ü¥O¡C


SYMDEB «ü¥O¡GB

SYMDEB ªº¤¤Â_«ü¥O ( ¤¤Â_¬O break ªº·N«ä )¡A¡uB¡v«ü¥O¡A«D±`±j¤j¡A¥i¦A²Ó¤À¤­­Ó¡u¤l¡v«ü¥O¡GBP¡BBC¡BBD¡BBE¡BBL¡C

  1. BP «ü¥O¬O break point ªº·N«ä¡A¥i¥H¦b¬Y­Ó¦ì§}¡B¼Ð°O³]©w¤¤Â_ÂI¡A·í SYMDEB °õ¦æ¨ì³o­Ó¤¤Â_ÂI®É·|°±¤U¨Ó¡AÅã¥Ü©Ò¦³¼È¦s¾¹¡BºX¼Ð¡A¤¤Â_ÂIªº³]©w¥²¶·¬O«ü¥Oªº°_©l¦ì§}¤~¦³®Ä¡A³]©w«á°£«D¬O²M°£¡A§_«h³£·|¤@ª½«O«ù¡C³o­Ó¥\¯à¹ï©ó°lÂܤÀªK«Ü¦³¥Î¡CBP «ü¥Oªº¨Ï¥Î¤èªk¦p¤U¡G

    BP[n] ADDRESS [¦¸¼Æ] ["COMMAND"]

    n ªí¥Ü¤¤Â_ÂI¸¹½X¡A¥i¥H±q 0 ¨ì 9 ¦@¤Q­Ó¸¹½X¡ASYMDEB ³Ì¦h¥i¥H³]©w 10 ­Ó¤¤Â_ÂI¡A±z¥i¥H«ü©w¸¹½X¡A¤]¥i¥H¤£«ü©w¡C¦pªG¤£«ü©wªº¸Ü´N¥Ñ SYMDEB ¥Ñ 0 ¶}©l¨Ì¦¸¥[¤W¥h¡F¦pªG«ü©w¸¹½Xªº¸Ü¡A¸¹½X©M¡uBP¡v¤§¶¡¤£¥i¥H¦³ªÅ®æ¡CADDRESS ªí¥Ü©Ò³]©wªº¤¤Â_ÂI¦ì§}¡A¤]¥i¥Î¼Ð°Oªí¥Ü¡C¦¸¼Æ¬O«ü¸Ó¤¤Â_ÂI¤£¥ß§Y¥Í®Ä¡A¥²¶·°õ¦æ¹L©Ò«ü©wªº¦¸¼Æ¤§«á¤~¥Í®Ä¡A³o­Ó¤èªk¦b°»´ú°j°é®É¯S§O¦³¥Î¡CCOMMAND ¬O«ü·í°õ¦æ¨ì¤¤Â_ÂI®É¡A¤£¶È°±¤î°õ¦æÅã¥Ü¼È¦s¾¹¥~¡AÁÙ­n°õ¦æ¡u"¡v¤§¶¡ªº SYMDEB «ü¥O¡A¦pªG«áÄò­n°õ¦æªº«ü¥O¤£¥u¤@­Ó¡A¥i¥Î¡u;¡v¤À¶}¡C

  2. BC ¬O¥Î¨Ó²M°£¤¤Â_ÂI¡A¨ä«ü¥O®æ¦¡¬O

    BC n

    ·í«ü©w n ®Éªí¥Ü²M°£¨º¤@­Ó¤¤Â_ÂI¸¹½X¡A¦pªG n ¬°¡y*¡zªí¥Ü²M°£©Ò¦³ªº¤¤Â_ÂI¡C·í¤¤Â_ÂI³Q²M°£«á¡ASYMDEB °õ¦æ¨ì¦¹³B´N¤£·|°±¤U¨Ó¤F¡C

  3. BD ¬O¥Î¨Ó¼È®É¨Ï¤¤Â_ÂI¥¢¥h¥\¯à¡A¦ý¤£¬O¯u¥¿²M°£¡A¥i¥H¥Î BE ¨Ó¨Ï¥¦«ì´_¥\¯à¡ABD¡BBE ªº¨Ï¥Î®æ¦¡©M BC ¬Û¦P¡C( D ©M E ¨ä¹ê¤À§O¬O disable ©M enable ¤§·N )

  4. BL ¬O§â©Ò¦³ªº¤¤Â_ÂI¦C¥X¨Ó¡A²Ä¤@Äæ¬O¤¤Â_ÂI¸¹½X¡A²Ä¤GÄæ¬O¬O§_¥¢¥h¥\¯à©Î¥¿±` ( ¥¢¥h¥\¯àÅã¥Ü¡ud¡v¡Q¥¿±`«hÅã¥Ü¡ue¡v)¡A²Ä¤TÄæ¬O¤¤Â_ÂI¦ì§}¡A²Ä¥|Äæ¬O¸Ó¤¤Â_ÂI¦ì§}ªº¼Ð°O¦W¡A²Ä¤­Äæ¬OÁÙ­n³q¹L´X¦¸¤~¥Í®Ä¡A²Ä¤»Äæ¬O³Ìªì³]©w®Éªº¥i³q¦æ¦¸¼Æ¡A²Ä¤CÄæ¬O¤¤Â_ÂI¤¤Â_«áªº«áÄ~°Ê§@¡C

¦A¦^¨ì¥Î SYMDEB ¸ü¤J DECIMAL.SYM ¤Î DECIMAL.COM¡A¦A¤Ï²ÕĶ¾ã­Óµ{¦¡½X¡A¦p¤U¡C¥H®Ø½u®Ø°_¨Ó¡A¬õ¦âªº³¡¤À¬O¡u.WHILE/.ENDW¡v°j°é¡C

  E:\DOS\DECIMAL>c:\tools\symdeb decimal.sym decimal.com [Enter]
  Microsoft (R) Symbolic Debug Utility  Version 4.00
  Copyright (C) Microsoft Corp 1984, 1985.  All rights reserved.

  Processor is [80286]
  -u 113 137 [Enter]
  DGROUP:begin:
  1551:0113 A10201         MOV    AX,[value]
  1551:0116 BB1101         MOV    BX,0111
  1551:0119 B90500         MOV    CX,0005
  1551:011C EB0E           JMP    @C0001
┌─DGROUP:@C0002:
│ 1551:011E 33D2           XOR    DX,DX
│ 1551:0120 F7360401       DIV    Word Ptr [ten]
│ 1551:0124 0017           ADD    [BX],DL
│ 1551:0126 0BC0           OR     AX,AX
│ 1551:0128 7406           JZ     @C0003
│ 1551:012A 4B             DEC    BX
│ 1551:012B 49             DEC    CX
│ DGROUP:@C0001:
│ 1551:012C 0BC9           OR     CX,CX
└─1551:012E 75EE           JNZ    @C0002
  DGROUP:@C0003:
  1551:0130 BA0601         MOV    DX,0106
  1551:0133 B409           MOV    AH,09
  1551:0135 CD21           INT    21
  1551:0137 CD20           INT    20

¦pªG¤p¤ì°¸·QÆ[¹î 0ABCDH Âà´««áªº¤Q¶i¦ì¼Æ¡A¯à§_¨Ì·Ó­Ó¦ì¼Æ¡B¤Q¦ì¼Æ¡B¦Ê¦ì¼Æ¡K¡K³v¤@±q°O¾ÐÅé¦ì§} 0111 ³B¶}©l©¹§C¦ì§}¶ñ¤J¡A¨º»ò³Ì¦nªº¤¤Â_ÂI´N¬O¦ì§} 0126 ³B¡C¦]¬°¤W¤@±ø«ü¥O´N¬O§â°£¥H 10 «áªº¾l¼Æ¡A¶ñ¤J°O¾ÐÅéùØ¡C¥t¥~¡A¤p¤ì°¸¤]·Q¦b°j°é°õ¦æ§¹«á¡A¸ê®Æ©|¥¼¦L¦b¿Ã¥ú¹õ«e¡AÆ[¹îµ²ªG¬O§_¥¿½T¡A©Ò¥H«ü©w¨â­Ó¤¤Â_ÂI¡G

  -bp 126 "r;d 100 l20" [Enter] ¡÷³]¸m²Ä 0 ¸¹¤¤Â_ÂI¡A¥B¤¤Â_«á°õ¦æ¡ur¡v»P¡ud¡v¨â­Ó«ü¥O
  -bp @c0003 [Enter] ¡÷³]¸m²Ä 1 ¸¹¤¤Â_ÂI¡A¦b°j°é¥~  
  -bl [Enter] ¡÷¦C¥X©Ò¦³¤¤Â_ÂI
  0 e 1551:0126 [DGROUP:@C0002+08 (0126)]  "R;D 100 L20"
  1 e 1551:0130 [DGROUP:@C0003] 
  -g [Enter] ¡÷¶}©l°õ¦æ¡A¦ý¨Ã¤£·|°õ¦æ¨ìµ{¦¡µ²§ô¤~°±¤î
  AX=112E  BX=0111  CX=0005  DX=0001  SP=FFFE  BP=0000  SI=0000  DI=0000 ¡÷¨ì²Ä 0 ¸¹¤¤Â_ÂI´N¼È°±°õ¦æ
  DS=1551  ES=1551  SS=1551  CS=1551  IP=0126   NV UP EI PL NZ NA PO NC  ¡÷¡A¨Ã¦L¥X¼È¦s¾¹¸ê®Æ
  1551:0126 0BC0           OR     AX,AX                         ;BR0 ¡÷²Ä 0 ¸¹¤¤Â_ÂI
  1551:0100  EB 11 CD AB 0A 00 30 41-42 43 44 48 3D 30 30 30  k.M+..0ABCDH=000¡÷¤Î°O¾ÐÅé¦ì§} 0100
  1551:0110  30 31 24 A1 02 01 BB 11-01 B9 05 00 EB 0E 33 D2  01$!..;..9..k.3R¡÷¦Ü011Fªº¤º®e
                 0111 ³Bªº¡u31¡v´N¬O 0ABCDH °£¥H¤Qªº¾l¼ÆÂà´«¦¨ ASCII ¦r¤¸

°õ¦æ¨ì 0126 ªº²Ä 0 ¸¹¤¤Â_ÂI´N°±¤U¨Ó¤F¡A¨Ã¦Û°Ê°õ¦æ¡uR¡v»P¡uD¡v«ü¥O¡A¦L¥X¼È¦s¾¹¤Î answer ¦r¦ê¡C¨ì²{¦b¬°¤î¤w¸g§â­Ó¦ì¼Æºâ¥X¨Ó¤F¡A±µ¤U¨Ó¦A¸Õ¸Õ¬Ý¤Q¦ì¼Æ¡A¦p¤U¡G

  -g [Enter]
  AX=01B7  BX=0110  CX=0004  DX=0008  SP=FFFE  BP=0000  SI=0000  DI=0000
  DS=1551  ES=1551  SS=1551  CS=1551  IP=0126   NV UP EI PL NZ NA PO NC
  1551:0126 0BC0           OR     AX,AX                         ;BR0 ¡÷¤@¼Ë¨ì²Ä 0 ¸¹¤¤Â_ÂI´N¼È°±°õ¦æ¡A¨Ã¦L¥X¸ê®Æ
  1551:0100  EB 11 CD AB 0A 00 30 41-42 43 44 48 3D 30 30 30  k.M+..0ABCDH=000
  1551:0110  38 31 24 A1 02 01 BB 11-01 B9 05 00 EB 0E 33 D2  81$!..;..9..k.3R
              0110 ³Bªº¡u38¡v´N¬O 0ABCDH °£¥H¤@¦Êªº¾l¼ÆÂà´«¦¨ ASCII ¦r¤¸

¤w¸gÀˬd¹L­Ó¦ì¼Æ©M¤Q¦ì¼Æ¤F¡A¬Û«H°j°éÀ³¸Ó¨S¦³°ÝÃD¤F¡A¥i¥H²M°£°j°é¤ºªº¤¤Â_ÂI¡A«Ý·|¦A°õ¦æ®É´N¤£·|¦b°j°é¤º¤¤Â_¤F¡A½Ð¬Ý¤U­±ªº¾Þ§@¡G

  -bc 0 [Enter] ¡÷²M°£²Ä 0 ¸¹¤¤Â_ÂI
  -g [Enter]
  AX=0000  BX=010D  CX=0001  DX=0004  SP=FFFE  BP=0000  SI=0000  DI=0000
  DS=1551  ES=1551  SS=1551  CS=1551  IP=0130   NV UP EI PL ZR NA PE NC
  DGROUP:@C0003:
  1551:0130 BA0601         MOV    DX,0106                       ;BR1
  -d 100 l20 [Enter]
  1551:0100  EB 11 CD AB 0A 00 30 41-42 43 44 48 3D 34 33 39  k.M+..0ABCDH=439
  1551:0110  38 31 24 A1 02 01 BB 11-01 B9 05 00 EB 0E 33 D2  81$!..;..9..k.3R
  -g [Enter]
  0ABCDH=43981¡÷¥¿½Tªº¦L¥Xµ²ªG
  Program terminated normally (0)
  -q [Enter]

µù¤@¡G¸Ñ¨M DIV ·¸¦ì

¦³¨âºØ±¡§Î·|¨Ï±o DIV µo¥Í·¸¦ì¡G①°£¼Æ¬°¹s¡A②³Q°£¼Æ¤Ó¤j¦Ó°£¼Æ¤Ó¤p¥H­P©óÅý°ÓµLªk¦s¤J²Ö¥[¾¹¤¤¡C­n¨¾¤î²Ä¤@ºØ·¸¦ìªº±¡§Î«Ü²³æ¡A¥u­n¦b°õ¦æ DIV ¤§«eÀˬd¹Bºâ¤¸¬O§_¬°¹s§Y¥i¡Aµ{¦¡¦p¤U¡G

        cmp     bx,0    ;Àˬd°£¼Æ¬O§_¬°¹s
        jz      zero    ;­Y¬°¹s¡A¸õ¹LDIV«ü¥O
        div     bx      ;­Y¤£¬°¹s¡A¶i¦æDIV«ü¥O
        ....    ....
zero:                   ;¦¹³B¬°³B²z°£¼Æ¬°¹sªºµ{¦¡

­n¨¾¤î²Ä¤GºØ·¸¦ìªº±¡§Î¡A¥i¥H¨Ï¥Î¨â¦¸°£ªk¡A¥H 16 ¦ì¤¸ªº°£ªk¬°¨Ò¡A²Ä¤@¦¸¥ý­pºâ°ª¦r²Õ¡A²Ä¤G¦¸¦A¥h­pºâ§C¦r²Õ¡C³oºØ¤èªk¦n¹³¬O¥H«e§Ú­Ì¦b¤p¾Ç¾Çªºª½¦¡°£ªk ( ¤]¥sªø°£ªk )¡A¨Ò¦p­n­pºâ 58¡Ò3¡A§Ú­Ì·|¥Î¥k¹Ïªº¤èªk­pºâ¡A³Ì«á°Ó¬° 19¡A¾l¼Æ¬° 1¡C

§Ú­Ì¤]¥i¥H§â DIV «ü¥O·Q¦¨ª½¦¡°£ªk¡A§â 32 ¦ì¤¸ªº³Q°£¼Æ¡ADX ·Q¦¨¬O 5¡AAX ·Q¦¨¬O 8¡C§Ú­Ì¥ý°µ°ª¦r²Õªº°£ªk¡A©Ò±oªº°Ó ( ¹Ï¤¤ªº Q1 ) §Y¬°³Ì«á°Óªº°ª¦r²Õ¡A¦Ó¾l¼Æ ( ¹Ï¤¤ªº R1 ) ¬°²Ä¤G¦¸°£ªkªº³Q°£¼Æ¤§°ª¦r²Õ¡A²Ä¤G¦¸°£ªkªº³Q°£¼Æ§C¦r²Õ«h¬O­ì¥ýªº§C¦r²Õ¡A¥Ñ¹Ï¤W¬Ý´N¬O­ì¨Óªº AX¡C

²Ä¤G¦¸°£ªk©Ò±oªº°Ó¬O³Ì«á°Óªº§C¦r²Õ¡A©Ò±oªº¾l¼Æ¬O³Ì«áªº¾l¼Æ¡C¦¹°Æµ{¦¡­ì©l½X¦p¤U¡G

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
;-------------------------------------------------------------------------------
;§ï¨}¦¡°£ªk¡Adivision¡A¯à¾¨¶qÁקK°£ªk·¸¦ì
;¿é¤J¡GDX:AX¡Ð³Q°£¼Æ
;¡@¡@¡@CX¡Ð°£¼Æ
;¿é¥X¡GDX:AX¡Ð°Ó
;¡@¡@¡@CX¡Ð¾l¼Æ
division        PROC
        LOCAL   temp:WORD       ;¼È®É¦s©ñ­ì¥ý³Q°£¼Æªº§C¦r²Õ
        LOCAL   quotient:WORD   ;¼È®É¦s©ñ°Óªº°ª¦r²Õ
        mov     temp,ax         ;«O¦s­ì¥ý³Q°£¼Æªº§C¦r²Õ
        mov     ax,dx
        sub     dx,dx
        div     cx              ;²Ä¤@¦¸°£ªkªº¾l¼Æ¬°²Ä¤G¦¸°£ªkªº°ª¦r²Õ
        mov     quotient,ax     ;²Ä¤@¦¸°£ªk«áªº°Ó¬°³Ì«á°Óªº°ª¦r²Õ¡A¥ý«O¦s°_¨Ó
        mov     ax,temp         ;¨ú¦^­ì¥ý³Q°£¼Æªº§C¦r²Õ·í°µ²Ä¤G¦¸°£ªkªº§C¦r²Õ
        div     cx
        mov     cx,dx           ;²Ä¤G¦¸°£ªkªº¾l¼Æ´N¬O³Ì«áªº¾l¼Æ
        mov     dx,quotient
        ret
division        ENDP
;-------------------------------------------------------------------------------

¤p¤ì°¸Ä±±o¡A³o­Ó°Æµ{¦¡«Ü¦³¥Î¡A¯à³B²z«Ü¤j¼Æªº°£ªk¡A¤]¤£¥²¾á¤ß°£ªk·¸¦ìªº°ÝÃD¡C¦ý­nª`·Nªº¬O¡A³o­Ó§ï¨}¦¡°£ªk°Æµ{¦¡¡A¨Ã¨S¦³Àˬd°£¼Æ¬O¹sªº¹Lµ{¡A¦]¦¹©I¥s«e­n¥ýÀˬd°£¼Æ¬O§_¬°¹s¡C