¦b¤é±`¥Í¬¡¤¤¡Aµ´¤j³¡¤Àªº¤H³£¬O¨Ï¥Î¤Q¶i¦ìp¼Æ¡C¦]¦¹¦p¦ó§â¹q¸£¤¤ªº¤Q¤»¶i¦ì¼ÆÅܦ¨¤Q¶i¦ì¼Æ¡A¤]¬O±`¥Îªºµ{¦¡¡A¥»³¹´N¨Ó½Í¤@½Í³oÓµ{¦¡¡C
¤£ºÞ¬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ªGn¥Î¤â»P¸£¡A§â¤Q¤»¶i¦ì´«ºâ¦¨¤Q¶i¦ì¡A¥i¥H°Ñ¦Òªþ¿ý¤G¡C¦pªG¥Î¹q¸£µ{¦¡¥hpºâ¡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ªGn§â¦s¦b°O¾ÐÅ餺ªº¥¿¾ã¼Æ¡A43981¡A¦L¦b¿Ã¹õ¤W¡An¦p¦ó°µ©O¡Hnª`·N³o¤£¬O¦r¦ê¡A¦Ó¬O¤@Ó¥¿¾ã¼Æ¡C¤p¤ì°¸³o¼Ë«ä¦Ò¡A³oÓ¥¿¾ã¼Æ¦³¤¦ì¼Æ¡AÅãµMn¦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©Ò¥Hn¥ý½Õ¾ã¦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¦ì¤@¼Ë¡Cn¥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µMn¥Î¨ì°£ª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
DIV «ü¥O¬O¥\¥Î¬Opºâ¥¿¾ã¼Æªº°£ª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þ¤@Ó¡An¬Ý¹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¦ì¤¸ | AX | AL | AH | 00AAh°£¥H12h µ¥©ó09h¾l08h |
AX=00AAh BL=12h | AX=0809h (AL=°Ó¡AAH=¾l) BL=12h | 255 |
16¦ì¤¸ | DX:AX | AX | DX | 1234FEDCh°£¥H5678h µ¥©ó35E7h¾l2094h |
AX=FEDCh DX=1234h BX=5678h | AX=35E7h(°Ó) DX=2094h(¾l) BX=5678h | 65535 |
32¦ì¤¸ ¥u¯à¥Î©ó 386µ¥¯Å¥H¤W | EDX:EAX | EAX | EDX | 0FEDCBA12345000h °£¥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 | RAX | RDX | 1CDEFAB1234567890h °£¥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¡AnÅý¸û°ª¦ì¼Æªº¦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
°õ¦æ§¹¤Wzµ{¦¡«á¡AAX¡×35E7h ( °Ó¼Æ )¡ADX¡×2094h ( ¾l¼Æ )¡A¦Ó BX ¤§È¤£ÅÜ¡C
DIV «ü¥O³Ì±`µo¥Íªº°ÝÃD¬O¡u·¸¦ì¡v¡A´N¬O°Ó¤Ó¤j¡A¥HP©ó©ñ¤£¤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¯Ç¤£¤Upºâ©Ò±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
¥ý¤¶²Ð¤°»ò¬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¡AY 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ªGnÅý¬YӼȦs¾¹Åܦ¨¹s¡A¥i¥H¥Î³oºØ¤èªk¡C¨Ò¦pn¨Ï DX Åܬ°¹s¡A¥i¥H¥Î¡uXOR DX,DX¡v¡C
©³¤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¬O¥Î¨Ó©w¸q¤@Ө㦳«½Æ¥X²{ªº¼ÆÈ¡A¥²¶··f°t DB¡BDW¡BDD µ¥°²«ü¥O¨Ï¥Î¡A¨ä»yªk¬O
¦¸¼Æ DUP ( ªì©lÈ[,ªì©lÈ[,...]])
¤W¦¡¤¤ªº¦¸¼Æ´N¬O«½Æ¦¸¼Æ¡An«½Æªº³¡¤À¦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
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
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¨Cpºâ¤@Ó¦ì¼Æ´NÅý BX ´î¤@¡A«ü¦V¤U¤@Ó¦ì¼Æ¡C
¦³Ãö¡u.BREAK .IF¡vªº»¡©ú½Ð¬Ý«e¤@³¹ªº³oùØ¡A¦¹³Bn»¡ªº¬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¥hpºâ¤F¡C«ç»ò¥hÀˬd¬O§_¤p©ó©Îµ¥©ó¥|¦ì¼Æ©O¡H³o¤]¤£Ãø¡A·í°µ³sÄò°£ªk®É¡A©Ò±oªº°Ó¼Æ¬°¹s®É¡A´Nªí¥Ü¨S¦³§ó°ª¦ì¼Æ¤F¡C
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 ¦Ó²{¦bn¨Ï¥Îªº¸Ü¡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
©³¤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
MAPSYM [/L] MAPÀɦWMAPSYM ¥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¡vn°Ï¤À¤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·Qnªº MAP ÀɦW¡A¦pªG¬Ù²¤«h¸òì©lµ{¦¡¥DÀɦW¬Û¦P¡C
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¬On«Å§i¬°¡uPUBLIC¡vªº²Å¸¹¦WºÙ¡C¡ulangtype name¡v¥i¥H¦³³\¦h²Õ¡A¤]¥i¥H¥u¦³¤@²Õ¡Aµø±¡§Î¨M©w¡C
¬JµM SYMDEB «Â¤O¤ñ DEBUG ±j¤j¡A«Ý·|´N¨Ó¸Õ¸Õ¡C²{¦b¥ý¤¶²Ð SYMDEB ªº§¹¾ã»yªk¡G
SYMDEB [°Ñ¼Æ] [SYMÀÉ] [±ý°£¿ù¤§¥i°õ¦æÀÉ] [¸Ó¥i°õ¦æÀɤ§°Ñ¼Æ]
SYMDEB ªº°Ñ¼Æ¦³ 5 Ó¡C
§ÚÌ´N¨Ó¸Õ¸Õ¬Ý¡Cnª`·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
OR «ü¥O¬OÅÞ¿è¹Bºâ«ü¥O¡A¥¦¨Ï¨âÓ¹Bºâì§@¡u©Î¡v¹Bºâ¡C©Ò¿×¡u©Î¡v¹Bºâ¬O«ü¦³¼ÆÓ±ø¥ó¡A¥un¨ä¤¤¤§¤@¦¨¥ß´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 ( ¤¤Â_¬O break ªº·N«ä )¡A¡uB¡v«ü¥O¡A«D±`±j¤j¡A¥i¦A²Ó¤À¤Ó¡u¤l¡v«ü¥O¡GBP¡BBC¡BBD¡BBE¡BBL¡C
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
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
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 )
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]
¦³¨âºØ±¡§Î·|¨Ï±o DIV µo¥Í·¸¦ì¡G①°£¼Æ¬°¹s¡A②³Q°£¼Æ¤Ó¤j¦Ó°£¼Æ¤Ó¤p¥HP©óÅý°ÓµLªk¦s¤J²Ö¥[¾¹¤¤¡Cn¨¾¤î²Ä¤@ºØ·¸¦ìªº±¡§Î«Ü²³æ¡A¥un¦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¥hpºâ§C¦r²Õ¡C³oºØ¤èªk¦n¹³¬O¥H«e§Ú̦b¤p¾Ç¾Çªºª½¦¡°£ªk ( ¤]¥sªø°£ªk )¡A¨Ò¦pnpºâ 58¡Ò3¡A§ÚÌ·|¥Î¥k¹Ïªº¤èªkpºâ¡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«en¥ýÀˬd°£¼Æ¬O§_¬°¹s¡C