汇编语言 分支设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)写出你对汇编实验的意见或者建议。

相关文档
最新文档