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һ¸ö¡£ ´ð£º³ÌÐòÈçÏ£º