µÚ3Õ 8086CPUÖ¸Áîϵͳ
1. д³öÍê³ÉÏÂÁÐÒªÇóµÄ±äÁ¿¶¨ÒåÓï¾ä£º
£¨1£©ÔÚ±äÁ¿var1Öб£´æ6¸ö×Ö±äÁ¿£º4512H£¬4512£¬£1£¬100/3£¬10H£¬65530£» £¨2£©ÔÚ±äÁ¿var2Öб£´æ×Ö·û´®£º¡¯BYTE¡¯, ¡¯word¡¯, ¡¯WORD¡¯£» £¨3£©ÔÚ»º³åÇøbuf1ÖÐÁô³ö100¸ö×ֽڵĴ洢¿Õ¼ä£»
£¨4£©ÔÚ»º³åÇøbuf2ÖУ¬±£´æ5¸ö×Ö½ÚµÄ55H£¬ÔÙ±£´æ10¸ö×Ö½ÚµÄ240£¬²¢½«ÕâÒ»¹ý³Ì
ÖØ¸´7´Î£»
£¨5£©ÔÚ±äÁ¿var3Öб£´æ»º³åÇøbuf1µÄ³¤¶È£»
£¨6£©ÔÚ±äÁ¿pointerÖб£´æ±äÁ¿var1ºÍ»º³åÇøbuf1µÄÆ«ÒÆµØÖ·¡£ ½â£ºvar1
var2 buf1 buf2 var3
DW DB DB DB DB
4512H,4512,-1,100/3,10H,65530 ¡¯BYTE¡¯,¡¯word¡¯,¡¯WORD¡¯ 100 DUP£¨?£©
7 DUP£¨5 DUP£¨55H£©,10 DUP£¨240£©£© LENGTH buf1
var1,buf1 £¨»òÕßpointer DW OFFSET var1£¬OFFSET buf1£©
pointer DW
2. Éè±äÁ¿var1µÄÂß¼µØÖ·Îª0100£º0000£¬»³öÏÂÁÐÓï¾ä¶¨ÒåµÄ±äÁ¿µÄ´æ´¢·ÖÅäͼ£º var1 DB 12£¬£12£¬20/6£¬4 DUP£¨0£¬55H£© var2 DB ¡®Assemble¡¯
var3 DW ¡®AB¡¯, ¡®cd¡¯, ¡®E¡¯ var4 DW var2 var5 DD var2 ½â£º
£ 8 £
3. Ö¸ÁîÕýÎóÅжϣ¬¶ÔÕýÈ·Ö¸Áîд³öÔ´ºÍÄ¿µÄ²Ù×÷ÊýµÄѰַ·½Ê½£¬¶Ô´íÎóÖ¸ÁîÖ¸³öÔÒò£¨Éè
VAR1, VAR2Ϊ×Ö±äÁ¿, L1Ϊ±êºÅ£©£º £¨1£©MOV SI£¬100 £¨3£©MOV AX, [BX] £¨5£©MOV BP, AL £¨7£©MOV CS, AX £¨9£©MOV [BX][SI], 1 £¨11£©ADD AX, LENGTH VAR1 £¨13£©SUB [DI], 78H £¨15£©PUSH 100H £¨17£©XCHG AX, ES £¨19£©JMP L1+5 £¨21£©SHL BL, 2 £¨23£©MUL CX
£¨25£©ADC CS:[0100], AH ½â£º£¨1£©MOV SI,100
£¨2£©MOV BX£¬VAR1[SI] £¨4£©MOV AL, [DX] £¨6£©MOV VAR1, VAR2 £¨8£©MOV DS, 0100H £¨10£©MOV AX, VAR1+VAR2 £¨12£©OR BL, TYPE VAR2 £¨14£©MOVS VAR1, VAR2 £¨16£©POP CS £¨18£©MOV DS, CS £¨20£©DIV AX, 10 £¨22£©MOV AL, 15+23 £¨24£©XCHG CL, [SI] £¨26£©SBB VAR1£5,154
ÕýÈ·¡£Ô´£ºÁ¢¼´ÊýѰַ£¬ Ä¿µÄ£º¼Ä´æÆ÷Ѱַ ÕýÈ·¡£Ô´£º¼Ä´æÆ÷Ïà¶ÔѰַ£¬ Ä¿µÄ£º¼Ä´æÆ÷Ѱַ ÕýÈ·¡£Ô´£º¼Ä´æÆ÷¼ä½ÓѰַ£¬Ä¿µÄ£º¼Ä´æÆ÷Ѱַ
´íÎ󡣼ĴæÆ÷¼ä½ÓѰַʱ£¬DX, AX, CX²»ÄÜ×÷µØÖ·¼Ä´æÆ÷ ´íÎó¡£²Ù×÷ÊýÀàÐͲ»Ò»ÖÂ
´íÎó¡£Á½´æ´¢µ¥ÔªÖ®¼ä²»ÄÜÓÃMOVÖ¸Áî´«ËÍÊý¾Ý
£ 9 £
£¨2£©MOV BX,VAR1[SI] £¨3£©MOV AX,[BX] £¨4£©MOV AL,[DX] £¨5£©MOV BP,AL
£¨6£©MOV VAR1,VAR2
£¨7£©MOV CS,AX ´íÎó¡£CS²»ÄÜΪĿµÄ²Ù×÷Êý
´íÎó¡£Ä¿µÄ²Ù×÷ÊýΪ¶Î¼Ä´æÆ÷ʱ£¬Ô´²Ù×÷Êý²»ÄÜΪÁ¢¼´Êý ´íÎó¡£Ö¸ÁîÀàÐͲ»¶¨¡£
´íÎó¡£MOVÖ¸ÁîÖв»ÄÜÍê³É¼Ó·¨ÔËËã
£¨8£©MOV DS,0100H £¨9£©MOV [BX][SI]£¬1
£¨10£©MOV AX,VAR1+VAR2
£¨11£©ADD AX,LENGTH VAR1 ÕýÈ·¡£Ô´£ºÁ¢¼´ÊýѰַ¡£Ä¿µÄ£º¼Ä´æÆ÷Ѱַ £¨12£©OR
BL,TYPE VAR2
ÕýÈ·¡£Ô´£ºÁ¢¼´ÊýѰַ¡£Ä¿µÄ£º¼Ä´æÆ÷Ѱַ ´íÎó¡£Ö¸ÁîÀàÐͲ»¶¨
£¨13£©SUB [DI],78H
£¨14£©MOVS VAR1,VAR2 ÕýÈ·¡£Ä¿µÄ¡¢Ô´¾ùΪÒþº¬Ñ°Ö·¡£²Ù×÷Êý½öÖ¸³ö²Ù×÷ÊýÀàÐÍ £¨15£©PUSH 100H £¨16£©POP
´íÎó¡£½«³£ÊýѹÈë¶ÑÕ»£¬ÒªÍ¨¹ý¼Ä´æÆ÷À´ÊµÏÖ
´íÎó¡£Ä¿µÄ²Ù×÷Êý²»ÄÜΪCS
CS
£¨17£©XCHG AX£¬ES £¨18£©MOV DS£¬CS £¨19£©JMP L1+5 £¨20£©DIV £¨21£©SHL
´íÎó¡£XCHGÖ¸ÁîµÄ²Ù×÷Êý²»ÄÜÊǶμĴæÆ÷ ´íÎó¡£MOVÖ¸Áî²»ÄܴӶμĴæÆ÷µ½¶Î¼Ä´æÆ÷ ÕýÈ·¡£¶ÎÄÚÖ±½Ó×ªÒÆ
´íÎó¡£Ö¸Áî¸ñʽ´íÎó¡£
´íÎó¡£ÒÆÎ»Ö¸ÁîµÄÒÆÎ»ÊýΪ1»òÕßCL
AX£¬10 BL£¬2
£¨22£©MOV AL£¬15+23 ÕýÈ·¡£Ô´:Á¢¼´ÊýѰַ£¬Ä¿µÄ:¼Ä´æÆ÷¡£±àÒëʱ¾Í´¦ÀíΪ38 £¨23£©MUL
CX
ÕýÈ·¡£Ô´£º¼Ä´æÆ÷Ѱַ£¬Ä¿µÄ£º¼Ä´æÆ÷Ѱַ
£¨24£©XCHG CL£¬[SI] ÕýÈ·¡£Ô´£º¼Ä´æÆ÷¼ä½ÓѰַ£¬Ä¿µÄ£º¼Ä´æÆ÷Ѱַ
£¨25£©ADC CS:[0100],AH ÕýÈ·¡£Ô´:¼Ä´æÆ÷Ѱַ,Ä¿µÄ: Ö±½ÓѰַ£¨Êý¾ÝÔÚ´úÂë¶ÎÖУ© £¨26£©SBB
VAR1-5,154 ÕýÈ·¡£Ô´£ºÁ¢¼´ÊýѰַ£¬Ä¿µÄ£ºÖ±½ÓѰַ¡£
4. ˵Ã÷ÏÂÁÐÖ¸Áî¶ÔµÄÇø±ð£º
£¨1£©MOV AX£¬VAR1 £¨2£©MOV AX£¬VAR2
Óë MOV AX£¬OFFSET VAR1 Óë LEA AX£¬VAR2
£¨3£©MOV AL£¬LENGTH VAR1 Óë MOV AL£¬SIZE VAR1 £¨4£©MOV AL£¬ES: [DI] CMP AL, [SI] Óë CMPSB £¨5£©SHR AL£¬1 £¨6£©SHR AL£¬1 £¨7£©ROL BX£¬1 ½â£º£¨1£©MOV
Óë SAR AL£¬1 Óë ROR AL£¬1 Óë RCL BX£¬1
AX£¬VAR1 °Ñ±äÁ¿VAR1¶ÔÓ¦µØÖ·µ¥ÔªÖеÄÒ»¸ö×ÖËÍÈëAX AX£¬OFFSET VAR1 °ÑVAR1µÄÓÐЧµØÖ·µÄÆ«ÒÆµØÖ·ËÍÈëAX
£ 10 £
MOV
£¨2£©MOV
AX£¬VAR2 °Ñ±äÁ¿VAR2¶ÔÓ¦µØÖ·µ¥ÔªÖеÄÒ»¸ö×ÖËÍÈëAX
LEA AX£¬VAR2 °ÑVAR2µÄÓÐЧµØÖ·µÄÆ«ÒÆµØÖ·ËÍÈëAX £¨3£©MOV AL£¬LENGTH VAR1 °Ñ±äÁ¿VAR1µÄ³¤¶ÈËÍÈëAL
MOV AL£¬SIZE VAR1 °Ñ±äÁ¿VAR1µÄ´óСËÍÈëAL £¨4£©MOV
AL£¬ES£º[DI]
°ÑÒÔESΪ¶ÎµØÖ·£¬DIÎªÆ«ÒÆµØÖ·µÄÒ»¸ö×Ö½ÚËÍÈëAL£¬
²¢ÓëÒÔSIÄÚÈÝÎªÆ«ÒÆµØÖ·µÄÒ»¸ö×Ö½Ú×÷±È½Ï£¬¸Ä±ä±êÖ¾¼Ä ´æÆ÷ÄÚÈÝ¡££¨Ï൱ÓÚ×÷ES£º£¨DI£©Ó루DS: £¨SI£©ÄÚÈݱȽϣ©
CMPSB
¶Ô×Ö·û´®ÖеÄÒ»×ֽڱȽϡ£Ñ°Ö··½Ê½Òþº¬¡£Ô´´®µÄµØÖ·ÓÉ DS:SIÖ¸¶¨£¬Ä¿µÄ´®µÄµØÖ·ÓÉES:DIÖ¸¶¨¡££¨Ï൱ÓÚ×÷ DS: £¨SI£©ÓëES£º£¨DI£©ÄÚÈݱȽϣ©
£¨5£©SHR AL£¬1 ALÂß¼ÓÒÒÆ1룬×î¸ßÎ»ÒÆÈë0, ×îµÍÎ»ÒÆÈëCF¡£
SAR AL£¬1 ALËãÊõÓÒÒÆ1룬ÒÔ×î¸ßλÄÚÈÝÒÆÈ룬×îµÍÎ»ÒÆÈëCF, ÆäÓà¸÷λ
ÓÒÒÆÒ»Î»¡£
£¨6£©SHR AL£¬1 ALÂß¼ÓÒÒÆ1룬×î¸ßÎ»ÒÆÈë0, ×îµÍÎ»ÒÆÈëCF¡£ ROR AL£¬1
ALµÄ¸÷λ¹¹³É»·ÐÎÒÆÎ»£¬ÓÒÒÆÒ»Î»£¬×îµÍλÄÚÈÝÍ¬Ê±ÒÆÈëµ½CFºÍ ×î¸ßλ¡£
£¨7£©ROL BX£¬1 BX¸÷λ¹¹³É»·ÐÎÒÆÎ»£¬×óÒÆÒ»Î»£¬×î¸ßλÄÚÈÝÍ¬Ê±ÒÆÈëµ½CFºÍ
×îµÍλ¡£
RCL BX£¬1 BXºÍCF¹¹³É»·ÐÎÒÆÎ»£¬×óÒÆÒ»Î»£¬CFÄÚÈÝÒÆÈëµ½×îµÍ룬×î ¸ßÎ»ÒÆÈëCF¡£
CMP AL£¬[SI]
5. д³öÏÂÁÐ×ªÒÆÖ¸ÁîµÄѰַ·½Ê½£¨ÉèL1Ϊ±êºÅ£¬VAR1Ϊ×ÖÐͱäÁ¿£¬DVAR1Ϊ˫×ÖÐͱäÁ¿£©£º £¨1£©JMP L1 £¨3£©JNZ L1 £¨5£©JG L1
£¨7£©JMP FAR PTR L1
£¨2£©JMP NEAR L1 £¨4£©JMP BX £¨6£©JMP VAR1[SI] £¨8£©JMP DVAR1
½â£º£¨1£©JMP L1 ¶ÎÄÚÖ±½ÓѰַ £¨2£©JMP NEAR PTR L1 ¶ÎÄÚÖ±½ÓѰַ £¨3£©JNZ
L1 ¶ÎÄÚÖ±½ÓѰַ
£¨4£©JMP BX
¶ÎÄÚ¼ä½ÓѰַ
¶ÎÄÚ¼ä½ÓѰַ
£¨5£©JG L1 ¶ÎÄÚÖ±½ÓѰַ £¨6£©JMP VAR1[SI]
£¨7£©JMP FAR PTR L1 ¶Î¼äÖ±½ÓѰַ £¨8£©JMP DVAR1 ¶Î¼ä¼ä½ÓѰַ
£ 11 £