΢»úÔ­Àí¼°Ó¦ÓÃÆÚÄ©¿¼ÊÔÌâ ÏÂÔØ±¾ÎÄ

INC DI

LOOP NEXT MOV AX,4C00H INT 21H SUB1 PROC PUSH AX MOV DX,0

MOV CX,COUNT AGAIN: RCR AL,1 JNC L INC DX

L: LOOP AGAIN POP AX TEST DX,01 JZ QUIT OR AL,80H QUIT: RET SUB1 ENDP CODE ENDS END START

17£®(19)ÊÔ±àд³ÌÐòʵÏÖ½«¼üÅÌÊäÈëµÄСд×Öĸת»»³É´óд×Öĸ²¢Êä³ö¡£ ½â´ð£º

DATA SEGMENT

MESS DB 'THE INPUT IS NOT CORRECT.',0DH,0AH,'$' DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX

NEXT: MOV AH,01H INT 21H CMP AL,'Q' JZ EXIT

CMP AL,'a' JB ERROR CMP AL,'z' JA ERROR SUB AL,20H MOV AH,02H MOV DL,AL INT 21H JMP NEXT

ERROR: MOV AH,09H LEA DX,MESS INT 21H

JMP NEXT

EXIT: MOV AX,4C00H INT 21H CODE ENDS END START

18£®´Ó¼üÅ̽ÓÊÕ20 ¸ö×Ö·û£¬°´¼üÈë˳Ðò²éÕÒ×î´óµÄ×Ö·û£¬²¢ÏÔʾÊä³ö¡£ ½â´ð£º

DATA SEGMENT DAT DB 20 DUP(?) DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX

;´Ó¼üÅ̽ÓÊÕ20 ¸ö×Ö·û£¬²¢ËÍDAT Öб£´æ LEA SI,DAT MOV CX,20

NEXT: MOV AH,01H INT 21H MOV [SI],AL INC SI

LOOP NEXT

;±È½Ï20 ¸ö×Ö·ûÖеÄ×î´ó×Ö·û£¬²¢·ÅÈëAL ÖÐ MOV CX,19

LEA SI,DAT MOV AL,[SI] INC SI

NEXT1: CMP AL,[SI] JAE LL

MOV AL,[SI] LL: INC SI LOOP NEXT1

;½«×î´óµÄ×Ö·ûµÄASCII ÂëÓÉAL ËÍDL ÏÔʾ MOV DL,AL MOV AH,2H INT 21H ;·µ»ØDOS

MOV AX,4C00H INT 21H CODE ENDS END START

19£®(29)±àд»ã±à³ÌÐò£¬½ÓÊÕ´Ó¼üÅÌÊäÈëµÄ10 ¸öÊý£¬ÊäÈë»Ø³µ·û±íʾ½áÊø£¬È»ºó½«ÕâЩÊý

¼ÓÃܺó´æÓÚBUFF »º³åÇøÖС£¼ÓÃܱíΪ£º

ÊäÈëÊý×Ö£º0£¬1£¬2£¬3£¬4£¬5£¬6£¬7£¬8£¬9£»ÃÜÂëÊý×Ö£º7£¬5£¬9£¬1£¬3£¬6£¬8£¬0£¬2£¬4 ½â´ð£º

DATA SEGMENT BUFF DB 10 DUP(?)

TABLE DB 7,5,9,1,3,6,8,0,2,4 DATA ENDS ;

STACK SEGMENT STACK ENDS ;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX ;

LEA DI,BUFF

NEXT: MOV AH,01H

INT 21H£»´Ó¼üÅÌÉϽÓÊÕµ¥¸ö×Ö·û

CMP AL,0AH£»Óë0AH ±È£¬ÅÐÊÇ·ñÒª½áÊø JZ EXIT

SUB AL,30H£»·ñÔò£¬½«0~9 µÄASCII Âëת»»ÎªÊ®½øÖÆÊý LEA BX,TABLE

XLAT£»Óòé±íÖ¸Áî½øÐмÓÃÜ MOV [DI],AL INC DI JMP NEXT

;Í˳ö²¢·µ»ØDOS EXIT: MOV AX,4C00H INT 21H CODE ENDS END START

20£®(23)ÓÐÒ»¸ö100 ¸ö×Ö½ÚµÄÊý¾Ý±í£¬±íÄÚÔªËØÒѰ´´Ó´óµ½Ð¡µÄ˳ÐòÅÅÁкã¬ÏÖ¸ø¶¨Ò»ÔªËØ£¬

ÊÔ±à³ÌÐòÔÚ±íÄÚ²éÕÒ£¬Èô±íÄÚÒÑÓдËÔªËØ£¬Ôò½áÊø£»·ñÔò£¬°´Ë³Ðò½«´ËÔªËØ²åÈë±íÖÐÊʵ±

µÄλÖ㬲¢ÐÞ¸Ä±í³¤¡£ ½â´ð£º

;µ÷ÊÔʱÓÃÁËÊ®¸öÊý¾Ý,±¾³ÌÐòÒÑͨ¹ýµ÷ÊÔ DATA SEGMENT TABLE_LEN DB ? X DB 99H

TABLE DB 98H,90H,80H,70H,60H,50H,40H,30H,20H,10H;X1,X2,...,X100 COUNT EQU $-TABLE DATA ENDS ;

STACK SEGMENT STACK ENDS

;

CODE SEGMENT

ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX

;½«Êý×éÖеÄ100H ¸öÊýÇóºÍºóÇ󯽾ùÖµ MOV DX,0000 LEA SI,TABLE MOV CX,COUNT

MOV AL,X;¼ÙÉèX Ϊ¸ø¶¨ÔªËØ ;ÔÚTABLE ÖÐÊÇ·ñÓÐÔªËØX AGAIN: MOV BL,[SI] CMP BL,AL JZ EXIT INC SI

LOOP AGAIN

;X ÔªËØ²»ÔÚ±íÖУ¬½«X ²åÈë±íÖÐÊʵ±Î»Öà LEA SI,TABLE

MOV DI,SI;DI Ϊ±íµÄÄ©µØÖ· ADD DI,COUNT-1

MOV CX,COUNT AGAIN0:MOV BL,[SI] CMP BL,AL JA NEXT0

BB: CMP DI,SI JZ AA

MOV AH,[DI]

MOV [DI+1],AH;½«±ÈX СµÄÔªËØºóÒÆÒ»Î» DEC DI JMP BB

AA: MOV [DI+1],BL MOV [DI],AL

MOV TABLE_LEN,COUNT+1 JMP EXIT

NEXT0: INC SI LOOP AGAIN0

MOV [DI+1],AL;Èô±È½Ïºó£¬X ÔªËØÎª×îС£¬Ôò·ÅÔÚ×îÄ©µ¥ÔªµÄºóÃæ£¬²¢½«±í³¤¼Ó1

MOV TABLE_LEN,COUNT+1 ;Í˳ö²¢·µ»ØDOS EXIT: MOV AX,4C00H INT 21H CODE ENDS END START

21£®(26)ÔÚµ±Ç°Êý¾Ý¶Î£¨DS£©£¬Æ«ÒƵØÖ·ÎªDATAB ¿ªÊ¼µÄ˳Ðò80 ¸öµ¥ÔªÖУ¬´æ·Å×Åij°à80

¸öͬѧijÃÅ¿¼ÊԳɼ¨¡£°´ÒªÇó±àд³ÌÐò£º

¢Ù±àд³ÌÐòͳ¼Æ¡Ý90 ·Ö£»80 ·Ö¡«89 ·Ö£»70 ·Ö¡«79 ·Ö£»60 ·Ö¡«69 ·Ö£¬£¼