微机原理与接口实验指导书(2010版)(6)

2019-04-09 21:16

POP CX

LOOP III ;外循环 PUSH DS

MOV AX,DATA

MOV DS,AX ;重置DS使其指向DATA段 MOV AH,09H

MOV DX,OFFSET MESS

INT 21H ;显示SORT OK 信息 POP DS

MOV CX,SORTNUM VVV: MOV AL,[SI] CALL DISP1 PUSH AX PUSH DX

MOV DL,20H MOV AH,02H INT 21H POP DX POP AX INC SI

LOOP VVV ;并排序后数显示出来 MOV AX,4C00H

INT 21H ;返回DOS

DISP1 PROC NEAR ;显示子程序,显示AL寄存器的内容 PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL POP CX RET DISP1 ENDP

DISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H DDD: MOV AH,02H INT 21H RET

DISPL ENDP ;参见数值显示实验程序清单 CODE ENDS

END START

25

实验五 学生成绩名次表实验

一、实验要求:

根据提示将0~100之间的10个成绩存入首址为1000H的单元,1000H+ⅰ表示学号为ⅰ的学生成绩,编写程序能在2000H开始的区域排出名次表,2000H+ⅰ为学生号ⅰ的学生的名次,并将其显示在屏幕上。

二、实验目的:进一步熟悉排序方法。 三、实验程序框图:

入口 CX入栈保存 学生数送CS AL送0分

BX和SI发向成绩表首址

Y

AL>=[SI] N [SI]送AL,DX记录对应学号

SI+1 N

CX-1=0 Y 将本次扫描的最高成绩清0

CX出栈

返回 四、实验程序: CRLF MACRO

MOV AH,02H MOV DL,0DH INT 21H

MOV AH,02H MOV DL,0AH

开始 初始化 显示提示信息 SI指向成绩表首址 学生送数CX 调GETNUN,该成绩送[SI] N SI+1 Y CX-1=0 学生送数CX DI指向名次表首址 调SCAN子程序,扫描成绩表 计算名次,填入DX举号对应的名次单元 N CX-1=0 Y 显示学生名次 返回DOS 26

INT 21H ENDM

DATA SEGMENT STUNUM EQU 10

MESS1 DB '请依次输入1-10号学生的成绩',0DH,0AH,'$' ERROR DB '输入错误,请重新输入!',0DH,0AH,'$' MESS2 DB '1-10号学生名次依次为:',0DH,0AH,'$' EMARK DB ? ORG 1000H SCORE DB 30 DUP(?) ORG 2000H SEQU DB 30 DUP(?) DATA ENDS

STACK SEGMENT STA DW 32 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP ;初始化 MOV AH,09H MOV DX,OFFSET MESS1 INT 21H ;显示提示信息 MOV SI,OFFSET SCORE ;成绩表首址 MOV CX,STUNUM ;学生数送CX MOV EMARK,0

UUU: CALL GETNUM ;读取键入数值送DX CMP EMARK,01H JE START MOV [SI],DL ;存入成绩表缓冲区中 INC SI ;指向下一单元 LOOP UUU MOV CX,STUNUM ;学生数 MOV DI,OFFSET SEQU ;名次表首址 VVV: CALL SCAN ;扫描子程序 MOV AL,STUNUM ;学生数 SUB AL,CL INC AL ;计算名次 MOV BX,DX MOV [DI+BX],AL ;记DX学号对应名次 LOOP VVV MOV AH,09H

27

LEA DX,MESS2 INT 21H MOV CX,STUNUM ;学生数 MOV SI,OFFSET SEQU ;名次表首址 WWW: MOV AL,[SI] CALL DISPI PUSH DX PUSH AX MOV AH,02 MOV DL,20H INT 21H POP AX POP DX INC SI LOOP WWW ;显示排定的学生名次 MOV AX,4C00H INT 21H

SCAN PROC NEAR ;子程序,每扫描一遍成绩表缓冲区, 找出其成绩最高者 ;(由DX指针指示对应学生),之后将该成绩清除以便下一次扫描 PUSH CX

MOV CX,STUNUM ;学生数 MOV AL,00H ;最低成绩 MOV BX,OFFSET SCORE

MOV SI,BX ;指向成绩表首址 CCC: CMP AL,[SI]

JAE JJJ ;AL中的成绩不低于成绩表指针SI所指单元的成绩则转JJJ MOV AL,[SI] ;AL存放较高的成绩 MOV DX,SI

SUB DX,BX ;DX为对应学号 JJJ: INC SI ;指向下一单元 LOOP CCC ADD BX,DX

MOV BYTE PTR [BX],00H ;本次扫描成绩最高者清0 POP CX RET SCAN ENDP

DISPI PROC NEAR ;显示子程序 PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL

28

AND DL,0FH CALL DISPL POP CX RET DISPI ENDP

DISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H DDD: MOV AH,02H INT 21H RET

DISPL ENDP

GETNUM PROC NEAR PUSH CX XOR DX,DX GGG: MOV AH,01H INT 21H

CMP AL,0DH JZ PPP

SUB AL,30H JB KKK CMP AL,09H JBE GETS JMP KKK GETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG

KKK: MOV AH,09H

MOV DX,OFFSET ERROR INT 21H

MOV EMARK,01H PPP: PUSH DX CRLF

POP DX POP CX RET

GETNUM ENDP CODE ENDS END START

;键读入子程序

29


微机原理与接口实验指导书(2010版)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019届中考化学第一轮复习知识点跟踪检测1

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

马上注册会员

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