实验内容: 在内存Score缓冲区中存放有100个学生的成绩数据,为无符号字节数。假设学生成绩在[90,100]区间为优秀,在[80,90)区间为良好,在[70,80)区间为一般,在[60,70)区间为及格,在[0,60)区间为不及格,要求统计出不及格,及格,一般,良好和优秀的人数,分别送入Notpassed,Passed,Good,Better和Best字节单元。 1. 用普通的跳转语句实现上述功能。 2. 用地址表法和转移表实现。 ******************************************* DATASEG SEGMENT NOTPASSED DB 0 PASSED DB 0 GOOD DB 0 BETTER DB 0 BEST DB 0 SCORE DB 90,80,75,30,64,95 DUP(70)DATASEG ENDS CODESEG SEGMENT ASSUME DS:DATASEG,CS:CODESEGSTART: MOV AX,DATASEG MOV DS,AX MOV BX,0 MOV CX,100AGAIN: CMP SCORE[BX],90 JB NEXT INC BEST ;if >= 90 , Best! JMP DONENEXT: CMP SCORE[BX],80 ;If got here, must <90! JB NEXT1 INC BETTER ;if >=80 , Better JMP DONENEXT1: CMP SCORE[BX],70 ;and so on...... JB NEXT2 INC GOOD JMP DONENEXT2: CMP SCORE[BX],60 JB NEXT3 INC PASSED ;Passed JMP DONENEXT3: INC NOTPASSED ;Not passedDONE: INC BX LOOP AGAIN MOV AH,4CH ;Oh,mum,it has done,we need go home. INT 21HCODESEG ENDS END START ********************************************************* DSEG SEGMENT NOTPASSED DB 0 PASSED DB 0 GOOD DB 0 BETTER DB 0 BEST DB 0 SCORE DB 100,90,88,98,85,82,78,45,92 DUP(90) AddrTbl DW Func0,Func1,Func2,Func3,Func4,Func5DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEGSTART: MOV AX,DSEG MOV DS,AX MOV SI,0 MOV CX,100AGAIN: MOV DL,10 MOV AL,SCORE[SI] CMP AL,60 JB func0 SUB AL,50 MOV AH,0 DIV DL MOV BL,AL MOV BH,0 shl bx,1 JMP AddrTbl[BX] Func0: INC NOTPASSED JMP DONE Func1: INC PASSED JMP DONE Func2: INC GOOD JMP DONE Func3: INC BETTER JMP DONE Func4: INC BEST JMP DONE Func5: INC BEST JMP DONEDONE: INC SI LOOP AGAIN MOV AH,4CH INT 21HCSEG ENDS END START ******************************************************* DATASEG SEGMENT NOTPASSED DB 0 PASSED DB 0 GOOD DB 0 BETTER DB 0 BEST DB 0 SCORE DB 100,70,88,45,96 DUP(90)DATASEG ENDS CODESEG SEGMENT ASSUME DS:DATASEG,CS:CODESEGSTART: MOV AX,DATASEG MOV DS,AX MOV CX,100 MOV SI,0 AGAIN: MOV DL,10 MOV AL,SCORE[SI] CMP AL,60 JB Func0 SUB AL,50 MOV AH,0 DIV DL MOV AH,0 MOV BX,AX SHL AX,1 ADD BX,AX ADD BX,OFFSET JmpTbl JMP BX JmpTbl: jmp NEAR PTR func0 jmp NEAR PTR func1 jmp NEAR PTR func2 jmp NEAR PTR func3 jmp NEAR PTR func4 jmp NEAR PTR func5 func0: INC NOTPASSED JMP DONE func1: INC PASSED JMP DONE func2: INC GOOD JMP DONE func3: INC BETTER JMP DONE func4: INC BEST JMP DONE func5: INC BEST JMP DONE DONE: INC SI LOOP AGAIN MOV AH,4CH INT 21HCODESEG ENDS END START

评论