΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
µÚÈýÕ 8086Ö¸Áîϵͳ
˵Ã÷£º8086Ö¸ÁîϵͳÕâÕÂÎªÖØµãÕ½ڣ¬¶ÔÏÂÃæÁгöµÄÖ¸Áî¶¼ÒªÇóÕÆÎÕ¡£
µÚÒ»½Ú 8086Ѱַ·½Ê½
Ò»¡¢Êý¾ÝѰַ·½Ê½£¨Öصã?£© 1¡¢Á¢¼´Ñ°Ö·
²Ù×÷Êý(Ϊһ³£Êý)Ö±½ÓÓÉÖ¸Áî¸ø³ö (´Ë²Ù×÷Êý³ÆÎªÁ¢¼´Êý) Á¢¼´Ñ°Ö·Ö»ÄÜÓÃÓÚÔ´²Ù×÷Êý Àý£º
MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH ´íÎóÀý£º
¡Á MOV 2A00H,AX ; ´íÎó£¡ Ö¸Áî²Ù×÷Àý£ºMOV AX£¬3102H; AX?3102H
Ö´Ðкó£¬(AH) = 31H£¬(AL) = 02H
2¡¢¼Ä´æÆ÷Ѱַ
£¨1£©²Ù×÷Êý·ÅÔÚij¸ö¼Ä´æÆ÷ÖÐ
£¨2£©Ô´²Ù×÷ÊýÓëÄ¿µÄ²Ù×÷Êý×Ö³¤ÒªÏàͬ £¨3£©¼Ä´æÆ÷ѰַÓë¶ÎµØÖ·ÎÞ¹Ø Àý£º
MOV AX, BX
MOV [3F00H], AX MOV CL, AL ´íÎóÀý£º
¡Á MOV AX,BL ; ×Ö³¤²»Í¬
¡Á MOV ES:AX,DX ; ¼Ä´æÆ÷Óë¶ÎÎÞ¹Ø 3¡¢Ö±½ÓѰַ
£¨1£©Ö¸ÁîÖÐÖ±½Ó¸ø³ö²Ù×÷ÊýµÄ16Î»Æ«ÒÆµØÖ· Æ«ÒÆµØÖ·Ò²³ÆÎªÓÐЧµØÖ·(EA, Effective Address)
£¨2£©Ä¬ÈϵĶμĴæÆ÷ΪDS£¬µ«Ò²¿ÉÒÔÏÔʽµØÖ¸¶¨ÆäËû¶Î¼Ä´æÆ÷¡ª¡ª³ÆÎª¶Î³¬Ô½Ç°×º £¨3£©Æ«ÒƵØÖ·Ò²¿ÉÓ÷ûºÅµØÖ·À´±íʾ£¬ÈçADDR¡¢VAR Àý£º
MOV AX ,[2A00H] MOV DX ,ES:[2A00H] MOV SI,TABLE_PTR
4¡¢¼ä½ÓѰַ
? ²Ù×÷ÊýµÄÆ«ÒÆµØÖ·(ÓÐЧµØÖ·EA)·ÅÔڼĴæÆ÷ÖÐ ? Ö»ÓÐSI¡¢DI¡¢BXºÍBP¿É×÷¼äÖ·¼Ä´æÆ÷
5 / 56
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
? Àý£º MOV AX,[BX]
MOV CL,CS:[DI]
´íÎóÀý £º¡Á MOV AX, [DX]
¡Á MOV CL, [AX]
5¡¢¼Ä´æÆ÷Ïà¶ÔѰַ
?EA=¼äÖ·¼Ä´æÆ÷µÄÄÚÈݼÓÉÏÒ»¸ö8/16λµÄÎ»ÒÆÁ¿ ? Àý£º MOV AX, [BX+8] MOV CX, TABLE[SI]
MOV AX, [BP]; ĬÈ϶μĴæÆ÷ΪSS ? Ö¸Áî²Ù×÷Àý£ºMOV AX£¬DATA[BX]
Èô(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H
ÔòÎïÀíµØÖ· = 60000H + 1000H + 2A00H = 63A00H
Ö¸ÁîÖ´Ðк󣺣¨AX£©=5566H
6¡¢»ùÖ·±äַѰַ
? Èô²Ù×÷ÊýµÄÆ«ÒÆµØÖ·£º
ÓÉ»ùÖ·¼Ä´æÆ÷(BX»òBP)¸ø³ö ¡ª¡ª »ùַѰַ·½Ê½ ÓɱäÖ·¼Ä´æÆ÷(SI»òDI)¸ø³ö ¡ª¡ª ±äַѰַ·½Ê½
ÓÉÒ»¸ö»ùÖ·¼Ä´æÆ÷µÄÄÚÈݺÍÒ»¸ö±äÖ·¼Ä´æÆ÷µÄÄÚÈÝÏà¼Ó¶øÐγɲÙ×÷ÊýµÄÆ«ÒÆµØÖ·£¬³ÆÎª»ùÖ·-±äַѰַ¡£
EA=£¨BX£©+£¨SI£©»ò£¨DI£©£» EA=£¨BP£©+£¨SI£©»ò£¨DI£©
ͬһ×éÄڵļĴæÆ÷²»ÄÜͬʱ³öÏÖ¡£
×¢Ò⣺³ýÁËÓжοçԽǰ׺µÄÇé¿öÍ⣬µ±»ùÖ·¼Ä´æÆ÷ΪBXʱ£¬²Ù×÷ÊýÓ¦¸Ã´æ·ÅÔÚÊý¾Ý¶ÎDSÖУ¬µ±»ùÖ·¼Ä´æÆ÷ΪBPʱ£¬²Ù×÷ÊýÓ¦·ÅÔÚ¶ÑÕ»¶ÎSSÖС£Àý£º MOV AX, [BX] [SI] MOV AX, [BX+SI]
MOV AX, DS: [BP] [DI] ´íÎóÀý£º
¡Á MOV AX, [BX] [BP] ¡Á MOV AX, [DI] [SI]
Ö¸Áî²Ù×÷Àý£ºMOV AX£¬[BX][SI]
¼Ù¶¨£º(DS)=8000H, (BX)=2000H, SI=1000H ÔòÎïÀíµØÖ· = 80000H + 2000H + 1000H = 83000H Ö¸ÁîÖ´Ðкó: (AL)=[83000H]
(AH)=[83001H]
7¡¢Ïà¶Ô»ùÖ·±äַѰַ
? ÔÚ»ùÖ·-±äַѰַµÄ»ù´¡ÉÏÔÙ¼ÓÉÏÒ»¸öÏà¶ÔÎ»ÒÆÁ¿
EA=£¨BX£©+£¨SI£©»ò£¨DI£©+8λ»ò16Î»Î»ÒÆÁ¿£»
6 / 56
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
EA=£¨BP£©+£¨SI£©»ò£¨DI£©+8λ»ò16Î»Î»ÒÆÁ¿
Ö¸Áî²Ù×÷Àý£ºMOV AX£¬DATA[DI][BX]
Èô(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H ÔòÖ¸ÁîÖ´Ðкó(AH)=[83021H], (AL)=[83020H]
¼Ä´æÆ÷¼ä½Ó¡¢¼Ä´æÆ÷Ïà¶Ô¡¢»ùÖ·±äÖ·¡¢Ïà¶Ô»ùÖ·±äÖ·ËÄÖÖѰַ·½Ê½µÄ±È½Ï£º Ѱַ·½Ê½ Ö¸Áî²Ù×÷ÊýÐÎʽ
? ¼Ä´æÆ÷¼ä½Ó Ö»ÓÐÒ»¸ö¼Ä´æÆ÷£¨BX/BP/SI/DIÖ®Ò»£© ? ¼Ä´æÆ÷Ïà¶Ô Ò»¸ö¼Ä´æÆ÷¼ÓÉÏÎ»ÒÆÁ¿ ? »ùÖ·¡ª±äÖ· Á½¸ö²»Í¬Àà±ðµÄ¼Ä´æÆ÷
? Ïà¶Ô»ùÖ·-±äÖ· Á½¸ö²»Í¬Àà±ðµÄ¼Ä´æÆ÷¼ÓÉÏÎ»ÒÆÁ¿
¶þ¡¢µØÖ·Ñ°Ö··½Ê½£¨Á˽âÓÐ4À࣬ÄÜÅжϣ© ¼òÒªÅжÏÒÀ¾Ý£¨Ö¸ÁîÖмäµÄµ¥´Ê£©£º ¶ÎÄÚÖ±½Ó short,near ¶ÎÄÚ¼ä½Ó word ¶Î¼äÖ±½Ó far ¶Î¼ä¼ä½Ó dword
µÚ¶þ½Ú 8086Ö¸Áîϵͳ
Ò»¡¢Êý¾Ý´«ËÍÖ¸Áî£¨ÖØµã?£©
1¡¢Í¨Óô«ËÍÖ¸Áî
(1) MOV dest£¬src£» dest¡ûsrc
´«Ë͵ÄÊÇ×Ö½Ú»¹ÊÇ×ÖÈ¡¾öÓÚÖ¸ÁîÖÐÉæ¼°µÄ¼Ä´æÆ÷ÊÇ8λ»¹ÊÇ16λ¡£ ¾ßÌåÀ´Ëµ¿ÉʵÏÖ£º
¢Ù MOV mem/reg1£¬mem/reg2
Ö¸ÁîÖÐÁ½²Ù×÷ÊýÖÐÖÁÉÙÓÐÒ»¸öΪ¼Ä´æÆ÷ ¢Ú MOV reg£¬data ;Á¢¼´ÊýËͼĴæÆ÷ ¢Û MOV mem£¬data ;Á¢¼´ÊýËÍ´æ´¢µ¥Ôª ¢Ü MOV acc£¬mem ;´æ´¢µ¥ÔªËÍÀÛ¼ÓÆ÷ ¢Ý MOV mem£¬acc ;ÀÛ¼ÓÆ÷ËÍ´æ´¢µ¥Ôª
¢Þ MOV segreg£¬mem/reg ;´æ´¢µ¥Ôª/¼Ä´æÆ÷ËͶμĴæÆ÷ ¢ß MOV mem/reg£¬segreg ;¶Î¼Ä´æÆ÷ËÍ´æ´¢µ¥Ôª/¼Ä´æÆ÷
MOVÖ¸ÁîµÄʹÓùæÔò ¢ÙIP²»ÄÜ×÷Ä¿µÄ¼Ä´æÆ÷ ¢Ú²»ÔÊÐímem¡ûmem ¢Û²»ÔÊÐísegreg¡ûsegreg
¢ÜÁ¢¼´Êý²»ÔÊÐí×÷ΪĿµÄ²Ù×÷Êý ¢Ý²»ÔÊÐísegreg¡ûÁ¢¼´Êý
¢ÞÔ´²Ù×÷ÊýÓëÄ¿µÄ²Ù×÷ÊýÀàÐÍÒªÒ»ÖÂ
¢ßµ±Ô´²Ù×÷ÊýΪµ¥×Ö½ÚµÄÁ¢¼´Êý£¬¶øÄ¿µÄ²Ù×÷ÊýΪ¼äÖ·¡¢±äÖ·¡¢»ùÖ·+±äÖ·µÄÄÚ´æÊýʱ£¬±Ø
7 / 56
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
ÐëÓÃPTR˵Ã÷Êý¾ÝÀàÐÍ¡£È磺MOV [BX]£¬12H ÊÇ´íÎóµÄ¡£
£¨2£©¡¢¶ÑÕ»Ö¸Áî ʲôÊǶÑÕ»£¿
°´¡°ºó½øÏȳö(LIFO)¡±·½Ê½¹¤×÷µÄ´æ´¢ÇøÓò¡£¶ÑÕ»ÒÔ×ÖΪµ¥Î»½øÐÐѹÈ뵯³ö²Ù×÷¡£
¹æ¶¨ÓÉSSָʾ¶ÑÕ»¶ÎµÄ¶Î»ùÖ·£¬¶ÑÕ»Ö¸ÕëSPʼÖÕÖ¸Ïò¶ÑÕ»µÄ¶¥²¿£¬SPµÄ³õÖµ¹æ¶¨ÁËËùÓöÑÕ»ÇøµÄ´óС¡£¶ÑÕ»µÄ×î¸ßµØÖ·½ÐÕ»µ×¡£
¢Ù ѹջָÁîPUSH
PUSH src ; srcΪ16λ²Ù×÷Êý
Àý£ºPUSH AX £»½«AXÄÚÈÝѹջ Ö´ÐвÙ×÷£º£¨SP£©-1¡û¸ß×Ö½ÚAH
£¨SP£©-2¡ûµÍ×Ö½ÚAL (SP)¡û£¨SP£©- 2
×¢Òâ½øÕ»·½ÏòÊǸߵØÖ·ÏòµÍµØÖ··¢Õ¹¡£`
¢Ú µ¯³öÖ¸ÁîPOP POP dest
Àý£ºPOP BX £»½«Õ»¶¥ÄÚÈݵ¯ÖÁBX
Ö´ÐвÙ×÷£º£¨BL£©¡û£¨SP£© £¨BH£©¡û£¨SP£©+1 £¨SP£©¡û£¨SP£©+2
¶ÑÕ»Ö¸ÁîÔÚʹÓÃʱÐè×¢ÒâµÄ¼¸µã£º ¢Ù ¶ÑÕ»²Ù×÷×ÜÊǰ´×Ö½øÐÐ
¢Ú ²»ÄÜ´ÓÕ»¶¥µ¯³öÒ»¸ö×Ö¸øCS
¢Û ¶ÑÕ»Ö¸ÕëΪSS:SP£¬SPÓÀÔ¶Ö¸ÏòÕ»¶¥ ¢ÜSP×Ô¶¯½øÐÐÔö¼õÁ¿£¨-2£¬+2£©
£¨3£©¡¢½»»»Ö¸ÁîXCHG
¸ñʽ£ºXCHG reg£¬mem/reg ¹¦ÄÜ£º½»»»Á½²Ù×÷ÊýµÄÄÚÈÝ¡£
ÒªÇó£ºÁ½²Ù×÷ÊýÖбØÐëÓÐÒ»¸öÔڼĴæÆ÷ÖУ» ²Ù×÷Êý²»ÄÜΪ¶Î¼Ä´æÆ÷ºÍÁ¢¼´Êý£» Ô´ºÍÄ¿µØ²Ù×÷ÊýÀàÐÍÒªÒ»Ö¡£ ¾ÙÀý£º XCHG AX£¬BX
XCHG [2000]£¬CL
£¨4£©²é±íÖ¸ÁîXLAT
Ö´ÐеIJÙ×÷£ºAL¡û[(BX)+(AL)] Óֽвé±íת»»Ö¸ÁËü¿É¸ù¾Ý±íÏîÐòºÅ²é³ö±íÖжÔÓ¦´úÂëµÄÄÚÈÝ¡£Ö´ÐÐʱÏȽ«±íµÄÊ×µØÖ·
8 / 56