IBM-PC»ã±àÓïÑÔ³ÌÐòÉè¼Æ´ð°¸£¨µÚ2°æ£© ÏÂÔØ±¾ÎÄ

MOV DI, 0

MOV AX, A [SI] £»È¡AÊý×éÖеÄÒ»¸öÊý

LOOP2: CMP B [DI], AX £»ºÍBÊý×éÖеÄÊýÏàµÈÂð£¿

JNE NO

MOV C [BX], AX £»ÏàµÈ´æÈëCÊý×éÖÐ ADD BX, 2

NO: ADD DI, 2

LOOP LOOP2 ADD SI, 2 POP CX LOOP LOOP1 RET

MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

END START

5.20 ÉèÔÚA¡¢BºÍCµ¥ÔªÖÐ·Ö±ð´æ·Å×ÅÈý¸öÊý¡£ÈôÈý¸öÊý¶¼²»ÊÇ0£¬ÔòÇó³öÈýÊýÖ®ºÍ´æ·ÅÔÚDµ¥ÔªÖУ»

ÈôÆäÖÐÓÐÒ»¸öÊýΪ0£¬Ôò°ÑÆäËüÁ½µ¥ÔªÒ²Çå0¡£Çë±àд´Ë³ÌÐò¡£ ´ð£º³ÌÐòÈçÏ£º

DSEG SEGMENT A DW ? B DW ? C DW ? D DW 0 DSEG ENDS

£»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS £»ÉèÖ÷µ»ØDOS

SUB AX, AX PUSH AX

MOV AX, DSEG MOV DS, AX £»¸øDS¸³Öµ

BEGIN: CMP A, 0

JE NEXT CMP B, 0 JE NEXT CMP C, 0 JE NEXT MOV AX, A ADD AX, B ADD AX, C MOV D, AX JMP SHORT EXIT

NEXT: MOV A, 0

MOV B, 0 MOV C, 0

EXIT: RET MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

END START 5.21 ÊÔ±àдһ³ÌÐò£¬ÒªÇó±È½ÏÊý×éARRAYÖеÄÈý¸ö16λ²¹ÂëÊý£¬²¢¸ù¾Ý±È½Ï½á¹ûÔÚÖÕ¶ËÉÏÏÔʾÈçÏÂ

ÐÅÏ¢£º

(1) Èç¹ûÈý¸öÊý¶¼²»ÏàµÈÔòÏÔʾ0£»

(2) Èç¹ûÈý¸öÊýÓжþ¸öÊýÏàµÈÔòÏÔʾ1£» (3) Èç¹ûÈý¸öÊý¶¼ÏàµÈÔòÏÔʾ2¡£ ´ð£º³ÌÐòÈçÏ£º

DSEG SEGMENT ARRAY DW 3 DUP (?) DSEG ENDS

£»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS £»ÉèÖ÷µ»ØDOS

SUB AX, AX PUSH AX

MOV AX, DSEG MOV DS, AX £»¸øDS¸³Öµ

BEGIN: LEA SI, ARRAY

MOV DX, 0 £»(DX)ÓÃÓÚ´æ·ÅËùÇóµÄ½á¹û MOV AX, [SI] MOV BX, [SI+2] CMP AX, BX £»±È½ÏµÚÒ»ºÍµÚ¶þÁ½¸öÊýÊÇ·ñÏàµÈ JNE NEXT1 INC DX

NEXT1: CMP [SI+4], AX £»±È½ÏµÚÒ»ºÍµÚÈýÁ½¸öÊýÊÇ·ñÏàµÈ

JNE NEXT2 INC DX

NEXT2: CMP [SI+4], BX £»±È½ÏµÚ¶þºÍµÚÈýÁ½¸öÊýÊÇ·ñÏàµÈ

JNE NUM INC DX

NUM: CMP DX, 3

JL DISP DEC DX

DISP: ADD DL, 30H £»×ª»»ÎªASCIIÂë

MOV AH, 2 £»ÏÔʾһ¸ö×Ö·û INT 21H RET

MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

END START

5.22 ´Ó¼üÅÌÊäÈëһϵÁÐ×Ö·û(ÒԻسµ·û½áÊø)£¬²¢°´×Öĸ¡¢Êý×Ö¡¢¼°ÆäËü×Ö·û·ÖÀà¼ÆÊý£¬×îºóÏÔʾ³öÕâÈý

ÀàµÄ¼ÆÊý½á¹û¡£ ´ð£º³ÌÐòÈçÏ£º

DSEG SEGMENT

ALPHABET DB ?ÊäÈëµÄ×Öĸ×Ö·û¸öÊýΪ£º¡®, ?$¡® NUMBER DB ?ÊäÈëµÄÊý×Ö×Ö·û¸öÊýΪ£º¡®, ?$¡® OTHER DB ?ÊäÈëµÄÆäËü×Ö·û¸öÊýΪ£º¡®, ?$¡® CRLF DB 0DH, 0AH, ?$¡® DSEG ENDS

£»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS £»ÉèÖ÷µ»ØDOS

SUB AX, AX PUSH AX

MOV AX, DSEG

MOV

BEGIN:

DS, AX £»¸øDS¸³Öµ £»×Öĸ×Ö·û¼ÆÊýÆ÷ £»Êý×Ö×Ö·û¼ÆÊýÆ÷ £»ÆäËü×Ö·û¼ÆÊýÆ÷ £»ÊäÈëÒ»¸ö×Ö·û £»Êǻسµ·ûÂ𣿠£»<Êý×Ö0Â𣿠£»ÊÇÆäËü×Ö·û

£»>Êý×Ö9Âð£¿

INPUT:

OTHER: NEXT1:

NEXT2:

NEXT3:

NEXT4:

NEXT5:

MOV BX, 0 MOV SI, 0 MOV DI, 0 MOV AH, 1 INT 21H CMP AL, 0DH JE DISP CMP AL, 30H JAE NEXT1 INC DI JMP SHORT INPUT CMP AL, 39H JA NEXT2 INC SI JMP SHORT INPUT CMP AL, 41H JAE NEXT3 JMP SHORT OTHER CMP AL, 5AH JA NEXT4 INC BX JMP SHORT INPUT CMP AL, 61H JAE NEXT5 JMP SHORT OTHER CMP AL, 7AH JA SHORT OTHER INC BX JMP SHORT INPUT

£»ÊÇÊý×Ö×Ö·û

£»<×ÖĸAÂð£¿

£»ÊÇÆäËü×Ö·û

£»>×ÖĸZÂ𣿠£»ÊÇ×Öĸ×Ö·ûA~Z

£»<×ÖĸaÂð£¿

£»ÊÇÆäËü×Ö·û £»>×ÖĸzÂ𣿠£»ÊÇÆäËü×Ö·û £»ÊÇ×Öĸ×Ö·ûa~z

LEA DX, ALPHABET CALL DISPLAY LEA DX, NUMBER MOV BX, SI CALL DISPLAY LEA DX, OTHER MOV BX, DI CALL DISPLAY RET

MAIN ENDP

£»-------------------------------------------------------------------------- DISPLAY PROC NEAR

MOV AH, 09H £»ÏÔʾ×Ö·û´®¹¦Äܵ÷Óà INT 21H

CALL BINIHEX £»µ÷°ÑBXÖжþ½øÖÆÊýת»»Îª16½øÖÆÏÔʾ×Ó³ÌÐò LEA DX, CRLF MOV AH, 09H £»ÏÔʾ»Ø³µ»»ÐÐ INT 21H RET

DISPLAY ENDP

£»-------------------------------------------------------------------------- BINIHEX PROC NEAR £»½«BXÖжþ½øÖÆÊýת»»Îª16½øÖÆÊýÏÔʾ×Ó³ÌÐò

MOV CH, 4

ROTATE: MOV CL, 4

ROL BX, CL

DISP:

MOV DL, BL AND DL, 0FH ADD DL, 30H CMP DL, 3AH £»ÊÇA~FÂ𣿠JL PRINT_IT ADD DL, 07H

PRINT_IT: MOV AH, 02H £»ÏÔʾһ¸ö×Ö·û

INT 21H DEC CH JNZ ROTATE RET

BINIHEX ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

END START

5.23 ÒѶ¨ÒåÁËÁ½¸öÕûÊý±äÁ¿AºÍB£¬ÊÔ±àд³ÌÐòÍê³ÉÏÂÁй¦ÄÜ£º

(1) ÈôÁ½¸öÊýÖÐÓÐÒ»¸öÊÇÆæÊý£¬Ôò½«ÆæÊý´æÈëAÖУ¬Å¼Êý´æÈëBÖУ» (2) ÈôÁ½¸öÊýÖоùÎªÆæÊý£¬Ôò½«Á½Êý¼Ó1ºó´æ»ØÔ­±äÁ¿£» (3) ÈôÁ½¸öÊýÖоùΪżÊý£¬ÔòÁ½¸ö±äÁ¿¾ù²»¸Ä±ä¡£ ´ð£º³ÌÐòÈçÏ£º

DSEG SEGMENT A DW £¿ B DW £¿ DSEG ENDS

£»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR

ASSUME CS: CSEG, DS: DSEG

START: PUSH DS £»ÉèÖ÷µ»ØDOS

SUB AX, AX PUSH AX

MOV AX, DSEG MOV DS, AX £»¸øDS¸³Öµ

BEGIN: MOV AX, A

MOV BX, B XOR AX, BX

TEST AX, 0001H £»AºÍBÍ¬ÎªÆæÊý»òżÊýÂ𣿠JZ CLASS £»AºÍB¶¼ÎªÆæÊý»òżÊý£¬×ª×ß TEST BX, 0001H JZ EXIT £»BΪżÊý£¬×ª×ß XCHG BX, A £»AΪżÊý£¬½«ÆæÊý´æÈëAÖÐ MOV B, BX £»½«Å¼Êý´æÈëBÖÐ JMP EXIT

CLASS: TEST BX, 0001H £»AºÍB¶¼ÎªÆæÊýÂð£¿

JZ EXIT £»AºÍBͬΪżÊý£¬×ª×ß INC B INC A

EXIT: RET MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

END START

5.24 ¼ÙÉèÒѱàÖÆºÃ5¸ö¸èÇú³ÌÐò£¬ËüÃǵĶεØÖ·ºÍÆ«ÒÆµØÖ·´æ·ÅÔÚÊý¾Ý¶ÎµÄÌøÔ¾±íSINGLISTÖС£ÊÔ

±àÖÆÒ»³ÌÐò£¬¸ù¾Ý´Ó¼üÅÌÊäÈëµÄ¸èÇú±àºÅ1~5£¬×ªÈ¥Ö´ÐÐÎå¸ö¸èÇú³ÌÐòÖеÄijһ¸ö¡£ ´ð£º³ÌÐòÈçÏ£º