΢»úÔ­ÀíϰÌ⼯ÒÔ¼°´ð°¸µÚ¶þ°æ(5)

2019-04-02 17:23

µÚ4Õ »ã±àÓïÑÔ³ÌÐòÉè¼Æ

4.1 Àý Ìâ

1£®ÉèÓÐÒ»Êý¾Ý¶ÎDSEG£¬ÆäÖÐÁ¬Ðø¶¨ÒåÏÂÁÐ5¸ö±äÁ¿»ò³£Á¿£¬Óöζ¨ÒåÓï¾äºÍÊý¾Ý¶¨ÒåÓï¾äд³öÊý¾Ý¶Î£ºP48

£¨1£©DATA1Ϊһ×Ö·û´®±äÁ¿£º¡®WELCOME TO MASM£¡¡¯¡£ £¨2£©DATA2Ϊʮ½øÖÆ×Ö½Ú±äÁ¿£º32£¬90£¬£­20¡£ £¨3£©DATA3ΪÁ¬Ðø10¸ö00HµÄ×Ö½Ú±äÁ¿¡£

£¨4£©DATA4Ϊ˫×Ö±äÁ¿£¬Æä³õʼֵΪ12345678H

£¨5£©COUNTΪһ·ûºÅ³£Á¿£¬ÆäֵΪÒÔÉÏËıäÁ¿ËùÓÃ×Ö½ÚÊý¡£ ½â£º¶¨ÒåÊý¾Ý¶ÎÈçÏ£º

DSEG SEGMENT

DATA1 DB ¡®WELCOME TO MASM£¡¡¯ DATA2 DB 32£¬90£¬£­20 DATA3 DB 10 DUP (00H) DATA4 DD 12345678H COUNT EQU $£­DATA1

DSEG ENDS

ÆäÖÐ$¨CDATA1ÖÐ$±íʾµ±Ç°»ã±àµØÖ·¼ÆÊýÆ÷Öµ£¬ÓÃÆä¼õÈ¥DATA1µÄÆ«ÒÆµØÖ·¿ÉµÃ¸ÃÊý¾Ý¶ÎËùÓÃ×Ö½ÚÊý¡£

2£®ÉèÓÐÒÔÏÂÊý¾Ý¶Î¶¨Ò壺P102

DSEG SEGMENT X1 EQU 30H X2 EQU 70H X3 EQU 0F7H DSEG ENDS

¸ø³öÏÂÁÐÖ¸Áî·Ö±ðÖ´Ðкó£¬ALÖеÄÄÚÈÝÊǶàÉÙ£¿ £¨1£© MOV AL£¬X1+X2

£¨2£© MOV AL£¬X2 MOD X1 £¨3£© MOV AL£¬X1 EQ X3 £¨4£© MOV AL£¬X1 AND X3 £¨5£© MOV AL£¬X1 OR X3 £¨6£© MOV AL£¬X2 GT X1 ½â£º£¨1£© (AL)= 30H£«70H = 0A0H £¨2£© (AL)= 70H MOD 30H = 10H

£¨3£© X1 EQ X3 = 30H EQ 70H ΪÂß¼­ÔËË㣬ÆäֵΪ¼Ù£¬¹Ê(AL)=00H

21

£¨4£© (AL) = X1 AND X3 = 30H AND 0F7H = 30H P98 £¨5£© (AL)= X1 OR X3 = 30H OR 0F7H = 0F7H

£¨6£© X2 GT X1 = 70H GT 30HΪÂß¼­ÔËË㣬ÆäÖµÎªÕæ£¬¹Ê(AL)=0FFH 3£®·ÖÎöÏÂÁгÌÐò¶Î£¬»Ø´ðËùÌáÎÊÌâ¡£ P98

DA1 DW 1F28H

DA2 DB ? £®£®£®£®£®£®

XOR BL£¬BL

MOV AX£¬DA1 LOP£º AND AX£¬AX JZ EXIT SHL AX£¬1

JNC LOP INC BL JMP LOP

EXIT£ºMOV DA2£¬BL ÊÔÎÊ£º£¨1£©³ÌÐò¶ÎÖ´Ðкó£¬DA2×Ö½Úµ¥ÔªÄÚÈÝÊÇʲô£¿

£¨2£©ÔÚ³ÌÐò¶Î¹¦Äܲ»±äÇé¿öÏ£¬ÊÇ·ñ¿ÉÓÃSHRÖ¸Áî´úÌæSHLÖ¸Áî? ½â£º

XOR BL£¬BL £»(BL)=0

MOV AX£¬DA1 £»(AX)= 1F28H

LOP£ºAND AX£¬AX £»Ê¹±ê־λ¸ù¾ÝAXÖÐÄÚÈݶø±ä»¯ JZ EXIT £»Èô(AX)=0£¬ÔòתEXIT

SHL AX£¬1 £»Âß¼­×óÒÆ£±Î»£¬ÒƳöλ½øÈëCF JNC LOP

INC BL £»ÈçCF=1£¬ÔòBL¼Ó£±

JMP LOP

EXIT£ºMOV DA2£¬BL

£¨1£©ÈçÉÏ·ÖÎö£¬¸Ã³ÌÐò¶Î±»ÓÃÀ´Í³¼ÆDA1ÖÐÄÚÈݺ¬¶þ½øÖÆ1µÄ¸öÊý¡£DA2×Ö½Úµ¥ÔªÄÚÈÝΪDA1ÖÐÄÚÈݺ¬¶þ½øÖÆ¡°1¡±µÄ¸öÊý£¬Ò²¼´(DA2)=7¡£ £¨2£©ÎÞÂÛÂß¼­×óÒÆ»¹ÊÇÂß¼­ÓÒÒÆÖ¸Á¾ùÄܽ«DA1ÖеĶþ½øÖÆÊýλһλһλµØÒƵ½CFÖУ¬Æä³ÌÐò¶Î¹¦Äܲ»±ä£¬¹Ê¿ÉÓÃSHRÖ¸Áî´úÌæSHLÖ¸Áî¡£ 4£®·ÖÎöÏÂÁгÌÐò¶Î£¬»Ø´ðËùÌáÎÊÌâ¡£ DA1 DB 87H

DA2 DB ? £®£®£®£®£®£® XOR AH£¬AH MOV AL£¬DA1 MOV CL£¬4 SHR AL£¬CL

22

MOV DL£¬10

MUL DL

MOV BL£¬DA1 AND BL£¬0FH ADD AL£¬BL MOV DA2£¬AL ÊÔÎÊ£º£¨1£©³ÌÐò¶ÎÖ´Ðкó£¬DA2×Ö½Úµ¥ÔªÄÚÈÝÊÇʲô£¿

£¨2£©ÔÚ³ÌÐò¶Î¹¦Äܲ»±äÇé¿öÏ£¬ÊÇ·ñ¿ÉÓÃSARÖ¸Áî´úÌæSHRÖ¸Áî? ½â£º P73-74

XOR AH£¬AH £»(AH)=0

MOV AL£¬DA1 £»(AL)= 87H MOV CL£¬4 £»

SHR AL£¬CL £» È¡ALµÄ¸ßËÄ룬(AL)=07H MOV DL£¬10

MUL DL £»¸ßËÄλµÄÊý×Ö³ËÒÔ10 MOV BL£¬DA1

AND BL£¬0FH £»È¡DA1µÄµÍËÄλ ADD AL£¬BL

MOV DA2£¬AL £»Ïà¼ÓµÃµ½£¨DA2£©=57H

·ÖÎö£º½«DA1µÄ¸ßËÄλ³ËÒÔ10£¬ÔÙ¼ÓÉϵÍËÄλ£¬Êµ¼ÊÍê³ÉÁ˽«DA1ÖеÄBCDÂëת»»Îª¶þ½øÖƵÄÔËËã¡£

ÓÉ·ÖÎöµÃ£º(DA2)=57H¡£

ÔÚ³ÌÐò¶Î¹¦Äܲ»±äÇé¿öÏ£¬²»ÄÜÓÃSARÖ¸Áî´úÌæSHRÖ¸ÁÒòΪSAR²»Äܽ«ALµÄ¸ßËÄλ´ÓÆäÖзÖÀë³öÀ´¡£ 5£® £®£®£®£®£®£®

DA_B DB 0CH£¬9£¬8£¬0FH£¬0EH£¬0AH£¬2£¬3£¬7£¬4 £®£®£®£®£®£® XOR AX£¬ AX

XOR CL£¬CL XOR BX£¬BX

LOP£º TEST DA_B[BX]£¬01H JE NEXT

ADD AL£¬DA_B[BX] INC AH

NEXT£ºINC BX INC CL CMP CL£¬10

JNE LOP ÊÔÎÊ£º£¨1£©ÉÏÊö³ÌÐò¶ÎÖ´Ðкó£¬AH¡¢AL¼Ä´æÆ÷ÖеÄÄÚÈÝÊÇʲô£¿ £¨2£©Èô½«¡°JE NEXT¡±Ö¸Áî¸ÄΪ¡°JNE NEXT¡±£¬ÄÇôAH¡¢AL¼Ä´æÆ÷ÖеÄÄÚ

23

ÈÝÓÖÊÇʲô£¿ ½â£º

XOR AX£¬AX £»(AX)=0

XOR CL£¬CL £»(CL)=0 XOR BX£¬BX £»(BX)=0 LOP£º TEST DA_B[BX]£¬01H JE NEXT £»ÈôDA_B[BX]Öжþ½øÖÆÊýµÄ×îµÍλΪ0£¬×ªNEXT ADD AL£¬DA_B[BX] £»·ñÔòÀÛ¼Ó¸ÃÊýµ½AL INC AH £»Í³¼ÆÆæÊý¸öÊýµ½AH

NEXT£ºINC BX £»ÐÞ¸ÄÖ¸Õ룬ָÏòϸö¶þ½øÖÆÊý

INC CL CMP CL£¬10

JNE LOP £»¶Ô10¸öÊýÍê³ÉÒÔÉϲÙ×÷ºó£¬Í£Ö¹

·ÖÎö¿ÉÖª£¬¸Ã³ÌÐòʵ¼ÊÊǶÔ10¸öÊýÖÐµÄÆæÊýÇóºÍ¡£ËùÒÔ£¬£¨AH£©=4£»£¨AL£©=34¡£ Èô½«¡°JE NEXT¡±Ö¸Áî¸ÄΪ¡°JNE NEXT¡±£¬Ôò³ÌÐò¹¦ÄܱäΪͳ¼ÆÅ¼ÊýµÄ¸öÊý£¬²¢ÀÛ¼ÓËüÃǵÄÖµ£¬¹Ê£¨AH£©=6£»£¨AL£©=50¡£

6£®±àдÍêÕûµÄ»ã±àÔ´³ÌÐò£¬Í³¼ÆÏÂÃæ¶¨ÒåµÄÊý¾Ý»º³åÇøBUFÖУ¬·ÇÊý×Ö×Ö·ûµÄ¸öÊý£¬·ÅÈëCOUNTµ¥Ôª¡£Éè¸ÃÊý¾Ý»º³åÇø×îºóÒ»¸ö×Ö·ûΪ¡®$¡¯£¬ Êý×Ö×Ö·ûÖ¸ ¡®0¡¯~¡®9¡¯¡£ DSEG SEGMENT P30

BUF DB ¡®4334as432bbGGGn34kkkk$¡¯

COUNT DW 0 DSEG ENDS ½â£º·ÖÎö£º£¨1£©ÓÉÓÚ³ÌÐò±ØÐë·´¸´µØ´ÓBUFÖÐÈ¡³ö×Ö·û²¢Åжϣ¬¹Ê²ÉÓÃÑ­»·³ÌÐò½á¹¹¡£ £¨2£©BUF»º³åÇøµÄ×îºóÒ»¸ö×Ö·ûΪ¡®$¡¯£¬¹Ê²ÉÓÃÌõ¼þÅжϷ¨À´¿ØÖÆÑ­»·½áÊø¡£ £¨3£©·ÇÊý×Ö×Ö·ûµÄ¸öÊýÊÇÖ¸ASCIIÂëСÓÚ30H»ò´óÓÚ39HµÄ×Ö·û¡£ ³ÌÐòÉè¼ÆÈçÏÂ:

DSEG SEGMENT

BUF DB ¡®4334as432bbGGGn34kkkk$¡¯

SUM DW 0 DSEG ENDS

SSEG SEGMENT STACK STK DB 100 DUP (?) SSEG ENDS CSEG SEGMENT

ASSUME DS£ºDSEG£¬SS£ºSSEG£¬CS£ºCSEG START£º MOV AX£¬DSEG MOV DS£¬AX

MOV SI£¬OFFSET BUF MOV DX£¬0 LP0£º MOV AL£¬[SI]

24

CMP AL£¬¡®$¡¯ JE EXIT CMP AL£¬¡®0¡¯ JNC LP1 INC DX JMP LP2

LP1£º CMP AL£¬3AH JC LP2 INC DX LP2£º INC SI

JMP LP0

EXIT£º MOV COUNT£¬DX MOV AH£¬4CH INT 21H CSEG ENDS

END START

4.2 ϰ Ìâ

1£®Ñ¡ÔñÌâ

£¨1£©ÔÚ¼ÆËã»úÄÚ²¿£¬¼ÆËã»úÄܹ»Ö±½ÓÖ´ÐеijÌÐòÓïÑÔÊÇ£¨ £©¡£K4.1 A£®»ã±àÓïÑÔ B£®¸ß¼¶ÓïÑÔ C£®»úÆ÷ÓïÑÔ D£®CÓïÑÔ £¨2£©Ö´ÐÐÏÂÃæµÄ³ÌÐò¶Îºó£¬ BXµÄÄÚÈÝÊÇ£¨ £©¡£K4.2

NUM= 100

MOV BX£¬ NUM NE 50

A£®50 B£®0 C£®0FFFFH D£®1 £¨3£©Êý¾Ý¶¨Òå BUF DW 1£¬2£¬3£¬4 K4.2

Ö´ÐÐÖ¸ÁîMOV CL£¬SIZE BUFºó£¬CL¼Ä´æÆ÷µÄÄÚÈÝÊÇ£¨ £©¡£ A£®1 B£®0 C£®0FFFFH D£®2

£¨4£©¼ÙÉèVARΪ±äÁ¿£¬ÔòÖ¸ÁîMOV SI£¬OFFSET VARµÄÔ´²Ù×÷ÊýµÄѰַ·½Ê½ÊÇ£¨K4.3£© A£®¼ä½ÓѰַ B£®´æ´¢Æ÷Ѱַ C£®¼Ä´æÆ÷Ѱַ D£®Á¢¼´Ñ°Ö· £¨5£©Êý¾Ý¶¨ÒåBUF DB ¡®1234¡¯£¬Ö´ÐÐÖ¸ÁîMOV CL£¬ LENGTH BUFºó£¬CL¼Ä´æÆ÷µÄÄÚÈÝÊÇ£¨ £©K4.2

A£® 1 B£®2 C£®3 D£®4 £¨6£©ÉèÊý¾Ý¶Î¶¨ÒåÈçÏ£º DATA SEGMENT ORG 0100H X1 DB 25£¬¡®25¡¯ X2 DW ? Y1 EQU X1

25


΢»úÔ­ÀíϰÌ⼯ÒÔ¼°´ð°¸µÚ¶þ°æ(5).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ ÏÂÔØÊ§°Ü»òÕßÎĵµ²»ÍêÕû£¬ÇëÁªÏµ¿Í·þÈËÔ±½â¾ö£¡

ÏÂһƪ£º²âÁ¿¼àÀíʵʩϸÔò 005(µÚÒ»°æ2013.1)

Ïà¹ØÔĶÁ
±¾ÀàÅÅÐÐ
¡Á ×¢²á»áÔ±Ãâ·ÑÏÂÔØ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩

ÂíÉÏ×¢²á»áÔ±

×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£º QQ£º