- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理第19组作业
《微型计算机原理及应用》作业
作业组别:十九
班级:11级机控一班
姓名:商夏
学号:110101010259
作业指导教师:陈子明
李艳文、王志松、赵玉勤、张庆玲
项目完成时间:2014-4-17
目录
题目要求
分析题目
应用说明
程序框图
详细程序
程序运行结果分析
程序调试情况
程序运行结果分析
体会
题目一:编写程序对在数据段BUF1地址起存放一串字符个数进行统计,串结束标志为-1,并将统计的结果放到CX中。
1、分析题目:
①利用字符型指针,该指针指向BUF1存储区,并定义一串字符;
②判断首个数据是否为-1,省去无谓的循环;
③进入循环:每次取指针内容判断是否为-1;地址加一的同时令CX寄存器也加一,存放字符个数。
2、应用说明:
①主存DS段地址为BUF1处存放字符串;
②用16位CX寄存器作为循环指令中的计数器;
③将取来的数据存入AL中;
④用位操作指令XOR进行逻辑运算;
⑤用条件转移指令JZ 判断循环何时终止;
⑥用无条件转移指令JMP进行循环,同时CX记录字符个数。
3、程序框图:
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的前四位变反,后四位不变,并送回了同一单元AL。
程序调试情况:
注:以下程序为最初设计程序。
.MODEL SMALL
.STACK
.CODE
.STARTUP
MOV AL,X;将内存中数X存入AL
XOR AL,0F0H
文档评论(0)