(3) JNB¡¢JNBE¡¢JL¡¢JLE (4) JNB¡¢JNBE¡¢JNL¡¢JNLE (5) JNB¡¢JNBE¡¢JL¡¢JLE (6) JB¡¢JBE¡¢JL¡¢JLE (7) JB¡¢JBE¡¢JNL¡¢JNLE (8) JNB¡¢JNBE¡¢JL¡¢JLE
3.36 ¼ÙÉèXºÍX+2µ¥ÔªµÄÄÚÈÝΪ˫¾«¶ÈÊýp£¬YºÍY+2µ¥ÔªµÄÄÚÈÝΪ˫¾«¶ÈÊýq£¬(XºÍYΪµÍλ×Ö)
ÊÔ˵Ã÷ÏÂÁгÌÐò¶Î×öʲô¹¤×÷£¿
MOV DX, X+2 MOV AX, X ADD AX, X ADC DX, X+2 CMP DX, Y+2 JL L2 JG L1 CMP AX, Y JBE L2
L1£º MOV AX, 1
JMP SHORT EXIT
L2£º MOV AX, 2 EXIT£ºINT 20H
´ð£º´Ë³ÌÐò¶ÎÅжÏp*2£¾q£¬Ôòʹ(AX)=1ºóÍ˳ö£»p*2¡Üq£¬Ôòʹ(AX)=2ºóÍ˳ö¡£ 3.37 ÒªÇó²âÊÔÔÚSTATUSÖеÄÒ»¸ö×Ö½Ú£¬Èç¹ûµÚ1¡¢3¡¢5λ¾ùΪ1Ôò×ªÒÆµ½ROUTINE_1£»Èç¹û´ËÈýλ
ÖÐÓÐÁ½Î»Îª1Ôò×ªÒÆµ½ROUTINE_2£»Èç¹û´ËÈýλÖÐÖ»ÓÐһλΪ1Ôò×ªÒÆµ½ROUTINE_3£»Èç¹û´ËÈýλȫΪ0Ôò×ªÒÆµ½ROUTINE_4¡£ÊÔ»³öÁ÷³Ìͼ£¬²¢±àÖÆÏàÓ¦µÄ³ÌÐò¶Î¡£ ´ð£º³ÌÐò¶ÎÈçÏ£º
³ÌÐò¿ªÊ¼ MOV AL, STATUS
AND AL, 00010101B £»Ö»±£ÁôµÚ1¡¢3¡¢5λ (AL)¡û(STATUS)Ö»±£ÁôµÚ1,3,5JZ ROUTINE_4 £»3λȫΪ0תROUTINE_4 JPE ROUTINE_2 £»Á½Î»Îª1תROUTINE_2 CMP AL, 00010101B ȫΪ0Âð? Y JZ ROUTINE_1 £»3λȫΪ1תROUTINE_1 N ROUTINE_3: ©« £»½öһλΪ1Ö´ÐÐROUTINE_3 תȥִÐÐJMP EXIT ¶þλΪ1Âð? ROUTINE_4 Y ROUTINE_1: ©« JMP EXIT N ROUTINE_2: ©« Y ȫΪ1Âð? JMP EXIT
ROUTINE_4: ©« N תȥִÐÐתȥִÐÐEXIT: INT 20H ROUTINE_2 ½öһλΪ1Ö´ÐÐROUTINE_1 ROUTINE_3 3.38 ÔÚÏÂÁгÌÐòµÄÀ¨ºÅÖзֱðÌîÈëÈçÏÂÖ¸Á (1) LOOP L20 (2) LOOPE L20 (3) LOOPNE L20
Ö´ÐÐEXIT³ÌÐò½áÊø ÊÔ˵Ã÷ÔÚÈýÖÖÇé¿öÏ£¬µ±³ÌÐòÖ´ÐÐÍêºó£¬AX¡¢BX¡¢ CX¡¢DXËĸö¼Ä´æÆ÷µÄÄÚÈÝ·Ö±ðÊÇʲô£¿
3.44ÌâµÄ³ÌÐòÁ÷³Ìͼ TITLE EXLOOP.COM
CODESG SEGMENT
ASSUME CS:CODESG, DS: CODSEG, SS: CODSEG ORG 100H
BEGIN: MOV AX, 01
MOV BX, 02 MOV DX, 03 MOV CX, 04
L20:
INC AX ADD BX, AX SHR DX, 1 ( ) RET
CODESG ENDS
END BEGIN
´ð£º(1) (AX)=5H£¬(BX)=10H£¬(CX)=0H£¬(DX)=0H
(2) (AX)=2H£¬(BX)=4H£¬(CX)=3H£¬(DX)=1H (3) (AX)=3H£¬(BX)=7H£¬(CX)=2H£¬(DX)=0H
3.39 ¿¼ÂÇÒÔϵĵ÷ÓÃÐòÁУº
(1) MAINµ÷ÓÃNEARµÄSUBA¹ý³Ì(·µ»ØµÄÆ«ÒÆµØÖ·Îª0400)£» (2) SUBAµ÷ÓÃNEARµÄSUBB¹ý³Ì(·µ»ØµÄÆ«ÒÆµØÖ·Îª0A00)£»
(3) SUBBµ÷ÓÃFARµÄSUBC¹ý³Ì(·µ»ØµÄ¶ÎµØÖ·ÎªB200£¬·µ»ØµÄÆ«ÒÆµØÖ·Îª0100)£» (4) ´ÓSUBC·µ»ØSUBB£»
(5) SUBBµ÷ÓÃNEARµÄSUBD¹ý³Ì(·µ»ØµÄÆ«ÒÆµØÖ·Îª0C00)£» (6) ´ÓSUBD·µ»ØSUBB£» (7) ´ÓSUBB·µ»ØSUBA£» (8) ´ÓSUBA·µ»ØMAIN£»
(9) ´ÓMAINµ÷ÓÃSUBC(·µ»ØµÄ¶ÎµØÖ·Îª1000£¬·µ»ØµÄÆ«ÒÆµØÖ·Îª0600)£» Ç뻳öÿ´Îµ÷Óü°·µ»ØÊ±µÄ¶Ñջ״̬¡£
´ð£ºÃ¿´Îµ÷Óü°·µ»ØÊ±µÄ¶Ñջ״̬ͼÈçÏÂËùʾ£º
00 ÐÂSPλÖà 00 ÔSPλÖà 01 01
00 00 00 ÐÂSPλÖà B2 B2 0A 00 ÐÂSPλÖà 00 ÔSPλÖà 00 ÐÂSPλÖà 00 ÔSPλÖà 04 0A 0A 04 ÔSPλÖà 00 00 (2) SUBAµ÷ (1) MAINµ÷ (3) SUBBµ÷ (4) ´ÓSUBC ÓÃSUBB¹ý³Ì Óà SUBA¹ý³Ì ÓÃSUBC¹ý³Ì ·µ»ØSUBB
00 00 00 00 00 01 01 01 01 01 00 ÐÂSPλÖà 00 ÔSPλÖà 00 00 00 0C 0C 0C 0C 0C 00 ÔSPλÖà 00 ÐÂSPλÖà 00 ÔSPλÖà 00 00 ÐÂSPλÖà 0A 0A 0A 0A 06 00 00 00 ÐÂSPλÖà 00 ÔSPλÖà 00 04 04 04 04 10 ÐÂSPλÖà ÔSPλÖÃ
(5) SUBBµ÷ (6) ´ÓSUBD (7) ´ÓSUBB (8) ´ÓSUBA (9) ´ÓMAIN
ÓÃSUBD¹ý³Ì ·µ»ØSUBB ·µ»ØSUBA ·µ»ØMAIN µ÷ÓÃSUBC
3.40 ¼ÙÉè(EAX)=00001000H£¬(EBX)=00002000H£¬(DS)=0010H£¬ÊÔÎÊÏÂÁÐÖ¸Áî·ÃÎÊÄÚ´æµÄÎïÀíµØÖ·ÊÇ
ʲô£¿
(1) MOV ECX£¬[EAX+EBX] (2) MOV [EAX+2*EBX]£¬CL
(3) MOV DH£¬[EBX+4*EAX+1000H]
´ð£º(1) PA=(DS)*10H+EA=00100H+00001000H+00002000H=00003100H
(2) PA=(DS)*10H+EA=00100H+00001000H+2*00002000H=00005100H
(3) PA=(DS)*10H+EA=00100H+00002000H+4*00001000H+1000H=00007100H 3.41 ¼ÙÉè(EAX)=9823F456H£¬(ECX)=1F23491H£¬(BX)=348CH£¬(SI)=2000H£¬(DI)=4044H¡£ÔÚDS¶ÎÖÐ
´ÓÆ«ÒÆµØÖ·4044Hµ¥Ôª¿ªÊ¼µÄ4¸ö×Ö½Úµ¥ÔªÖУ¬ÒÀ´Î´æ·ÅµÄÄÚÈÝΪ92H£¬6DH£¬0A2HºÍ4CH£¬ÊÔÎÊÏÂÁи÷ÌõÖ¸ÁîÖ´ÐÐÍêºóµÄÄ¿µÄµØÖ·¼°ÆäÖеÄÄÚÈÝÊÇʲô£¿ (1) MOV [SI]£¬EAX
(2) MOV [BX]£¬ECX (3) MOV EBX£¬[DI]
´ð£º(1) Ä¿µÄµØÖ·ÎªDS:2000H£¬ÄÚÈÝÒÀ´ÎΪ£º56H£¬0F4H£¬23HºÍ98H
(2) Ä¿µÄµØÖ·ÎªDS:348CH£¬ÄÚÈÝÒÀ´ÎΪ£º91H£¬34H£¬0F2HºÍ01H (3) Ä¿µÄ²Ù×÷ÊýΪEBX¼Ä´æÆ÷£¬(EBX)=4CA26D92H 3.42 ˵Ã÷ÏÂÁÐÖ¸ÁîµÄ²Ù×÷
(1) PUSH AX (2) POP ESI (3) PUSH [BX] (4) PUSHAD (5) POP DS (6) PUSH 4 ´ð£º¼û×¢ÊÍ¡£
£»½«(AX)ѹÈë¶ÑÕ» £»½«¶ÑÕ»ÖеÄË«×Öµ¯³öµ½ESI¼Ä´æÆ÷ÖÐ £»½«((BX))¶ÔÓ¦´æ´¢µ¥ÔªÖеÄ×ÖѹÈë¶ÑÕ» £»32λͨÓüĴæÆ÷ÒÀ´Î½øÕ» £»½«¶ÑÕ»ÖеÄ×Öµ¯³öµ½DS¼Ä´æÆ÷ÖÐ £»½«Á¢¼´Êý4ÒÔ×ֵķ½Ê½Ñ¹Èë¶ÑÕ»
3.43 Çë¸ø³öÏÂÁи÷Ö¸ÁîÐòÁÐÖ´ÐÐÍêºóÄ¿µÄ¼Ä´æÆ÷µÄÄÚÈÝ¡£
(1) MOV EAX£¬299FF94H
ADD EAX£¬34FFFFH £»(EAX)= 2CEFF93H (2) MOV EBX£¬40000000
SUB EBX£¬1500000 £»(EBX)= 3EB00000H (3) MOV EAX£¬39393834H
AND EAX£¬0F0F0F0FH £»(EAX)= 09090804H (4) MOV EDX£¬9FE35DH
XOR EDX£¬0F0F0F0H £»(EDX)= 6F13ADH ´ð£º¼û×¢ÊÍ¡£ 3.44 Çë¸ø³öÏÂÁи÷Ö¸ÁîÐòÁÐÖ´ÐÐÍêºóÄ¿µÄ¼Ä´æÆ÷µÄÄÚÈÝ¡£
(1) MOV BX£¬-12
MOVSX EBX£¬BX £»(EBX)= 0FFFF FFF4H (2) MOV CL£¬-8
MOVSX EDX£¬CL £»(EDX)= 0FFFF FFF8H (3) MOV AH£¬7
MOVZX ECX£¬AH £»(ECX)= 0000 0007H (4) MOV AX£¬99H
MOVZX EBX£¬AX £»(EBX)= 0000 0099H ´ð£º¼û×¢ÊÍ¡£ 3.45 Çë¸ø³öÏÂÁÐÖ¸ÁîÐòÁÐÖ´ÐÐÍêºóEAXºÍEBXµÄÄÚÈÝ¡£
MOV ECX£¬307 F455H BSF EAX£¬ECX £»(EAX)= 0D BSR EBX£¬ECX £»(EBX)= 25D ´ð£º¼û×¢ÊÍ¡£ 3.46 Çë¸ø³öÏÂÁÐÖ¸ÁîÐòÁÐÖ´ÐÐÍêºóAXºÍDXµÄÄÚÈÝ¡£
MOV BX£¬98H BSF AX£¬BX £»(AX)= 3D BSR DX£¬BX £»(DX)= 7D ´ð£º¼û×¢ÊÍ¡£
3.47 Çë±àдһ³ÌÐò¶Î£¬ÒªÇó°ÑECX¡¢EDXºÍESIµÄÄÚÈÝÏà¼Ó£¬ÆäºÍ´æÈëEDI¼Ä´æÆ÷ÖÐ(²»¿¼ÂÇÒç³ö)¡£
´ð£ºMOV EDI£¬0 Ò²¿ÉΪ£º MOV EDI£¬ECX
ADD EDI£¬ECX ADD EDI£¬EDX ADD EDI£¬EDX ADD EDI£¬ESI ADD EDI£¬ESI 3.48 Çë˵Ã÷IMUL BX£¬DX£¬100HÖ¸ÁîµÄ²Ù×÷¡£ ´ð£º(BX)¡û(DX)*100H
3.49 ÊÔ±àдһ³ÌÐò¶Î£¬ÒªÇó°ÑBLÖеÄÊý³ýÒÔCLÖеÄÊý£¬²¢°ÑÆäÉ̳ËÒÔ2£¬×îºóµÄ½á¹û´æÈëDX¼Ä´æ
Æ÷ÖС£
´ð£ºMOV AL£¬BL
MOV AH£¬0 £»¼Ù¶¨ÎªÎÞ·ûºÅÊý£¬·ñÔòÓÃCBWÖ¸Áî¼´¿É DIV CL MOV AH£¬0 SHL AX£¬1 MOV DX£¬AX 3.50 Çë˵Ã÷JMP DIºÍJMP [DI]Ö¸ÁîµÄÇø±ð¡£
´ð£ºJMP DIÊÇ×ªÒÆµ½ÒÔ(DI)ÄÚÈÝÎªÆ«ÒÆµØÖ·µÄµ¥ÔªÈ¥Ö´ÐÐÖ¸ÁJMP [DI]ÊÇ×ªÒÆµ½ÒÔ(DI)¼ä½Ó
ѰַµÄÄÚ´æµ¥ÔªÄÚÈÝÎªÆ«ÒÆµØÖ·µÄµ¥ÔªÈ¥Ö´ÐÐÖ¸Áî¡£ 3.51 ÊÔ±àдһ³ÌÐò¶Î£¬ÒªÇóÔÚ³¤¶ÈΪ100H×Ö½ÚµÄÊý×éÖУ¬ÕÒ³ö´óÓÚ42HµÄÎÞ·ûºÅÊýµÄ¸öÊý²¢´æÈë×Ö
½Úµ¥ÔªUPÖУ»ÕÒ³öСÓÚ42HµÄÎÞ·ûºÅÊýµÄ¸öÊý²¢´æÈë×Ö½Úµ¥ÔªDOWNÖС£ ´ð£ºJMP BEGIN
UP DB 0 DOWN DB 0 ´æ´¢Æ÷ TABLE DB 100H DUP (?) £»Êý×é 002EH ÐÂ(SP) 002FH BEGIN£º
0030H MOV CX£¬100H
0031H MOV BX£¬-1
0032H MOV SI£¬0
0033H MOV DI£¬0
0034H ¶Ñ L1£ºINC BX 0035H Õ»CMP TABLE[BX]£¬42H 0036H Ö¡ JA L2 0037H JB L3 0038H JMP L4 0039H L2£ºINC SI 003AH JMP L4 003BH 003CH L3£ºINC DI
003DH L4£ºLOOP L1
ÐÂ(BP) Ô(BP)µÍ×Ö½Ú 003EH MOV UP£¬SI
Ô(BP)¸ß×Ö½Ú 003FH MOV DOWN£¬DI
0040H Ô(SP) 3.52 ÇëÓÃͼ±íʾENTER 16£¬0ËùÉú³ÉµÄ¶ÑÕ»Ö¡µÄÇé¿ö¡£
3.52ÌâµÄ´ð°¸ ´ð£º´ð°¸¼ûÓÒͼ¡£
µÚ ËÄ ÕÂ. ϰ Ìâ
4.1 Ö¸³öÏÂÁÐÖ¸ÁîµÄ´íÎó£º
(1) MOV AH, BX (2) MOV [BX], [SI] (3) MOV AX, [SI][DI] (4) MOV MYDAT [BX][SI], ES:AX (5) MOV BYTE PTR [BX], 1000 (6) MOV BX, OFFSET MYDAT [SI] (7) MOV CS, AX (8) MOV ECX, AX ´ð£º¼û×¢ÊÍ¡£
£»¼Ä´æÆ÷ÀàÐͲ»Æ¥Åä £»²»Äܶ¼ÊÇ´æ´¢Æ÷²Ù×÷Êý £»[SI]ºÍ[DI]²»ÄÜÒ»ÆðʹÓà £»AX¼Ä´æÆ÷²»ÄÜʹÓöγ¬Ô½ £»1000³¬¹ýÁËÒ»¸ö×ֽڵķ¶Î§
£»MYDAT [SI]ÒѾÊÇÆ«ÒƵØÖ·,²»ÄÜÔÙʹÓÃOFFSET £»CS²»ÄÜÓÃ×÷Ä¿µÄ¼Ä´æÆ÷ £»Á½¸ö²Ù×÷ÊýµÄÊý¾ÝÀàÐͲ»Í¬
4.2 ÏÂÃæÄÄЩָÁîÊÇ·Ç·¨µÄ£¿(¼ÙÉèOP1£¬OP2ÊÇÒѾÓÃDB¶¨ÒåµÄ±äÁ¿)
(1) CMP 15, BX £»´í£¬Á¢¼´Êý²»ÄÜ×÷ΪĿµÄ²Ù×÷Êý (2) CMP OP1, 25