µÚ4Õ ָÁîϵͳ£¨¶þ£© - ͼÎÄ ÏÂÔØ±¾ÎÄ

ËÄ´¨¾¯°²Ö°ÒµÑ§Ôº±ê×¼½Ì°¸Ö½

¿Î³ÌÃû³Æ ÊÚ¿Îʱ¼ä ½ÌѧĿ±ê ½ÌÑ§ÖØµã ½ÌѧÄѵ㠽ÌѧʱÊý ½ÌѧÄÚÈÝ£º µÚ4Õ 8086/8088Ѱַ·½Ê½¼°Ö¸Áîϵͳ£¨¶þ£© ¼ÆËã»ú×é³ÉÔ­Àí£¨µÚ¶þÊ®°Ë½²£© ÈονÌʦ ³Â ƽ µØµã ¶àýÌå Êڿΰ༶ ÈËÊý 1. ÕÆÎÕ¿ç¶Î֪ʶ 2. ÕÆÎÕ8086/8088Ö¸Áîϵͳ 1. ¿ç¶ÎÓ¦Óà 2. 8086/8088Ö¸Áîϵͳ 1. Êý¾Ý´«ËÍÖ¸Áî 2. ³Ë·¨Ö¸Áî 3. ¿ØÖÆ×ªÒÆÖ¸Áî ½²ÊÚ·¨¡¢ÑÝʾ·¨¡¢Êµ¼ù²Ù½ÌѧÊÖ2½Ú ½Ìѧ·½·¨ ¶àýÌå½Ìѧ ×÷·¨ ¶Î 4.2 ¿ç¶Î¼°Ñ°Ö·×ۺϾÙÀý 4.2.1 ¿ç¶ÎµÄÓйØÎÊÌâ 8086µÄ´æ´¢Æ÷ÊÇ·Ö¶ÎʹÓõģ¬Í¨³££¬ÈôÑ¡ÓüĴæÆ÷(ÄÜÑ¡ÓõļĴæÆ÷ÓÐBX¡¢BP¡¢SIºÍDI)×÷¼äÖ·¼Ä´æÆ÷¡¢±äÖ·¼Ä´æÆ÷»ò»ùÖ·¼Ä´æÆ÷£¬¼´ÔÚ²ÉÓüĴæÆ÷¼ä½ÓѰַ¡¢±äַѰַ»ò»ùÖ·¼Ó±äַѰַʱ£¬Ö»ÓÐBP³öÏÖÔÚ·½À¨ºÅÖ®ÄÚ£¬Ôò²Ù×÷ÊýÔÚµ±Ç°¶ÑÕ»¶Î£¬´Ëʱ£¬²Ù×÷ÊýµÄÎïÀíµØÖ·PAÓɶÑÕ»¶Î¼Ä´æÆ÷SSµÄÄÚÈÝ×óÒÆ4λÓëÆ«ÒÆµØÖ·EAÏà¼Ó£»·ñÔò£¬²Ù×÷ÊýÔÚµ±Ç°Êý¾Ý¶Î£¬´Ëʱ£¬²Ù×÷ÊýµÄÎïÀíµØÖ·PAÓÉÊý¾Ý¶Î¼Ä´æÆ÷DSµÄÄÚÈÝ×óÒÆ4λÓëÆ«ÒÆµØÖ·EAÏà¼ÓÐγɡ£ÕâÊÇ8086µÄ¾ßÌåÔ¼¶¨¡¢¼´Ä¬ÈÏ״̬¡£µ±Òª·ñ¶¨Ä¬ÈÏ״̬£¬µ½·ÇÔ¼¶¨¶ÎѰַ²Ù×÷Êýʱ£¬±ØÐëÓÿç¶Îǰ׺ָÃ÷²Ù×÷ÊýËùÔڶεĶμĴæÆ÷Ãû¡£ »ã±à¸ñʽ£º¶Î¼Ä´æÆ÷Ãû£º ¹¦ÄÜ£ºÃ°ºÅ¡°£º¡±Ö®Ç°µÄ¶Î¼Ä´æÆ÷Ö¸Ã÷Á˲Ù×÷ÊýËùÔڶΡ£ Àý4.2.1: ÓÐÖ¸ÁîÈçÏ£º (1) MOV AX, DS: [BP] (2) MOV BX, ES: [BX] (3) MOV CX, SS: [SI] (4) MOV DX, SS: [DI] Ôò£¬ËüÃÇËù¶ÔÓ¦µÄÎïÀíµØÖ·Îª£º (1) PA=16D*(DS)+(BP) (2) PA=16D*(ES)+(BX) (3) PA=16D*(SS)+(SI) (4) PA=16D*(SS)+(DI) ÈçûÓжÎǰ׺(DS:¡¢ES:¡¢SS:)£¬ÔòËüÃÇËù¶ÔÓ¦µÄĬÈϵÄÎïÀíµØÖ·Îª£º (1) PA=16D*(SS)+(BP) (2) PA=16D*(DS)+(BX) (3) PA=16D*(DS)+(SI) (4) PA=16D*(DS)+(DI) ×îºóÐèҪ˵Ã÷µÄÊÇ£ºÎÞÂÛÊǶÎĬÈÏ״̬£¬»¹ÊÇ¿ç¶ÎÇé¿ö£¬²Ù×÷ÊýµÄÎïÀíµØÖ·PA¾ùÓÉϵͳ×Ô¶¯¼ÆËã¡£ËùÒÔ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬µ±Òª·ÃÎÊij¶ÎÖ®ÖÐijһ´æ´¢µ¥ÔªÊ±£¬×ÅÖØ¿¼ÂǵIJ»ÊÇÆäÎïÀíµØÖ·µÄ¼ÆËã·½·¨¼°½á¹û£¬¶øÊÇÆäÀàÐͼ°Æ«ÒƵØÖ·µÄ±íʾÐÎʽ¡£Òò´Ë£¬´Ó±¾ÕÂÖ®ºó£¬ÎÒÃÇ̸µ½µÄ´æ´¢µ¥ÔªµØÖ·¾ùÊÇÖ¸Æ«ÒÆµØÖ·¡£ 4.2.2 ѰַµÄ×ۺϾÙÀý Àý4.2.2£ºÇë»Ø´ðÈçϳÌÐòÖ´Ðе½EXITʱ£¬×Ö½Úµ¥ÔªA¡¢B¡¢C¡¢C+1¡¢C+2ÖеÄÄÚÈݸ÷ÊÇʲô£¿ STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS 1 DATA SEGMENT A DB 0 B DB 0 C DB 30,40,50 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX MOV AL,C MOV A, AL MOV AL,C+1 MOV AL, C+2 MOV B, AL ADD C, 10 ADD C+1,20 ADD C+2,30 EXIT :MOV AH, 4CH INT 21H CODE ENDS END START ˵Ã÷£ºDBΪÊý¾Ý¶¨ÒåαָÁî¡£ÆäʹÓøñʽΪ£º [±äÁ¿Ãû] DB ±í´ïʽ [?] ¹¦ÄÜ£º¶¨ÒåÒ»¸öÒÔ±äÁ¿ÃûΪÊ×µØÖ·µÄ×Ö½ÚÊý¾Ý´æ´¢Çø£¬Ëùº¬Êý¾Ý´æ´¢µ¥ÔªµÄ¸öÊýÓÉÆäºó±í´ïʽµÄ¸öÊý¾ö¶¨£¬²¢Îª¸÷Êý¾Ý´æ´¢µ¥ÔªÌṩһ¸öÓÉÆä¶ÔÓ¦±í´ïʽµÃ³öµÄ³õÖµ¡£ ͼ4-10 Êý¾Ý¶ÎÖеÄÊý¾Ý ͼ4-11 ³ÌÐòÔËÐе½EXITʱ£¬ÔË Ðнá¹û ÔÚÖ÷´æÖеĴæ·ÅÐÎʽʾÒâͼ ÔÚÖ÷´æÖеĴæ·ÅÐÎʽʾÒâͼ ÔÚ±¾³ÌÐòÊý¾Ý¶ÎÖУ¬Èý´ÎÀûÓÃαָÁîDB¶¨ÒåÁËÈý¸ö×Ö½ÚÊý¾Ý´æ´¢Çø£¬µÚÒ»¸öÊ×µØÖ·Îª±äÁ¿A£¬ËüÖ»°üº¬Ò»¸ö×Ö½Úµ¥Ôª£¬³õֵΪ0£»µÚ¶þ¸öÊ×µØÖ·Îª±äÁ¿B£¬ËüÖ»°üº¬Ò»¸ö³õֵΪ0µÄ×Ö½Úµ¥Ôª£»µÚÈý¸öÊ×µØÖ·Îª±äÁ¿C£¬°üº¬Èý¸ö×Ö½Úµ¥Ôª£¬Æä³õÖµ·Ö±ðΪ30¡¢40¡¢50¡£ËüÃÇÔÚÖ÷´æÖдæ·ÅµÄÐÎʽÈçͼ4-10Ëùʾ¡£µ±³ÌÐò´ÓSTARTÖ´Ðе½EXITʱ£¬¸÷×Ö½Ú±äÁ¿µÄÄÚÈݺʹæ·ÅÐÎʽÈçͼ4-11Ëùʾ¡£

2

¼´(A)=70£¬(B)=90£¬(C)=40£¬(C+1)=60£¬(C+2)=80 4.3 8086/8088Ö¸Áîϵͳ 4.3.1 Êý¾Ý´«ËÍÖ¸Áî ÎÒÃÇÒѾ­ÖªµÀ¼ÆËã»úÊÇͨ¹ýÖ´ÐÐÖ¸ÁîÐòÁÐÀ´½â¾öÎÊÌâµÄ£¬Òò¶øÃ¿ÖÖ¼ÆËã»ú¶¼ÓÐÒ»×éÖ¸ÁÌṩ¸øÓû§Ê¹Óã¬Õâ×éÖ¸Á¾Í³ÆÎª¼ÆËã»úµÄÖ¸Áîϵͳ¡£Ä¿Ç°£¬Ò»°ãСÐÍ»ò΢ÐͼÆËã»úµÄÖ¸Áîϵͳ¿ÉÒÔ°üÀ¨¼¸Ê®ÖÖ»ò°ÙÓàÖÖÖ¸Áî¡£ ÎÒÃÇÒѾ­ÖªµÀ£¬¼ÆËã»úÖ»ÄÜʶ±ð¶þ½øÖÆ´úÂ룬ËùÒÔ»úÆ÷Ö¸ÁîÊÇÓɶþ½øÖÆ´úÂë×é³ÉµÄ¡£Îª±ãÓÚÈËÃÇʹÓöø²ÉÓûã±àÓïÑÔÀ´±àд³ÌÐò¡£»ã±àÓïÑÔÊÇÒ»ÖÖ·ûºÅÓïÑÔ£¬ËüµÄÖú¼Ç·ûÀ´±íʾ²Ù×÷Â룬Ó÷ûºÅ»ò·ûºÅµØÖ·À´±íʾ²Ù×÷Êý»ò²Ù×÷ÊýµØÖ·£¬ËüÓë»úÆ÷ÓïÑÔÊÇÒ»Ò»¶ÔÓ¦µÄ¡£ 8086µÄÖ¸Áîϵͳ¿ÉÒÔ·ÖΪ6×飺(1) Êý¾Ý´«ËÍÖ¸Á(2) ´®´¦ÀíÖ¸Á(3) ËãÊõÖ¸Á(4) ¿ØÖÆ×ªÒÆÖ¸Á(5) Âß¼­Ö¸Á(6)´¦Àí»ú¿ØÖÆÖ¸Áî¡£ÏÂÃæ·Ö±ð¼ÓÒÔ˵Ã÷¡£ Êý¾Ý´«ËÍÖ¸ÁÔð°ÑÊý¾Ý¡¢µØÖ·»òÁ¢¼´Êý´«Ë͵½¼Ä´æÆ÷»ò´æ´¢µ¥ÔªÖС£Ëü¿ÉÒÔ·ÖΪËÄÖÖ£¬·Ö±ð˵Ã÷ÈçÏ£º 1.ͨÓÃÊý¾Ý´«ËÍÖ¸Áî (1) MOV (Move)´«ËÍÖ¸Áî ¸ñʽΪ£ºMOV DST£¬SRC Ö´ÐвÙ×÷£º(DST) (SRC) ÆäÖÐDST±íʾĿµÄ²Ù×÷Êý£¬SRC±íʾԴ²Ù×÷Êý¡£ MOVÖ¸ÁîµÄ»úÆ÷ÓïÑÔ¿ÉÒÔÓÐÈçÏÂ7ÖÖ¸ñʽ£º 1) MOV mem/reg1,mem/reg2 µ±È»£¬Ë«²Ù×÷ÊýÖ¸Áî²»ÔÊÐíÁ½¸ö²Ù×÷Êý¶àʹÓüĴæÆ÷£¬Òò¶øÁ½¸ö²Ù×÷ÊýÖбØÐëÓÐÒ»¸öÊǼĴæÆ÷¡£ÕâÖÖ·½Ê½²»ÔÊÐíÖ¸¶¨¶Î¼Ä´æÆ÷¡£ 2) MOV reg, data µ±È»£¬ÕâÖÖ·½Ê½Ò²²»ÔÊÐíÖ¸¶¨¶Î¼Ä´æÆ÷¡£ 3) MOV ac, mem ÆäÖÐacΪÀÛ¼ÓÆ÷£¬D¸ø³ö´æ´¢µ¥ÔªµÄÆ«ÒÆµØÖ·¡£ 4) MOV mem, ac 5) MOV segreg, mem/reg ÆäÖÐregÖ¸¶¨¶Î¼Ä´æÆ÷£¬µ«²»ÔÊÐíʹÓÃCS¼Ä´æÆ÷¡£´ËÍ⣬ÕâÌõÖ¸ÁîÖ´ÐÐÍêºó²»Ó°ÏìÖжϣ¬ÒªµÈÏÂÒ»ÌõÖ¸ÁîÖ´ÐÐÍêºó²Å¿ÉÄÜÏìÓ¦Öжϡ£ 6) MOV mem/reg, segreg 7) MOV mem/reg, data ÕâÖÖ·½Ê½µÄÄ¿µÄ²Ù×÷ÊýÖ»Óô洢Æ÷Ѱַ·½Ê½¶ø²»ÓüĴæÆ÷·½Ê½¡£ ÒÔÉÏÆßÖÖ·½Ê½ËµÃ÷MOVÃüÁî¿ÉÒÔÔÚCPUºÍ´æ´¢Æ÷Ö®¼ä´«ËÍ×Ö»ò×Ö½Ú£¬Ëü´«Ë͵ÄÐÅÏ¢¿ÉÒԴӼĴæÆ÷µ½¼Ä´æÆ÷£¬Á¢¼´Êýµ½¼Ä´æÆ÷£¬Á¢¼´Êýµ½´æ´¢µ¥Ôª£¬´Ó´æ´¢µ¥Ôªµ½¼Ä´æÆ÷£¬´Ó¼Ä´æÆ÷µ½´æ´¢µ¥Ôª£¬´Ó¼Ä´æÆ÷»ò´æ´¢µ¥Ôªµ½³ýCSÍâµÄ¶Î¼Ä´æÆ÷(×¢Ò⣬Á¢¼´Êý²»ÄÜÖ±½ÓËͶμĴæÆ÷)£¬´Ó¶Î¼Ä´æÆ÷µ½¼Ä´æÆ÷»ò´æ´¢µ¥Ôª¡£µ«ÊÇMOVÖ¸ÁîµÄÄ¿µÄ²Ù×÷Êý²»ÔÊÐíÓÃÁ¢¼´Êý·½Ê½£¬Ò²²»ÔÊÐíÓÃCS¼Ä´æÆ÷£¬¶øÇÒ³ýÔ´²Ù×÷ÊýΪÁ¢¼´ÊýµÄÇé¿öÍ⣬Á½¸ö²Ù×÷ÊýÖбØÐëÓÐÒ»¸öÊǼĴæÆ÷¡£Ò²¾ÍÊÇ˵£¬²»ÔÊÐíÓÃMOVÖ¸ÁîÔÚÁ½¸ö´æ´¢µ¥ÔªÖ®¼äÖ±½Ó´«ËÍÊý¾Ý¡£´ËÍ⣬Ҳ²»ÔÊÐíÔÚÁ½¸ö¶Î¼Ä´æÆ÷Ö®¼äÖ±½Ó´«ËÍÐÅÏ¢¡£»¹Ó¦¸Ã×¢ÒâµÄÊÇMOVÖ¸Áî²»Ó°Ïì±ê־λ¡£ (2) PUSH(Pop onto the stack)½øÕ»Ö¸Áî ¸ñʽΪ£º PUSH SRC Ö´ÐвÙ×÷£º(SP)<-- (SP) - 2

3

((SP)+1£¬(SP))<-- (SRC) (3) POP(Pop from the stack)³öÕ»Ö¸Áî ¸ñʽΪ£º POP DST Ö´ÐвÙ×÷£º(DST)<-- ((SP) + 1£¬(SP)) (SP) <-- (SP) + 2 ÕâÁ½Ìõ¶ÑÕ»µÄ½øÕ»ºÍ³öÕ»Ö¸Áî¡£¶ÑÕ»ÊÇÒÔ¡°ºó½øÏȳö¡±·½Ê½¹¤×÷µÄÒ»¸ö´æ´¢Çø£¬Ëü±ØÐë´æÔÚÓÚ¶ÑÕ»¶ÎÖУ¬Òò¶ø´Ë¶ÎµØÖ·´æ·ÅÓÚSS¼Ä´æÆ÷ÖС£ËüÖ»ÓÐÒ»¸ö³öÈë¿Ú£¬ËùÒÔÖ»ÓÐÒ»¸ö¶ÑÕ»Ö¸Õë¼Ä´æÆ÷SP£¬SPµÄÄÚÈÝÔÚÈκÎʱºò¶¼Ö¸Ïòµ±Ç°µÄÕ»¶¥£¬ËùÒÔPUSHºÍPOPÖ¸Áî¶¼±ØÐë¸ù¾Ýµ±Ç°SPµÄÄÚÈÝÀ´È·¶¨½øÕ»»òÊdzöÕ»µÄ´æ´¢µ¥Ôª£¬¶øÇÒ±ØÐ뼰ʱÐÞ¸ÄÖ¸Õ룬ÒÔ±£Ö¤(SP)Ö¸Ïòµ±Ç°µÄÕ»¶¥¡£ ¶ÑÕ»µÄ´æÈ¡±ØÐëÒÔ×ÖΪµ¥Î»£¬ËùÒÔPUSHºÍPOPÖ¸ÁîÖ»ÄÜ×÷×Ö²Ù×÷¡£ËüÃÇ¿ÉÒÔʹÓóýÁ¢¼´ÊýÒÔÍâµÄÆäËûѰַ·½Ê½¡£Ö¸ÁîÒ²¿ÉÒÔÖ¸¶¨¶Î¼Ä´æÆ÷×÷Ϊ²Ù×÷Êý£¬µ«POPÖ¸Áî²»ÔÊÐíÓÃCS¼Ä´æÆ÷¡£ÕâÁ½Ìõ¶ÑÕ»Ö¸Áî²»Ó°Ïì±ê־λ¡£ Àý 4.3.3: PUSH AX ¶ÑÕ»ÔÚ¼ÆËã»ú¹¤×÷ÖÐÆð×ÅÖØÒªµÄ×÷Óã¬Èç¹ûÔÚ³ÌÐòÖÐÒªÓõ½Ä³Ð©¼Ä´æÆ÷£¬µ«ËüµÄÄÚÈÝÈ´ÔÚ½«À´»¹ÓÐÓã¬Õâʱ¾Í¿ÉÒÔÓöÑÕ»°ÑËüÃDZ£ÏÂÀ´£¬È»ºóµ½±ØÒªÊ±ÔÙ»Ö¸´ÆäÔ­À´µÄÄÚÈÝ¡£ÀýÈ磺 PUSH AX PUSH BX ? Æä¼ä³ÌÐòÓõ½AXºÍBX¼Ä´æÆ÷ ? POP BX POP AX ¶ÑÕ»ÔÚ×Ó³ÌÐò½á¹¹µÄ³ÌÐò¼°ÖжϳÌÐòÖÐÒ²ºÜÓÐÓã¬Õ⽫ÔÚÒÔºó¼ÓÒÔ˵Ã÷¡£ (4) XCHG(Exchange) ½»»»Ö¸Áî ¸ñʽΪ: XCHG OPR1£¬OPR2 Ö´ÐвÙ×÷£º(OPR1)<--> (OPR2) ÆäÖÐOPR±íʾ²Ù×÷Êý¡£¸ÃÖ¸ÁîµÄÁ½¸ö²Ù×÷ÊýÖбØÐëÓÐÒ»¸öÔڼĴæÆ÷ÖУ¬Òò¶øËü¿ÉÒÔÔڼĴæÆ÷Ö®¼ä»òÕßÔڼĴæÆ÷ºÍ´æ´¢Æ÷Ö®¼ä½»»»ÐÅÏ¢£¬µ«²»ÔÊÐíʹÓöμĴæÆ÷¡£Ö¸ÁîÔÊÐí×Ö»ò×Ö½Ú²Ù×÷£¬ÇÒ²»Ó°Ïì±ê־λ¡£ 2.ÀÛ¼ÓÆ÷רÓô«ËÍÖ¸Áî Õâ×éÖ¸ÁîÖ»ÏÞÓÚʹÓÃÀÛ¼ÓÆ÷AX»òAL´«ËÍÐÅÏ¢£¬²»Ó°Ïì±ê־λ¡£ (1) IN(Input)ÊäÈëÖ¸Áî ³¤¸ñʽΪ£º IN AL£¬PORT (×Ö½Ú²Ù×÷) IN AX£¬PORT (×Ö²Ù×÷) Ö´ÐеIJÙ×÷£º(AL)<-- (PORT) (×Ö½Ú²Ù×÷) (AX)<-- (PORT+1£¬PORT) (×Ö²Ù×÷) ¶Ì¸ñʽΪ£º IN AL£¬DX (×Ö½Ú²Ù×÷) IN AX£¬DX (×Ö²Ù×÷) Ö´ÐеIJÙ×÷£º(AL)<-- ((DX)) (×Ö½Ú²Ù×÷) (AX)<-- ((DX)+1£¬(DX)) (×Ö²Ù×÷) (2)OUT(Output)Êä³öÖ¸Áî ³¤¸ñʽΪ£º OUT PORT£¬AL (×Ö½Ú²Ù×÷) OUT PORT£¬AX (×Ö²Ù×÷)

4