东华大学微机实验报告答案(软件)(4)

2020-02-21 12:49

实验七 循环程序设计

实验内容:

1. 编制程序计算S=1+2?3+3?4+4?5+??+N(N+1)+??直到N(N+1)大于200为止,并将结果由屏幕上显示出来。其程序的流程图如图7. 1所示。 2. 将从3000H内存单元开始的100个字节存储单元全部清0。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。

源程序:

(1)编制程序计算S=1+2?3+3?4+4?5+??+N(N+1)+??直到N(N+1)大于200为止,并将结果由屏幕上显示出来。 DATA SEGMENT

RESULT DW ? DATA ENDS

STACK SEGMENT STACK DB 10 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV DX,1 MOV BL,2 LP: MOV AL,BL ADD BL,1 MUL BL

ADD DX,AX ;DX中存放sum和 CMP AX,200 JG OUTPUT LOOP LP OUTPUT: MOV BX,DX MOV CX,4

LP2: ROL BX,1 ;BL存放和,移位,从高到低一位一位显示 ROL BX,1 ROL BX,1 ROL BX,1 MOV AX,BX

AND AX,000FH ;取BL中低四位 XOR DX,DX

ADD AL,30H ;十六进制转换成ASCII码加30H

CMP AL,3AH ;0—9数字与A—F的ASCII码不连续 JB PIT

ADD AL,07H ;若比A(10)大,还要再加07H PIT: MOV DL,AL MOV AH,02H INT 21H

LOOP LP2 MOV AH,4CH INT 21H CODE ENDS

END START

运行结果:

(2)将从3000H内存单元开始的100个字节存储单元全部清0。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。

DATA SEGMENT ORG 3000H

X DB 100 DUP(?) DATA ENDS

STACK SEGMENT STACK DB 10 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX LEA SI,X MOV CX,100

LP: AND BYTE PTR[SI],00H INC SI LOOP LP

MOV AH,4CH INT 21H CODE ENDS END START

运行结果:

先将内存单元赋值,用debug的E指令赋值,用D指令查看内存中的数据

再运行程序,将内存单元全部清零

实验八 子程序设计

1、程序说明:编制一程序,要求键入一个班的学生成绩,并存放于50字的ERADE数组中,然后根据ERADE中的成绩,把学生名次填入50字的RANK数组中,再按学号顺序把名次从终端上显示出来。 提示:

① 程序MAIN

功能:根据输入的学生成绩,计算并显示出学生名次。 ② 子程序INPUT

功能:接收一个班级学生的成绩,各成绩之间用空格隔开。

③ 子程序RANKP

功能:计算一个班级学生的名次。 ④ 子程序OUTPUT

功能:输出(显示)一个班级的学生名次 ⑤ 子程序DECIBIN

功能:十进制转换二进制,存入BX ⑥ 子程序BINDEC

功能:十进制转换二进制,并在屏幕上显示。 ⑦ 子程序DEC_DIV

功能:BX的内容除以CX的内容,并在屏幕上显示一位商。

源程序:

DATA SEGMENT

GRADE DW 50 DUP( ) RANK DW 50 DUP( )

ENTER DB 'Grades:',24H ;提示用户输入成绩

ERROR DB 13,10,'Error!',13,10,24H ;用户输入的格式出错 SHOW DB 'Rank: ',24H

COUNT DW 0 ;统计输入的成绩个数 CR DB 13,10,24h ;换行 DATA ENDS

STACK SEGMENT STACK DB 400 DUP(0) STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:

MOV AX,DATA MOV DS,AX

MOV ES,AX

CALL INPUT

CALL RANKP

CALL OUTPUT

MOV AH,01H INT 21H MOV AX,4CH INT 21H

;INPUT程序段

;以学号为序从键盘输入一个班的学生成绩,各个成绩之间 用逗号格开,最后以回车符结束。

;然后把一个班的成绩存入grade数组。 INPUT PROC NEAR

LEA DX,ENTER MOV AH,9

INT 21H ;提示用户输入

MOV SI,0

MOV COUNT,0 ;将输入用户的输入个数置0

_ENTER: ;对用户的输入进行监视,对错误输入立即进行出错处理 CALL DECIBIN ;调用DECIBIN ;对用户输入进行处理 INC COUNT

CMP DL,',' ;与','比较,相同则保存成绩,不同出错 JE _STORE

CMP DL,0DH ;与回车键进行比较,回车则成绩输入结束 JE _ENDENTER

JNE _ERROR ;出错处理:显示出错信息 _STORE: ;保存成绩 MOV GRADE[SI],BX ADD SI,2 JMP _ENTER _ERROR:

LEA DX,ERROR MOV AH,9 INT 21H

_ENDENTER: ;用户结束成绩输入 MOV GRADE[SI],BX

MOV DX,OFFSET CR ;换行 MOV AH,9 INT 21H RET INPUT ENDP

;RANKP程序段

;从grade数组取得一个班的成绩,以学号为序计算出该班每个学生的名次存入rank数组。


东华大学微机实验报告答案(软件)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2022年中国粉丝经济市场发展态势及未来前景分析报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: