正文

汇编 分支程序设计2006-11-13 10:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hammers/20266.html

分享到:

实验内容: 在内存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  

阅读(3164) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册