MOV AX,[BX] LOOP2: INC BX INC BX DEC CX JNZ LOOP1 MOV [MAX],AX RET MAIN ENDP CODE ENDS END MAIN
8.试编制程序,分别对NUM中各数统计出有多少个20,余下有多少个5,再余下有多少个2,再余下有多少个1。统计的各数分别存放在NUM20,NUM5,NUM2, NUM1的对应位置中。程序要求用主程序子程序形式编制。 程序如下。
DATA SEGMENT
NUM DB 3,5,1,2,20,20,5,1,1,2 COUNT DB 10 ;10为数据个数
NUM20-1 DB 4 DUP (0) ;统计20;5;2;1的个数 CMPNUM DB 20,5,2,1 DATA ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS ,AX
MOV SI,OFFSET NUM
MOV BX ,OFFSET NUM20-1 MOV CX ,COUNT MOV DI , 0 AGAIN MOV AL,[SI] CALL CMPDATA INC SI
LOOP AGAIN MOV AH 4CH INT 21H
;比较子程序,将AL的数与20,5,2,1比较,如果与其中之一相等,将NUM20-1的对应单元+1
CMPDATA PROC NEAR PUSH CX
PUSH DI
MOV CX , 3
LOOP1: CMP AX ,[BX+DI+4] JE NEXT INC DI LOOP LOOP1
JMP BACK
NEXT: ADD [BX][DI] ,1 BACK: POP DI POP CX CMPDADT ENDP CODE ENDS
END START