- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《微型计算机原理及应用》作业
作业组别:十九
班级:11级机控一班
姓名:商夏
学号:110101010259
作业指导教师:陈子明
李艳文、王志松、赵玉勤、张庆玲
项目完成时间:2014-4-17
目录
题目要求
分析题目
应用说明
程序框图
详细程序
程序运行结果分析
程序调试情况
程序运行结果分析
体会
题目一:编写程序对在数据段BUF1地址起存放一串字符个数进行统计,串结束标志为-1,并将统计的结果放到CX中。
1、分析题目:
①利用字符型指针,该指针指向BUF1存储区,并定义一串字符;
②判断首个数据是否为-1,省去无谓的循环;
③进入循环:每次取指针内容判断是否为-1;地址加一的同时令CX寄存器也加一,存放字符个数。
2、应用说明:
①主存DS段地址为BUF1处存放字符串;
②用16位CX寄存器作为循环指令中的计数器;
③将取来的数据存入AL中;
④用位操作指令XOR进行逻辑运算;
⑤用条件转移指令JZ 判断循环何时终止;
⑥用无条件转移指令JMP进行循环,同时CX记录字符个数。
开始3、程序框图:
开始
SI,CX赋初值
SI,CX赋初值
是结束否
是
结束
否
取首个数据存入AL
取首个数据存入AL
等于0FFH
等于0FFH
INC CX
INC CX
INC
INC SI
4、详细程序:
.MODEL SMALL
.STACK
.DATA
BUF1 DB 3,6,-2,9,-5,1,0,-1;定义一串字符
.CODE
.STARTUP
MOV SI,OFFSET BUF1;取BUF1首个字符地址存入SI
MOV CX,0;初始化CX,用CX存放字符个数
L1: MOV AL,[SI];将首个字符存入AL中
XOR AL,0FFH;与-1异或,检查是否串结束
JZ L2;若串结束则跳至程序尾
INC CX;字符数加一
INC SI;地址加一,以取下一个字符
JMP L1;验证并计数下一个字符
L2: .EXIT
END
程序运行结果分析:
SI依次取得数据并存入AL中,然后CX计数器加一;当遇到-1时,程序结束,此时CX中的数即为数据段BUF1地址起存放的一串字符的个数。
5、程序调试情况:
注:以下程序为最初设计程序;下划线部分为非正确语句。
.MODEL SMALL
.STACK
.DATA
BUF1 DB 3,6,-2,9,-5,1,0,-1;定义一串字符
.CODE
.STARTUP
MOV DX,OFFSET BUF1;取BUF1首个字符地址存入DX
MOV CX,0;初始化CX,用CX存放字符个数
L1: PUSH DX;将DX内数据压入堆栈
XOR [DX],0FFH;与-1异或,检查是否串结束
POP DX;将DX内原数据弹出
JZ L2;若串结束则跳至程序尾
INC CX;字符数加一
INC DX;地址加一,以取下一个字符
JMP L1;验证并计数下一个字符
L2: .EXIT
END
程序运行结果分析:
此程序由于用到PUSH、POP语句,因此存入的数是不会随地址指针改变而改变的,起到的作用只是暂存数据于堆栈中,故使程序陷入循环不终止状态。鉴于此,将语句改为MOV指令语句。
存放偏移地址用到了DX寄存器是错误的。DX是数据寄存器,存放双子长数据的高16位。应该改用SI变址寄存器,DS:SI,寻址数据段中的源操作数。
6、体会:
存数据可用MOV指令存入寄存器,也可用堆栈操作指令。但是我忽略了书中一句话“堆栈可用来临时存放数据,以便随时恢复它们”。因此才使循环不终止。此外,获取偏移地址使用寄存器也存在错误。这些启发我对于知识的学习需要探求其本质及特点,不可只求表面。
题目二:内存中有一个数x,把此数的前四位变反,后四位维持不变,送回同一单元。
1、分析题目:
①定义变量;
②用位操作指令变换。
2、应用说明:
①用8位寄存器AL存放数据;
②用位操作指令XOR实现取反。
3、程序框图:
4、详细程序:
.MODEL SMALL
.STACK
.DATA
X DB 0CH;定义变量
.CODE
.STARTUP
MOV AL,X;将内存中数X存入AL
XOR AL,0F0H;数X低四位不变,高四位变反
MOV X,AL;数X送回AL
.EXIT
END
程序运行结果分析:
X的前四位变反,后四位不变,并送回了同一单
您可能关注的文档
最近下载
- 生物安全实验室乙型肝炎病毒实验活动风险评估报告.docx VIP
- 2025年全国中考历史真题分类汇编.docx VIP
- 托福写作172句型.doc VIP
- 三级助听器验配师理论知识考核试题及答案.pdf VIP
- Unit 7 Happy Birthday第1 Lead-in Cartoon time三年级英语上册练习(译林版三起).pdf VIP
- 昌平区电力工程施工组织设计.doc VIP
- 2025年新人教版数学二年级上册全册课件.pptx
- T∕CCMA 0075-2019 -装载机载荷谱试验方法.pdf VIP
- 针灸入门广州中医药学PPT.ppt VIP
- 学堂在线 如何写好科研论文 章节测试答案.docx VIP
文档评论(0)