微机原理第19组作业.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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的前四位变反,后四位不变,并送回了同一单

文档评论(0)

676200 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档