ʵÑéÒ»¡¢ÈÏʶTddebug¼¯³É²Ù×÷Èí¼þ
Ò»£®ÊµÑéÄÚÈÝ
£¨Ò»£© ʵÑéÌâÄ¿£ºÊý¾Ý´«ËÍʵÑé
1. ±à³Ì½«Êý¾Ý¶ÎÖеÄÒ»¸ö×Ö·û´®´«Ë͵½¸½¼Ó¶ÎÖУ¬²¢Êä³ö¸½¼Ó¶ÎÖеÄÄ¿±ê×Ö·û´®µ½ÆÁÄ»ÉÏ¡£
2. Ð޸Ĵ˳ÌÐò£¬²ÉÓÃ×Ö·û´®´«ËÍÖ¸ÁîÍê³É¡£
£¨¶þ£© ʵÑéÄ¿µÄ£ºÍ¨¹ý¶Ô¸Ã³ÌÐò½øÐе÷ÊÔ£¬²é¿´³ÌÐò¶Î¡¢Êý¾Ý¶Î¡¢¸½¼Ó¶Î×°ÈëÄÚ´æºóµÄ·ÖÅäÇé¿ö¡£µ¥²½Ö´ÐÐÊý¾Ý´«ËÍÖ¸Áîºó£¬¹Û²ì¸÷¸ö¼Ä´æÆ÷¼°Êý¾ÝÇøµÄÄÚÈÝ¡£
£¨Èý£© ʵÑé²½Ö裺
1. ÔËÐÐTddebugÈí¼þ£¬Ñ¡ÔñEdit²Ëµ¥±àдʵÑé³ÌÐò
2. ʹÓÃCompile²Ëµ¥ÖеÄCompileºÍLink¶ÔʵÑé³ÌÐò½øÐлã±à¡¢Á¬½Ó£¬Éú³ÉÖ´ÐÐÎÄ
¼þ¡£
3. ʹÓÃRmrun²Ëµ¥ÖеÄRunÔËÐгÌÐò£¬¹Û²ìÔËÐнá¹û¡£
4. ʹÓÃRmrun²Ëµ¥ÖеÄDebugµ÷ÊÔ³ÌÐò£¬²é¿´³ÌÐò¶Î¡¢Êý¾Ý¶Î¡¢¸½¼Ó¶Î×°ÈëÄÚ´æºó
µÄ·ÖÅäÇé¿ö¡£µ¥²½Ö´ÐÐÊý¾Ý´«ËÍÖ¸Áîºó£¬¹Û²ì¸÷¼Ä´æÆ÷¼°Êý¾ÝÇøµÄÄÚÈÝ¡£¹ý³ÌÈçÏ£º 1) °´F7µ¥²½Ö´ÐУ¬ÔÚ´úÂëÇøÖÐÓÐÒ»¸öÈý½Ç£¬±íʾÕýÔÚÖ´ÐеÄÖ¸ÁÿһÌõÖ¸ÁîµÄÖ´ÐÐÒ»¶¨»áʹĿ±ê¼Ä´æÆ÷ºÍ״̬¼Ä´æÆ÷·¢Éú±ä»¯£¬´ÓÏà¹Ø´°¿Ú¿´½á¹û¡£ 2) ¼ì²éÄÚ´æÊý¾ÝÇøµÄÄÚÈÝ£¬¹Ø¼üÊÇÕÒ³öÓû§³ÌÐòµÄÊý¾Ý¶ÎºÍ¸½¼Ó¶Î£º
? ·½·¨1£ºÔÚCPU´°¿Ú°´Tab¼üʹÄÚ´æÊý¾ÝÏÔÊ¾Çø³ÉΪ»î¶¯Çø£¬°´Ctrl+G¼ü£¬?
ÊäÈ룺¡°DS»òES¼Ä´æÆ÷µÄÖµ£ºÆ«ÒƵØÖ·¡±£¬¼´¿ÉÏÔʾÓû§Ö¸¶¨µÄÊý¾ÝÇø ·½·¨2£ºÑ¡Ôñ²Ëµ¥View| Dump£¬µ¯³öÄÚ´æÊý¾ÝÏÔʾ´°¿Ú¡£
3) ²é¿´Ö´Ðнá¹û£º°´Alt+F5£¬Çл»µ½Óû§´°¿Ú¡£ 5. ¸ü¸ÄÊý¾ÝÇøÖеÄÊý¾Ý£¬¿¼²ì¡¢µ÷ÊÔ³ÌÐòµÄÕýÈ·ÐÔ¡£
¶þ£®·ÖÎöÉè¼ÆË¼Ï룬»æÖÆÊµÑéÔÀíͼ¡¢Á÷³Ìͼ¡£
»ã±àÓïÑÔ³ÌÐòµÄ¿ª·¢¹ý³ÌÈçͼ1.1Ëùʾ£¬Õâ¸ö¹ý³ÌÖ÷ÒªÓб༡¢±àÒë¡¢Á´½Ó¼¸¸ö²½Öè¹¹³É¡£
Èý£®³ÌÐòÇåµ¥¼°Ïà¹Ø×¢ÊÍ¡£
DDATA SEGMENT
MSR DB \LEN EQU $- MSR
DDATA ENDS EXDA SEGMENT MSD DB LEN DUP(?)
£»¶¨ÒåÔ´Êý¾Ý¶Î
£»¶¨Ò帽¼ÓÊý¾Ý¶Î
1
EXDA ENDS
£»¶¨Òå¶ÑÕ»¶Î
MYSTACK SEGMENT STACK DW 20 DUP(?) MYSTACK ENDS
CODE SEGMENT
£»¶¨Òå´úÂë¶Î
ASSUME CS:CODE,DS:DDATA,ES:EXDA START: MOV AX,DDATA
MOV DS,AX MOV AX,EXDA MOV MOV MOV MOV MOV
ES,AX SI,OFFSET MSR DI,OFFSET MSD CX,LEN BX,0
£»×°ÔØÊý¾Ý¶Î¼Ä´æÆ÷
£»×°Ôظ½¼ÓÊý¾Ý¶Î¼Ä´æÆ÷
NEXT: MOV AL,MSR[BX] £»¿ªÊ¼´«ÊäÊý¾Ý MOV ES:MSD[BX],AL
INC LOOP PUSH
BX NEXT ES
£»½«¸½¼Ó¶Î¼Ä´æÆ÷Ö¸ÏòµÄ¶ÎÖµ¸³¸øÊý¾Ý¶Î¼Ä´æÆ÷
POP DS MOV DX,OFFSET MSD
MOV AH,9
INT 21H MOV AH,4CH INT 21H
£»ÏÔʾ×Ö·û´® £»·µ»ØDOS״̬
CODE ENDS END START
ËÄ£®ÊµÑé½á¹û²¢·ÖÎö¡£
Î壮ÊÕ»ñÌå»á¼°ÊµÑéÖÐÓöµ½µÄÎÊÌâºÍ½â¾ö·½·¨¡£
ÔÚÕâ´ÎÊÔÑéÖÐÖ÷ÒªÊÇÕÆÎÕtddebugµÄ¿ª·¢»·¾³£¬Á˽â»ã±àÓïÑԵĻù±¾³ÌÐò¡£ÓÉÓÚ¸Õ
2
¸Õ½Ó´¥»ã±àÓïÑԺͿª·¢»·¾³£¬¸÷Ïî֪ʶ¶¼ÏԵıȽϱ¡Èõ£¬Óöµ½Á˺ܶà²Ù×÷ÉϵĻù±¾ÎÊÌâ¡£±ÈÈçʹÓÿì½Ý¼ü½øÐнçÃæ²Ù×÷²»Ì«ÊìÁ·µÈ¡£ÓÉÓÚ´úÂë¶ÎÏà¶Ô±È½Ï³¤£¬ºÜ¶àµØ·½»¹ÐèÔÚÀÏʦµÄÖ¸µ¼Ï²ÅÄÜ¿´¶®£¬Ö±½Ó½«´úÂë³ÌÐò´ò³öÀ´»á³öÏֺܶàÓÉÓÚ²»Àí½â´ÖÐĵÈÔì³ÉµÄʧÎóʹ֮²»ÄܱàÒë³É¹¦¡£ºóÀ´³¢ÊÔ½«³ÌÐò´úÂë¸´ÖÆ²¢Áí´æÎªASM¸ñʽ֮ºó¾Í¿ÉÒÔÖ±½Ó±àÒë·½±ãÁ˺ܶàÁé»îÁ˺ܶࡣ½ñºó»¹ÐèÔÚÀíÂÛ¿ÎÌÃÉ϶àϹ¦·ò£¬½øÒ»²½¶Ô»ã±àÉîÈëѧϰ¡£
ʵÑé¶þ¡¢I/O³ÌÐòÉè¼Æ
Ò»£®ÊµÑéÄÚÈÝ£ºI/O³ÌÐòÉè¼Æ £¨Ò»£©ÊµÑéÄÚÈÝ£º
1£®±à³ÌÓɼüÅÌÊäÈëÈÎÒâÒ»¸ö×Ö·û£¬½«¸Ã×Ö·ûµÄASCIIÂëÖµÏÔʾÔÚÆÁÄ»ÉÏ¡£
2£®´Ó¼üÅÌÊäÈëÁ½¸ö1λʮ½øÖÆÊý£¬¼ÆËã¶þÕßÖ®ºÍ£¬²¢½«½á¹ûÏÔʾÔÚÆÁÄ»ÉÏ¡£
3£®±à³ÌÓɼüÅÌÊäÈëÈÎÒâһλÊý£¬½«¸ÃÊýÒÔ¶þ½øÖÆÊýÐÎʽÏÔʾÔÚÆÁÄ»ÉÏ£¬Àý£º5=00000101B
£¨¶þ£© ʵÑé²½Ö裺
1. »³öʵÑéÁ÷³Ìͼ¡£
2. ÔËÐÐTddebugÈí¼þ£¬Ñ¡ÔñEdit²Ëµ¥±àдʵÑé³ÌÐò
3. ʹÓÃCompile²Ëµ¥ÖеÄCompileºÍLink¶ÔʵÑé³ÌÐò½øÐлã±à¡¢Á¬½Ó£¬Éú³ÉÖ´ÐÐÎļþ¡£
4. ʹÓÃRmrun²Ëµ¥ÖеÄRunÔËÐгÌÐò£¬¹Û²ìÔËÐнá¹û¡£
5. ʹÓÃRmrun²Ëµ¥ÖеÄDebugµ÷ÊÔ³ÌÐò¡£µ¥²½Ö´ÐÐÖ¸Á¹Û²ì¸÷¼Ä´æÆ÷¼°Êý¾ÝÇøµÄ
ÄÚÈÝ¡£
6. ¸ü¸ÄÊý¾ÝÇøÖеÄÊý¾Ý£¬¿¼²ì³ÌÐòµÄÕýÈ·ÐÔ¡£
¶þ£® ·ÖÎöÉè¼ÆË¼Ïë¡£
Éè¼ÆË¼Â·£ºÊ×ÏȽ«¸ÃÊýÒÔÊ®Áù½øÖÆÊýÐÎʽ·Ö½â£¬È»ºó½«Ã¿Ò»Î»·Ö±ðת»»ÎªASCIIÂëËÍÆÁÄ»ÏÔʾ¡£ÆäÖÐ0H~9HÖ®¼äµÄÊý¼Ó30H£¬¼´¿ÉµÃ0H~9HµÄASCIIÂ룬¶øAH~FHµÄASCIIÂ룬ÔòÐèÔÙ¼Ó7H£¬²Î¼û±í5-1¡£²Î¿¼³ÌÐòÁ÷³ÌÈçͼ2-1Ëùʾ¡£Ê¾Àý³ÌÐò²Î¼û²Î¿¼³ÌÐòÇåµ¥¡£
Èý£® DATA
³ÌÐòÇåµ¥¼°Á÷³Ì SEGMENT
MES DB 'Show a as hex:',0AH,0DH,'$'
SD DB 'a' DATA CODE
ENDS SEGMENT
MOV AX,DATA MOV DS,AX MOV MOV
DX,OFFSET MES £»ÏÔʾÌáʾÐÅÏ¢ AH,09H
SI,OFFSET SD AL,DS:[SI]
3
ASSUME CS:CODE,DS:DATA START:
INT 21H MOV MOV
AND AL,0F0H £»È¡¸ß4λ
MOV CL,4 SHR AL,CL CMP AL,0AH £»ÊÇ·ñÊÇAÒÔÉϵÄÊý JB C2 ADD AL,07H C2: ADD AL,30H
MOV MOV INT MOV AND CMP JB
21H
AL,DS:[SI] AL,0FH £»È¡µÍ4λ AL,0AH C3
£»ÏÔʾ×Ö·û
DL,AL AH,02H
ADD AL,07H C3: ADD AL,30H
MOV MOV INT MOV INT
DL,AL AH,02H 21H
AH,4CH 21H
£»ÏÔʾ×Ö·û
£»·µ»ØDOS
CODE ENDS END START
ËÄ£®
ʵÑé½á¹û¡£
Î壮 ÊÕ»ñÌå»á¡£
ÔÚʵÑéÖÐ,¼ÓÇ¿Á˶ÔÀíÂÛ֪ʶµÄÕÆÎÕ£¬ÓÉÓÚÌÃÉϵÄ֪ʶ̫¶àƽʱ²»ÄܺܺõÄÀí½â£¬ÔÚ¾ß
ÌåµÄʵ¼ùÖиü¼Ó¹®¹ÌÁËÎÒ¶ÔÀíÂÛ֪ʶµÄÈÏʶ£¬ÔöÇ¿ÁË»ã±àÓïÑԵıà³ÌÓï¸Ð¡£»ã±àÓïÑÔÊǵײãµÄÓ²¼þÓïÑÔ£¬ºÍCÓïÑÔÓÐÀàËÆµÄµØ·½£¬Ò²Óв»Ò»ÑùµÄµØ·½£¬ËùÒÔÔÚʵ¼Ê±à³ÌµÄ¹ý³ÌÖÐд¸ø´úÂë¶Î²âÊÔ½á¹û£¬¼ÓÉî¶ÔÀíÂÛ֪ʶµÄÁé»îÕÆÎÕ£¬Îª½ñºóÖð²½Ôö¼ÓÄѶȵıà³ÌÐòѧ
4