汇编语言 分支设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二分支程序设计
题目1.统计学生成绩。
要求:设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并分别存放到s5、s6、s7、s8、s9及s10单元中
DSEG SEGMENT
grade DW 56,69,84,82,73,88,99,63,100,80
s5 DW 0
s6 DW 0
s7 DW 0
s8 DW 0
s9 DW 0
s10 DW 0
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
start: MOV AX, dseg
MOV DS, AX
MOV CX,10
MOV BX,OFFSET grade
Compare :MOV AX, [BX]
CMP AX,60
JL five
CMP AX,70
JL six
CMP AX,80
JL seven
CMP AX,90
JL eight
CMP AX,100
JNE nine
INC s10
JMP change_addr
nine: INC s9
JMP SHORT change_addr
eight: INC s8
JMP SHORT change_addr
seven: INC s7
JMP SHORT change_addr
six: INC s6
JMP SHORT change_addr
five: INC s5
change_addr:
ADD BX,2
LOOP compare
MOV AX ,4c00h
INT 21h
CSEG ENDS
END start
2)步骤:
①阅读程序,将程序补充完整。
②输入,汇编并连接此程序。
③在DEBUG下运行此程序,记录运行结果。
④单步运行程序,记录前五次执行转移指令后寄存器cs ip的值。
题目2.分类统计字符个数。
1)要求,编程接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结
果存入以letter、digit和other为名的存储单元中。
2)提示:
程序可采用0AH功能调用把键入字符直接送到缓冲区中,然后再逐个取出分类计数。也可采用01H功能调用在接收字符后分类计数然后再存入缓冲区中。程序需进入debug运行并查看计数结果。
Data SEGMENT
letter DB ?
number DB ?
other DB ?
buff DB 80
DB ?
DB 80 DUP(?)
Data ENDS
Code SEGMENT
ASSUME CS:CODE,DS:DATA
start: MOV AX, data
MOV DS, AX
LEA DX,buff
MOV AH,0ah
INT 21h
MOV CL,buff+1
MOV CH,0
LEA BX,buff+2
next: MOV AL,[BX]
CMP AL,0dh
JZ exit
CMP AL,'0'
JL l3
CMP AL,'9'
JL l2
CMP AL,'A'
JL l3
CMP AL,'Z'
JL l1
CMP AL,'a'
JL l3
CMP AL,'z'
JL l1
l3: INC other
JMP l4
l2: INC number
JMP l4
l1: INC letter
l4: INC BX
JMP next
exit: MOV AX, 4c00h ; exit to operating system.
INT 21h
code ENDS
END start
(四)实验报告和问答题
1.分析程序,画出程序流程图。
题一的流程图为流程图(1)题二的流程图为流程图(2)2.汇编,连接及调试时产生的错误,其原因及解决办法。
3.单步运行程序,记录前五次执行转移指令后寄存器cs ip的值。
4.记录最终运行结果,即s5、s6、s7、s8、s9及s10的值。
5.思考:
1)如何修改题目1的程序代码,使源程序先统计s10,然后依次统计s9,s8,s7,s6,s5?
修改程序如下:grade DW 56,69,84,82,73,88,99,63,100,80
S10 DW 0
S9 DW 0
S8 DW 0
S7 DW 0
S6 DW 0
S5 D W 0
2)写出你认为在编写汇编程序中应该注意的地方和你的编程经验;
答:注意标点符号的有无。例如l2: INC number
字母的顺序。例如:DSEG SEGMENT
grade DW 56,69,84,82,73,88,99,63,100,80
而后面写成 garde 这样就会出错。
3)写出你对汇编实验的意见或者建议。