教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 幼儿教育 >

微机实验报告 循环程序的设计

来源:网络收集 时间:2026-07-15
导读: 实验报告(循环程序的设计) 专业:材料物理; 姓名:曾瑞; 学号:2011301230019 1, 实验内容 编程计算:S=1+2+3+6…+N=100的最大项数N以及对应的和S。 2, 实验要求 ① 将最大项数与和数分别存入N和SUM单元,用TD调试,运行程序并检查 结果; ② 将结果在

实验报告(循环程序的设计)

专业:材料物理; 姓名:曾瑞; 学号:2011301230019

1, 实验内容

编程计算:S=1+2+3+6…+N<=100的最大项数N以及对应的和S。

2, 实验要求

① 将最大项数与和数分别存入N和SUM单元,用TD调试,运行程序并检查

结果;

② 将结果在屏幕上以16进制数显示。显示格式:MAX N=xxH SUM =xxH。

3,实验目的

学习并掌握循环程序的设计方法。

4,源程序

;FILENAME:ZENGRUI.ASM

DATA SEGMENT

N DB ? ;开辟一个字节单元

MESG1 DB ‘MAX N=’,30H,30H,’H’,’$’

SUM DB ?

MESG2 DB ‘SUM =’,30H,30H,’H’,’$’

DATA ENDS

CODE SEGMENT

ASUME CS:CODE,DS:DATA ;段分配

BEGIN: MOV AX,DATA ;段基址→DS

MOV DS,AX

MOV BL,0 ;给BL和AL赋初始值0

MOV AL,0

COUNT: INC BL

ADD AL,BL

CMP AL,100

JBE COUNT ;无符号数<=跳转

SUB AL,BL ;所得AL大于100,故要减去BL

DEC BL ;BL的前一位才是最大项

MOV [N],BL ;最大项数→N单元

MOV [SUM],AL ;和数→SUM单元

MOV BX,OFFSET N

CALL N2_16 ;调用过程N2_16

MOV BX,OFFSET SUM

CALL N2_16

MOV AH,9 ;9号功能调用,输出字符串

MOV DX,OFFSET MESG1

INT 21H

MOV AH,02H ;2号功能调用,输出两个空格

MOV DL,00H

INT 21H

MOV AH,02H

MOV DL,00H

INT 21H

MOV AH,9 ;9号功能调用,输出字符串

MOV DX,OFFSET MESG2

INT 21H

MOV AH,4CH ;返回DOS操作系统

INT 21H

N2_16 PROC

NEXTI: CMP BYTE PTR [BX],16 ;存储单元与16比较

JC NEXT2 ;小于16转

SUB BYTE PTR [BX],16 ;否则,减去16

INC BYTE PTR [BX+7] ;高位加一

JMP NEXT1

NEXT2: MOV AH,BYTE PTR [BX]

CMP AH,10 ;与10比较

JC NEXT3 ;小于10转

MOV CH,7 ;否则,加7

ADD AH,CH

NEXT3: ADD BYTE PTR [BX+8],AH ;生成低位数

RET

ENDP

CODE ENDS

END BEGIN

5,实验结果及分析

实验结果显示为:MAX N=0DH SUM =5BH。经过验证,其结果是正确的。 需要说明的有以下几点:

① 本程序还可以进一步简化。比如,对于空格的输出,在本程序中两次调用了2号功能,当然,也可以直接在输出字符串时中直接输出。例如,直接在DATA

SEGMENT 中MESG1 DB ‘MAX N=’,30H,30H,’H’,’$’修改为MESG1 DB ‘MAX N=’,30H,30H,’H’,’00H’,’00H’,$,就可以做到这点;

②在设计源程序时,本人对结果输出稍微改变了一下。实验要求是MAX N=xxH SUM =xxH,最终结果显示为:MAX N=0DH SUM =5BH。可以看出,字符串SUM后面多了一个空格。之所以这样做,是因为这样方便调用过程N2_16,其好处是

简化了程序;

③由于实验要求SUM<=100,因而在输出显示16进制数时,不用考虑其高位数大于10的情况。所以,在设计程序时,为了简化,只是对低位数的情况进行了一次比较判断。至于为什么在低位数大于等于10时,需要加7?原因是这样的,即我们最终的结果都是用ASCII码来显示的,16进制低位如‘A’对应着ASCII码41H,如果所得结果不加7,则ASCII码为3AH,则对应的是‘:’,其记过是错误的;

④对于2进制向16进制的转换,其方法不是唯一的,有很多种。本实验设计的源程序属于比较初级的一种,其思路是通过不断减16,来获取高位数。另外一个思路是:通过除法运算得商取余。当然,也可以利用2进制与16进制的特殊关系,通过与运算0F0H,结果右移四位,得到高四位;通过与0FH运算,得到低四位,最后存入相应的存储单元。其过程如下:

N2_16 PROC

MOV AL,BYTE PTR [BX]

MOV AH,AL

AND AL,0F0H ;与运算,AL低四位清0 MOV CL,4 ;右移四位,得高四位数 SHR AL,CL

CMP AL,10

JC NEXT1

ADD AL,7

NEXT1: ADD BYTE PTR [BX+7],AL

AND AH,0FH ;与运算,AH高四位清0,得低 CMP AH,10 ; 四位数

JC NEXT2

ADD AH,7

NEXT2: ADD BYTE PTR [BX+8],AH

RET

ENDP

注意:以上过程增加了对16进制高位数的判断

…… 此处隐藏:367字,全部文档内容请下载后查看。喜欢就下载吧 ……
微机实验报告 循环程序的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1484838.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)