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 ·Ö£¬£¼