µ±Ç°Î»ÖãºÊ×Ò³ > ºÏ¹¤´ó»ã±àÓïÑÔ¿¼ÊÔ¸´Ï°
Ò». DebugµÄʹÓÃ
1. Debugµ÷ÊÔ»·¾³
¢Ù ´óСд²»Ãô¸Ð ¢Ú Ö»ÓÐ16½øÖÆÊý ¢Û ÒÔ¿Õ¸ñ»ò¶ººÅ×÷Ϊ¸÷ÏîÃüÁîÖ®¼äµÄ·Ö¸ô·û ¢Ü ¸ö±ðÖ¸Áî²»Ö§³Ö£ºSAL ¢Ý Ìø×ªÖ¸ÁîʹÓà 2. ÃüÁîÐÐ
¢Ù ³ÌÐòµ÷ÊÔÃüÁî Debug [¾ø¶Ô·¾¶] [PARM1] [PARM2]
¢Ú DebugÃüÁî²ÎÊý
µØÖ·
¶ÎµØÖ·£ºÆ«ÒƵØÖ· Æ«ÒÆµØÖ·
µØÖ··¶Î§
¿ªÊ¼µØÖ· ½áÊøµØÖ· °ïÖú £¿
ÏÔʾ´æ´¢µ¥ÔªÃüÁî
-D [ADDRESS] »ò [RANG] Ð޸Ĵ洢µ¥ÔªÄÚÈÝÃüÁî -E ADDRESS [LIST] ;
-E ds : 100¡±This is the text example¡± ¼ì²éºÍÐ޸ļĴæÆ÷ÄÚÈÝÃüÁî -R [REGISTER NAME] ;
»ã±àÃüÁî -A [ADDRESS] ·´»ã±àÃüÁî
-U [ADDRESS] »ò [RANGE] ÔËÐÐÃüÁî
-G [=ADDRESS] [ADDRESS2] [ADDRESS3] ¸ú×ÙÃüÁî
-T [=ADDRESS] [VALUE]; ¼ÌÐøÃüÁî
-P [=ADDRESS] [VALUE] Í˳öÃüÁî -Q
¶þ.
1. »ã±àÓïÑÔ³ÌÐòÉè¼Æ»ù±¾²½Öè ¢Ù ·ÖÎöÎÊÌâ ¢Ú È·¶¨Ëã·¨ ¢Û »æÖÆÁ÷³Ìͼ£¬Ä£¿éͼ ¢Ü È·¶¨Êý¾Ý½á¹¹£»½øÐÐÊý¾Ý¶ÎÉè¼Æ ¢Ý ±àд³ÌÐò ¢Þ µ÷ÊÔ 2. ³ÌÐò½á¹¹
*˳Ðò½á¹¹ *Ñ»·½á¹¹
*·ÖÖ§½á¹¹ £º Åж¨Ìõ¼þ+ʼþ´¦Àí *×Ó³ÌÐò½á¹¹
Èý. »ã±àÓïÑÔ³ÌÐòÉè¼Æ
1. CPU
CPU = ËãÊõÂß¼²¿¼þ + ¿ØÖƲ¿¼þ + ¼Ä´æÆ÷×é
CPU×÷ÓãºÖ´ÐÐËãÊõÓëÂß¼ÔËËã¡¢¿ØÖÆÖ¸ÁîµÄÖ´ÐÐ 2. ϵͳ×ÜÏß
Êý¾Ý×ÜÏß + µØÖ·×ÜÏß + ¿ØÖÆ×ÜÏß Êý¾Ý×ÜÏߣºÓëÊý¾Ý´æÈ¡Î»Êý¶ÔÓ¦£¬Êý¾Ý×ÜÏßÔ½¿í£¬´¦ÀíÄÜÁ¦Ô½Ç¿¡£
µØÖ·×ÜÏߣºNλµØÖ·×ÜÏßÌṩ2N ²»Í¬µØÖ·£º0 ~ 2N ¨C 1
¿ØÖÆ×ÜÏߣº¿ØÖÆCPUÓëÄÚ´æºÍI/OÉ豸֮¼äµÄÊý¾Ý´«Ê䷽ʽ 3. ÄÚ´æµ¥Ôª£º µØÖ·£¨±àºÅ£©ÓëÖµ£¨ÄÚÈÝ£©¡£eg.£¨100H£©=34H 4. ´æ´¢É豸
5.
AXÀÛ¼ÓÆ÷
BX »ùÖ·¼Ä´æÆ÷ CX¼ÆÊýÆ÷
DXÊý¾Ý¼Ä´æÆ÷ IP Ö¸ÁîÖ¸Õë¼Ä´æÆ÷ CS´úÂë¶Î ¶Î¼Ä´æÆ÷ DSÊý¾Ý¶Î ¶Î¼Ä´æÆ÷ SS¶ÑÕ»¶Î ¶Î¼Ä´æÆ÷ ES¸½¼Ó¶Î ¶Î¼Ä´æÆ÷ 6. ״̬±ê־λ
£¨1£© ½øÎ»±êÖ¾CF £¨2£© Áã±êÖ¾ZF £¨3£© ·ûºÅ±êÖ¾SF £¨4£© Òç³ö±êÖ¾OF
£¨5£© ÆæÅ¼±êÖ¾PF £º½ö·´Ó³×îµÍ°ËλÖÐ1µÄ¸öÊý£¬ÆæÊýΪ1£¬·ñÔòΪ0 £¨6£© ¸¨Öú½øÎ»±êÖ¾AF
£¨7£© ÖжÏÔÊÐí±êÖ¾IF£ºIF = 1£¬ÔÊÐíÖжÏ
£¨8£© ÏÝÚå±êÖ¾TF£¬TF = 0£¬´¦ÀíÆ÷Õý³£¹¤×÷£»TF = 1£¬´¦ÀíÆ÷µ¥²½Ö´ÐÐÃüÁî 7. 80¡Á86 CPUµÄ¹¤×÷ģʽ
£¨1£© ʵģʽ £¨2£© ±£»¤Ä£Ê½
£¨3£© ÐéÄâ8086ģʽ
ÔËÐÐDOSÓ¦ÓóÌÐò£¬¼´¿ÉÔËÐÐ8086Ó¦ÓóÌÐò
8. ÎïÀíµØÖ· = 16 ¡Á ¶ÎµØÖ·£¨DS£© + Æ«ÒÆµØÖ· 9. CPUµäÐͲÙ×÷
£¨1£©È¡µØÖ· Ö¸Áîµ¥ÔªµØÖ· = £¨CS£©¡Á 10H + IP
£¨2£©¶ÎÕ»²Ù×÷ ¶ÎÕ»Êý¾ÝµØÖ· = £¨CS£©¡Á 10H + Æ«ÒÆµØÖ· £¨3£©ÄÚ´æÊý¾Ý ÄÚ´æÊý¾ÝµØÖ· = £¨DS£©¡Á10H + Æ«ÒÆµØÖ·
ËÄ. 8086Ö¸Áîϵͳ
1. Ö¸ÁîÒ»°ã¸ñʽ
¡¾±êºÅ£º¡¿ ²Ù×÷Âë ²Ù×÷Êý1 ²Ù×÷Êý2 ¡¾£»×¢ÊÍ¡¿ ²Ù×÷Êý£º²Ù×÷Êý¾Ý»òÊý¾ÝËùÔÚµØÖ· 2. ²Ù×÷ÊýÐÎʽ
£¨1£© Á¢¼´²Ù×÷Êý£ºÖ¸Áî²Ù×÷ÊýÊÇÁ¢¼´Êý£¨³£Á¿£©£¬Ö»ÄÜÊÇÔ´²Ù×÷Êý £¨2£© ¼Ä´æÆ÷²Ù×÷Êý£º²Ù×÷Êý´æ·ÅÔڼĴæÆ÷ÖУ¬Ö¸ÁîÖÐʹÓüĴæÆ÷Ãû
£¨3£© ÄÚ´æ²Ù×÷Êý£º²Ù×÷Êý·ÅÔÚÄÚ´æÖУ¬Ö¸ÁîÖиø³öÄÚ´æµØÖ·£¬Í¨³£ÎªÓÐЧµØÖ·
EA£¬¶ÎµØÖ·ÔÚij¸ö¶Î¼Ä´æÆ÷ÖÐ
3. Ѱַ·½Ê½
ÊÇÖ¸ÔÚÖ¸ÁîÖÐÓÃÒÔ˵Ã÷²Ù×÷ÊýËùÔÚµØÖ·µÄ·½·¨ 4. 8086Ѱַ·½Ê½
Á¢¼´Ñ°Ö··½Ê½£º²Ù×÷ÊýÔÚÖ¸ÁîÖиø³ö£¬×÷ΪָÁî»úÆ÷ÂëµÄÒ»²¿·Ö´æ´¢ ? Ö»ÄÜÓÃÓÚÔ´²Ù×÷Êý
MOV AL£¬34H £»»úÆ÷Â룺 B034 MOV AX£¬0034H £»»úÆ÷Â룺 B83400 ¼Ä´æÆ÷Ѱַ·½Ê½
MOV AX £¬ BX MOV AL £¬ BH
CS£¨´úÂë¶Î¼Ä´æÆ÷£©/ IP£¨Ö¸ÁîÖ¸Õë¼Ä´æÆ÷£©²»ÄÜÓÃ×÷Ä¿µÄ²Ù×÷Êý
ÄÚ´æ²Ù×÷ÊýѰַ·½Ê½ Ö±½ÓѰַ·½Ê½£ºÄÚ´æ²Ù×÷ÊýµÄÆ«ÒÆµØÖ·ÓÉÖ¸ÁîÖ±½Ó¸ø³ö. MOV AX £¬[2000H]
¼Ä´æÆ÷¼ä½ÓѰַ·½Ê½£ºÖ¸¶¨Ä³¸öµØÖ·¼Ä´æÆ÷£¨SI¡¢DI¡¢BX¡¢BP£©µÄÄÚÈÝ×÷ΪÄÚ´æ²Ù
×÷ÊýµÄÆ«ÒÆµØÖ·. MOV AX£¬[BX] MOV [BP] , AL
¼Ä´æÆ÷Ïà¶ÔѰַ·½Ê½£ºMOV AX , [SI + 2] MOV[BP ¨C 6H] , AL »ùÖ·±äַѰַ·½Ê½£ºÖ¸¶¨»ùÖ·¼Ä´æÆ÷£¨BX,BP£©¡¢±äÖ·¼Ä´æÆ÷£¨SI£¬DI£©ÄÚÈÝÏà¼Ó×÷
ΪÄÚ´æ²Ù×÷ÊýµÄµØÖ·
Ïà¶Ô»ùÖ·±äÖ¸·½Ê½£ºMOV AL£¬[SI + BX + 2] MOV AL , 2[SI + BX]
MOV[BX+DI-16H] , DX
5. Notice!
(1) ±äÁ¿Ãû±àÒëºóÓÃÆ«ÒƵØÖ·´úÌæ MOV AL£¬X ¡ª> MOV AL £¬[0001H] (2) Æ«ÒÆµØÖ·Ö»ÄÜÊÇ16룬³¬¹ý16룬ÔòºöÂÔ²»¼Æ.
ÈôBX = 0XFFFF , DI =1 , Ôò[BX + DI + 2] = 2 (3) Á½¸ö²Ù×÷Êý²»ÄÜͬʱΪÄÚ´æ
6. Ö¸Áîϵͳ
£¨1£© 8086Ö¸Áîϵͳ·Ö³ÉÁù´óÀà
Êý¾Ý´«ÊäÖ¸Áî ËãÊõÔËËãÖ¸Áî
Âß¼ÔËËãºÍÒÆÎ»Ö¸Áî ´®²Ù×÷Ö¸Áî ¿ØÖÆ×ªÒÆÖ¸Áî
CPU¿ØÖÆÖ¸ÁîÓë±ê־λ´¦ÀíÖ¸Áî
£¨2£© Á½¸ö²Ù×÷Êý´óСƥÅäÔÔò
ÒþʽƥÅ䣺Á½ÕßÖÐÓÐÒ»¸öÈ·¶¨£¬CPU×Ô¶¯Æ¥Åä
ÏÔʾƥÅ䣺Á½Õß´óС¶¼²»È·¶¨£¬ÏÔʾת»»¡£²»È·¶¨²Ù×÷Êý£ºim,Mem(±äÁ¿È·¶¨)
£¨3£© XCHG£¨½»»»Ö¸Á
XCHG reg / mem , reg/mem ×¢ÊÍ£º²»ÄÜͬΪmem
£¨4£© ¶ÑÕ»Ö¸Áî
ÌØµã£ºÏȽøºó³ö
£¨5£© ·ûºÅÀ©Õ¹Ö¸Áî
CBW ¡¢ CWD ¡¢ CWDE ¡¢ CDQ ¸ñʽ£ºÎÞ²Ù×÷Êý
¹¦ÄÜ£º½«·ûºÅλ½øÐÐÀ©Õ¹ CBW AL¡ª>AX
CWD AX¡ª>(DX , AX) CWDE AX¡ª>EAX
CDQ EAX¡ª>(EDX £¬ EAX) ·ûºÅÀ©Õ¹Ö¸ÁîMOVSX
¸ñʽ£ºMOVSX DST £¬ SRC
¹¦ÄÜ£º½«·ûºÅλ½øÐÐÀ©Õ¹£¬²¢´æ·ÅÓÚÓëDSTÖÐ MOVSX reg16 ,reg8/mem8
MOVSX reg32 ,reg8/mem8/reg16/mem16
¹²·ÖÏí92ƪÏà¹ØÎĵµ