11284023+实验3+统计学生成绩

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三、统计学生成绩

一、实验目的

1、熟悉汇编语言各种跳转指令的功能和用法。

2、学会用程序流程图来分析和设计分支程序。

3、通过顺序和分支结构来熟悉汇编语言程序设计的主要方法。

4、了解和掌握程序设计过程中算法的选择。

二、实验内容

设有20个学生成绩分别56、78、67、40、87、99、63、51、74、100,90,80,68、88、55、66、84、96、45、73分。编写程序实现统计低于60分、60-69分、70-79分、80-89分、90-99分及100分的人数,并分别存放在s5、s6、s7、s8、s9、s10单元中。

三、算法及截图:

DATA SEGMENT

BUF DB 56,78,67,40,87,99,63,51,74,100,90,80,68,88,55,66,84,96,45,73

S5 DB ?

S6 DB ?

S7 DB ?

S8 DB ?

S9 DB ?

S10 DB ?

COUNT EQU $-BUF

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,0

MOV AH,0

MOV BL,0

MOV BH,0

MOV CL,0

MOV CH,0

LEA SI,BUF;目标地址传送指令:将一个近地址指针写入到指定的寄存器。将存储器中BUF所指的地址传送给S1

LOPA: CMP BUF[SI],3CH

JNAE L1 ;BUF[S1]<=3CH

JAE L2 ;BUF[S1]>3CH

L1: INC AL

;加1指令INC

指令功能目标操作数AL+1

INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数。INC 指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位。

MOV S5,AL

JMP LOPB

LOPB: INC SI

CMP SI,COUNT-7

JBE LOPA

JMP EXIT

L2: CMP BUF[SI],46H

JNAE L3

JAE L4

L3: INC AH

MOV S6,AH

JMP LOPB

L4: CMP BUF[SI],50H

JNAE L5

JAE L6

L5: INC BL

MOV S7,BL

JMP LOPB

L6: CMP BUF[SI],5AH

JNAE L7

JAE L8

L7: INC BH

MOV S8,BH

JMP LOPB

L8: CMP BUF[SI],64H

JNAE L9

JAE L10

L9: INC CL

MOV S9,CL

JMP LOPB

L10: INC CH

MOV S10,CH

JMP LOPB

EXIT: MOV AH,4CH

INT 21H

CODE ENDS

END START

四实验步骤

1、设计编写代码.

2、在EDIT或其它编辑方式下输入源程序,并以XXX.ASM名保存。

3、用MASM 文件汇编源程序,C>MASM XXX; 如有错误,回到第一步,如没错误,到第

三步.

4、用LINK连接程序,C>LINK XXX; 形成XXX.EXE文件。

5、在DEBUG环境下运行调试程序:C> DEBUG XXX.EXE回车,使用U命令反汇编自己

编写的程序,查找到断点地址,用G命令使程序执行到完成初始化的功能;此时使用D 命令查看数据段的内容,是否有学生的分数并查看s5、s6、s7、s8、s9、s10字节变量的地址及内容。然后查找程序功能结束的命令对应的断点地址,用G命令使程序运行到断点;此时再使用D命令查看存储各分数段的学生人数是否正确。如正确,调试结束;

否则,从新单步调试查找错误。再从第一步修改源程序开始。

五、实验总结

通过本次实验,我熟悉了汇编语言各种跳转指令的功能和用法。学会用程序流程图来分析和设计分支程序。通过顺序和分支结构来熟悉汇编语言程序设计的主要方法。了解和掌握了程序设计过程中算法的选择。

六、思考题

1、请问存放学生分数的变量物理地址是什么?

0000H到0013H

0014,0015,0016,0017,0018,0019

s1对应的内存是0014,后面依次为0015,0016…0019:

2、请问各分数段的变量地址是多少?

0014,0015,0016,0017,0018,0019

3、如果想在屏幕上显示结果:

在debug 里输入指令D 0014 0019 就会显示各组的count。

相关文档
最新文档