- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理与接口技术
软件实验报告
实验B 分支、循环程序设计
实验目的
开始独立进行汇编语言程序设计;
掌握基本分支,循环程序设计;
掌握最简单的DOS功能调用。
实验任务及内容
安排一个数据区,内存有若干个正数,负数和零。每类数的个数都不超过 9。
编写一个程序统计数据区中正数,负数和零的个数。
将统计结果在屏幕上显示。
4. 选作题:
统计出正奇数,正偶数,负奇数,负偶数以及零的个数.
程序流程图
源程序
DISPSTR MACRO STR ;打出字符串(属于DOS功能调用)
MOV AH,9
MOV DX,SEG STR
MOV DS,DX
MOV DX,OFFSET STR
INT 21H
ENDM
DISPNUM MACRO NUM ;打出数字(属于DOS功能调用)
MOV AH,2
MOV DL,NUM
ADD DL,30H ;加30H变为ASCII码
INT 21H
ENDM
DATA SEGMENT
NUM DB 3,2,7,0,1,0,-5,-4,0
COUNT EQU $-NUM ;统计数据个数
ZEROS DB 0 ;各类数初值均为0
PLUSES DB 0
MINUSES DB 0
EVENMINUSES DB 0
ODDMINUSES DB 0
EVENPLUSES DB 0
ODDPLUSES DB 0
ZEROSTR DB 0DH,0AH,ZERO:$ ;待输出字符串
PLUSSTR DB 0DH,0AH,PLUS:$
MINUSSTR DB 0DH,0AH,MINUS:$
EVENMINUSSTR DB 0DH,0AH,EVENMINUS:$
ODDMINUSSTR DB 0DH,0AH,ODDMINUS:$
EVENPLUSSTR DB 0DH,0AH,EVENPLUS:$
ODDPLUSSTR DB 0DH,0AH,ODDPLUS:$
DATA ENDS
STACK SEGMENT STACK STACK
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START PROC FAR
PUSH DS ;初始化
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV CX,COUNT ;CX控制循环次数
MOV SI,OFFSET NUM ;SI指向数据的偏移地址
LOOP1: CMP BYTE PTR[SI],0 ;将SI指向的内容与0比较大小
JZ ZERO ;等于0跳转
JG PLUS ;大于0跳转
INC MINUSES ;负数加一
SHR BYTE PTR[SI],1 ;判断是负奇数还是负偶数
JNC EVENMINUS ;是负偶数跳转
INC SI ;SI指针后移
INC ODDMINUSES ;负奇数加一
RETURN: LOOP LOOP1 ;循环直至CX=0
JMP DISP ;循环结束后跳转至打出结果
ZERO: INC ZEROS
INC SI
JMP RETURN ;返回循环体
PLUS: INC PLUSES
SHR BYTE PTR[SI],1
JNC EVENPLUS
INC SI
INC ODDPLUSES
JMP RETURN
EVENPLUS: INC SI
INC EVENPLUSES
JMP RETURN
EVENMINUS: INC SI
INC EVENMINUSES
JMP RETURN
DISP: DISPSTR ZEROSTR ;打出结果
DISPNUM ZEROS
DISPSTR PLUSSTR
DISPNUM PLUSES
DISPSTR MINUSSTR
DISPNUM MINUSES
DISPSTR EVENPLUSSTR
DISPNUM EVENPLUSES
DISPSTR ODDPLUSSTR
DISPNUM
文档评论(0)