- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理实验2编程实现循环程序
微机原理实验
实验二 编程实现循环程序
编程实现:自行定义某班30个学生的某课程成绩(0~100分之间),要求:
统计=90分、80~89分、70~79分、60~69分、60分以下的人数,结果转为ASCII码显示出来(要求有分数段字符串提示,并每个分数段一行显示)。结果举例:
=90:3
80-89:4
70-79:11
60-69:10
60:2
实验流程图:
Y
N
Y
N
Y
N
Y
N
Y
程序:
stack segment stack stack
dw 100H dup(0)
stack ends
data segment
BUF DW 62,73,32,74,66,54,71,65,97,98
DW 75,82,81,59,92,85,88,66,61,89
DW 63,98,88,43,39,96,66,45,12,20
COUNT EQU $-BUF ;COUNT的值为BUF所占的字节数
STR1 DB 60:,$
STR2 DB 60-69:,$
STR3 DB 70-79:,$
STR4 DB 80-89:,$
STR5 DB 90:,$
RES DW 30 DUP(?) ;在存储区RES中设置30个初值为0的数据
data ends
code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
START: MOV CX,COUNT/2+1 ;设计数器初值
MOV DI,OFFSET RES ;取RES的首址
MOV SI,OFFSET BUF-2 ;取BUF的首址
LURY: INC SI
INC SI ;修改SI指针
DEC CX ;设循环次数CX
JZ OUTPUT ;循环结束,则转OUTPUT
MOV AX,[SI] ;取BUF中第一个数放到AX寄存器
CMP AX,60 ;将AX中数据和60进行比较
JB LOP1 ;小于60,则转LOP1
CMP AX,70 ;否则,继续与70进行比较
JB LOP2 ;小于70,则转LOP2
CMP AX,80 ;否则,继续与80进行比较
JB LOP3 ;小于80,则转LOP3
CMP AX,90 ;否则,继续与90进行比较
JB LOP4 ;小于90,则转LOP4
CMP AX,100 ;否则,继续与100进行比较
JB LOP5 ;小于100,则转LOP5
LOP1: MOV BX,[DI]
INC BX
MOV [DI],BX ;对小与60的数据计数,并把其放在RES的第一个字节中
JMP LURY ;转到LURY
LOP2: MOV BX,[DI+2]
INC BX
MOV
文档评论(0)