΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
£¨Æ«ÒƵØÖ·£©Ë͵½BXÖУ¬±íÏîÐòºÅ´æÓÚALÖС£
2¡¢ÊäÈëÊä³öÖ¸Áî
Ö»ÏÞÓÚÓÃÀÛ¼ÓÆ÷AL»òAXÀ´´«ËÍÐÅÏ¢¡£ ¹¦ÄÜ: (ÀÛ¼ÓÆ÷)¡û¡úI/O¶Ë¿Ú £¨1£© ÊäÈëÖ¸ÁîIN ¸ñʽ:
IN acc,PORT ;PORT¶Ë¿ÚºÅ0¡«255H
IN acc,DX ;DX±íʾµÄ¶Ë¿Ú·¶Î§´ï64K Àý:IN AL£¬80H ;(AL)¡û(80H¶Ë¿Ú) IN AL£¬DX ;(AL)¡û((DX))
(2) Êä³öÖ¸ÁîOUT ¸ñʽ£ºOUT port,acc
OUT DX,acc
Àý£ºOUT 68H£¬AX ;(69H£¬68H)¡û£¨AX£©
OUT DX£¬AL ;((DX))¡û(AL)
ÔÚʹÓüä½ÓѰַµÄIN/OUTÖ¸Áîʱ£¬ÒªÊÂÏÈÓô«ËÍÖ¸Áî°ÑI/O¶Ë¿ÚºÅÉèÖõ½DX¼Ä´æÆ÷ È磺
MOV DX£¬220H
IN AL£¬DX;½«220H¶Ë¿ÚÄÚÈݶÁÈëAL
3¡¢Ä¿±êµØÖ·´«ËÍÖ¸Áî
£¨1£© LEA
´«ËÍÆ«ÒƵØÖ·
¸ñʽ£ºLEA reg£¬mem ; ½«Ö¸¶¨ÄÚ´æµ¥ÔªµÄÆ«ÒÆµØÖ·Ë͵½Ö¸¶¨¼Ä´æÆ÷ ÒªÇó£º
1) Ô´²Ù×÷Êý±ØÐëÊÇÒ»¸ö´æ´¢Æ÷²Ù×÷Êý£»
2) Ä¿µÄ²Ù×÷Êý±ØÐëÊÇÒ»¸ö16λµÄͨÓüĴæÆ÷¡£
Àý£ºLEA BX£¬[SI+10H] É裺£¨SI£©=1000H
ÔòÖ´ÐиÃÖ¸Áîºó£¬£¨BX£©=1010H
?
?×¢ÒâÒÔ϶þÌõÖ¸Áî²î±ð£º LEA BX£¬BUFFER MOV BX£¬BUFFER
ǰÕß±íʾ½«·ûºÅµØÖ·ÎªBUFFERµÄ´æ´¢µ¥ÔªµÄÆ«ÒÆµØÖ·È¡µ½ BXÖÐ;ºóÕß±íʾ½«BUFFER´æ´¢µ¥ÔªÖеÄÄÚÈÝÈ¡µ½ BXÖС£
ÏÂÃæÁ½ÌõÖ¸ÁîµÈЧ£º LEA BX£¬BUFFER
MOV BX, OFFSET BUFFER
9 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
ÆäÖÐOFFSET BUFFER±íʾ´æ´¢Æ÷µ¥ÔªBUFFERµÄÆ«ÒÆµØÖ·¡£
¶þÕß¶¼¿ÉÓÃÓÚÈ¡´æ´¢Æ÷µ¥ÔªµÄÆ«ÒÆµØÖ·£¬µ«LEAÖ¸Áî¿ÉÒÔÈ¡¶¯Ì¬µÄµØÖ·£¬OFFSETÖ»ÄÜÈ¡¾²Ì¬µÄµØÖ·¡£
¶þ¡¢ËãÊõÔËËãÖ¸Áî 1¡¢ ¼Ó·¨Ö¸Áî
(1) ²»´ø½øÎ»µÄ¼Ó·¨Ö¸ÁîADD ¸ñʽ£º ADD acc,data
ADD mem/reg,data ADD mem/reg1,mem/reg2 ʵÀý£º
ADD AL£¬30H ADD SI£¬[BX+20H] ADD CX£¬SI ADD [DI]£¬200H
?ADDÖ¸Áî¶Ô6¸ö״̬±êÖ¾¾ù²úÉúÓ°Ïì¡£ Àý£ºÒÑÖª(BX)=D75FH
Ö¸Áî ADD BX,8046H Ö´Ðкó£¬×´Ì¬±êÖ¾¸÷ÊǶàÉÙ£¿
D75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110
1 1 11 11 0110 0111 1010 0101
½á¹û£ºC=1, Z=0, P=0, A=1, O=1, S=0
ÅжÏÒç³öÓë½øÎ»£¨Öصã?£©
´ÓÓ²¼þµÄ½Ç¶È£ºÄ¬ÈϲÎÓëÔËËãµÄ²Ù×÷Êý¶¼ÊÇÓзûºÅÊý£¬µ±Á½ÊýµÄ·ûºÅλÏàͬ£¬¶øºÍµÄ½á¹ûÏàÒìʱÓÐÒç³ö£¬ÔòOF=1£¬·ñÔòOF=0
£¨2£© ´ø½øÎ»µÄ¼Ó·¨ADC
ADCÖ¸ÁîÔÚÐÎʽÉϺ͹¦ÄÜÉÏÓëADDÀàËÆ£¬Ö»ÊÇÏà¼Óʱ»¹Òª°üÀ¨½øÎ»±êÖ¾CFµÄÄÚÈÝ£¬ÀýÈ磺 ADC AL£¬68H ; AL¡û(AL)+68H+(CF) ADC AX£¬CX ;AX¡û(AX)+(CX)+(CF)
ADC BX£¬[DI] ;BX¡û(BX)+[DI+1][DI]+(CF)
£¨3£©¼Ó1Ö¸ÁîINC ¸ñʽ£ºINC reg/mem
¹¦ÄÜ£ºÀàËÆÓÚCÓïÑÔÖеÄ++²Ù×÷£º¶ÔÖ¸¶¨µÄ²Ù×÷Êý¼Ó1 Àý£º INC AL
INC SI
INC BYTE PTR[BX+4]
×¢£º±¾Ö¸Áî²»Ó°ÏìCF±êÖ¾¡£
10 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
£¨4£©·ÇѹËõBCDÂë¼Ó·¨µ÷ÕûÖ¸ÁîAAA AAAÖ¸ÁîµÄ²Ù×÷£º
Èç¹ûALµÄµÍ4λ£¾9»òAF=1£¬Ôò£º ¢Ù AL¡û(AL)+6,(AH)¡û(AH)+1,AF¡û1 ¢Ú AL¸ß4λÇåÁã ¢Û CF¡ûAF
·ñÔòAL¸ß4λÇåÁã
£¨5£©Ñ¹ËõBCDÂë¼Ó·¨µ÷ÕûÖ¸ÁîDAA
?Á½¸öѹËõBCDÂëÏà¼Ó½á¹ûÔÚALÖУ¬Í¨¹ýDAAµ÷ÕûµÃµ½Ò»¸öÕýÈ·µÄѹËõBCDÂë. ?Ö¸Áî²Ù×÷(µ÷Õû·½·¨)£º
ÈôALµÄµÍ4λ£¾9»òAF=1 Ôò(AL)¡û(AL)+6£¬AF¡û1 ÈôALµÄ¸ß4λ£¾9»òCF=1 Ôò(AL)¡û(AL)+60H£¬CF¡û1
?³ýOFÍ⣬DAAÖ¸ÁîÓ°ÏìËùÓÐÆäËü±êÖ¾¡£ ?DAAÖ¸ÁîÓ¦½ô¸úÔÚADD»òADCÖ¸ÁîÖ®ºó¡£
2¡¢ ¼õ·¨Ö¸Áî
£¨1£©²»¿¼ÂǽèλµÄ¼õ·¨Ö¸ÁîSUB ¸ñʽ£º SUB dest, src ²Ù×÷£º dest¡û(dest)-(src)
×¢£º1.Ô´ºÍÄ¿µÄ²Ù×÷Êý²»ÄÜͬʱΪ´æ´¢Æ÷²Ù×÷Êý 2.Á¢¼´Êý²»ÄÜ×÷ΪĿµÄ²Ù×÷Êý Ö¸ÁîÀý×Ó£º SUB AL£¬60H
SUB [BX+20H]£¬DX SUB AX£¬CX
£¨2£©¿¼ÂǽèλµÄ¼õ·¨Ö¸ÁîSBB
SBBÖ¸ÁîÖ÷ÒªÓÃÓÚ¶à×ֽڵļõ·¨¡£ ¸ñʽ£º SBB dest, src
²Ù×÷£º dest¡û(dest)-(src)-(CF) Ö¸ÁîÀý×Ó£º
SBB AX£¬CX
SBB WORD PTR[SI]£¬2080H SBB [SI],DX
£¨3£©¼õ1Ö¸ÁîDEC
×÷ÓÃÀàËÆÓÚCÓïÑÔÖеġ±££¡±²Ù×÷·û¡£ ¸ñʽ£ºDEC opr ²Ù×÷£ºopr¡û(opr)-1 Ö¸ÁîÀý×Ó£º
DEC CL
11 / 54
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ
DEC BYTE PTR[DI+2] DEC SI
£¨4£©Çó²¹Ö¸ÁîNEG
¸ñʽ£º NEG opr ²Ù×÷£º opr¡û 0-(opr)
¶ÔÒ»¸ö²Ù×÷ÊýÈ¡²¹ÂëÏ൱ÓÚÓÃ0¼õÈ¥´Ë²Ù×÷Êý£¬¹ÊÀûÓÃNEGÖ¸Áî¿ÉµÃµ½¸ºÊýµÄ¾ø¶ÔÖµ¡£ Àý£ºÈô(AL)=0FCH£¬ÔòÖ´ÐÐ NEG ALºó£¬
(AL)=04H£¬CF=1
£¨5£©±È½ÏÖ¸ÁîCMP
¸ñʽ£º CMP dest, src ²Ù×÷£º (dest)-(src)
CMPÒ²ÊÇÖ´ÐÐÁ½¸ö²Ù×÷ÊýÏà¼õ,µ«½á¹û²»ËÍÄ¿±ê²Ù×÷Êý,Æä½á¹ûÖ»·´Ó³ÔÚ±ê־λÉÏ¡£ Ö¸ÁîÀý×Ó£º
CMP AL£¬0AH CMP CX£¬SI
CMP DI£¬[BX+03]
£¨6£©·ÇѹËõBCDÂë¼õ·¨µ÷ÕûÖ¸ÁîAAS
¶ÔALÖÐÓÉÁ½¸ö·ÇѹËõµÄBCDÂëÏà¼õµÄ½á¹û½øÐе÷Õû¡£µ÷Õû²Ù×÷Ϊ£º ÈôALµÄµÍ4λ£¾9»òAF=1,Ôò£º ¢Ù AL¡û(AL)-6,AH¡û(AH)-1,AF¡û1 ¢Ú ALµÄ¸ß4λÇåÁã ¢Û CF¡ûAF
·ñÔò£ºALµÄ¸ß4λÇåÁã
£¨7£©Ñ¹ËõBCDÂë¼õ·¨µ÷ÕûÖ¸ÁîDAS
¶ÔALÖÐÓÉÁ½¸öѹËõBCDÂëÏà¼õµÄ½á¹û½øÐе÷Õû¡£µ÷Õû²Ù×÷Ϊ£º ÈôALµÄµÍ4λ£¾9»òAF=1,Ôò£º AL¡û(AL)-6, ÇÒAF¡û1
ÈôALµÄ¸ß4λ£¾9»òCF=1,Ôò£º AL¡û(AL)-60H£¬ÇÒCF¡û1
DAS¶ÔOFÎÞ¶¨Òå,µ«Ó°ÏìÆäÓà±ê־λ¡£ DASÖ¸ÁîÒªÇó¸úÔÚ¼õ·¨Ö¸ÁîÖ®ºó¡£
3¡¢ ³Ë·¨Ö¸Áî
½øÐг˷¨Ê±£º8λ*8λ¡ú16λ³Ë»ý
16λ*16λ¡ú32λ³Ë»ý
(1) ÎÞ·ûºÅÊýµÄ³Ë·¨Ö¸ÁîMUL(MEM/REG) ¸ñʽ£º MUL src
²Ù×÷£º×Ö½Ú²Ù×÷Êý (AX)¡û(AL) ¡Á (src)
×Ö²Ù×÷Êý (DX, AX)¡û(AX) ¡Á (src)
12 / 54