微机原理件实验报告.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文档。上传文档
查看更多
微机原理件实验报告

微机原理软件实验 班级: 姓名: 学号: 实验目的 通过自己编写汇编程序,掌握一门新的编程语言,加深对微机原理这门课程的理解并为以后的进一步学习巩固基础,以及增强个人的实践能力及编写调试代码的能力。 实验任务及内容 微机原理软件实验共有四个题目,如下: 实验一、DEBUG的使用。对给定的代码进行编译连接及执行,并通过单步调试来熟悉代码调试的方法,读懂所给代码所能实现的功能。 实验二、编写一个汇编程序,实现分支和循环的功能。具体内容为:安排一个数据区,内丰有若干个正数,负数和零(第类数的个数都不超过9);编写一个程序统计数据区中的正数,负数和零的个数并将统计的在屏幕上显示。 实验三、从键盘上输入若干两位十进制数,寻找其中的最小值,并在屏幕上显示。每两个十进制间要有自定义的分隔符;对输入字符要有措施并有适当的提示。将整个程序分解成若干模块,并分别用子程序实现。 实验四、从键盘上输入学生的科目成绩,最后统计学生的总分并给出其排名,并将其结果显示在屏幕上。对输入要有一定的检错能力,输出要尽可能的考虑美观。 代码设计思路及实验结果 实验一 因为该实验中的代码是给定的,故对该代码的设计思路就不详细的说明了。实验过程如下:将所给的代码拷到一个txt文档里面,保存后改名为 a.asm 。在cmd窗口内能过cd改变路径到.asm文件所在的目录下,输入masm a.asm,生丰a.obj 文件,然后再输入 link a.obj 生成一个可执行文件即完成编译和连接的过程。 由于所给的代码中没有包含显示出运行结果的代码,因些要看实验运行的结果还得通过debug的方法查看寄存器所存储的数来观察所得的结果。在前面的基础上,在cmd窗口中输入 debug a.exe 即可。 运行结果如上图所示,命令g 003e 是让程序直接执行到003e处然后停下来,再观察此时内存里面所存储的数据。在代码中,数据段的定义如下: DAT SEGMENT A DB 20 ;(自定) B DB 15 ;(自定) Y DB 3 DUP(0) Z DB 0,0 DAT ENDS 四个变量中,其中A和B为自定的一个参数(变量),而计算所得的结果存放在三个字节的变量Y中(按高位放在高字节的原则存放),而Z是一个临时的变量,用作调用子程序所传递的参数的存放位置。 由图中可知,输入的变量A=14H,B=0FH,输出的结果为Y=4C9H。 通过阅读源程序可以知道这一段代码的作用是求出两个数的和的平方,其计数的方法是:。其流程图好下所示: 实验二 源程序见附件。设计的基本思路是设置三个寄存器,用于分别记录正数,负数,零的个数。每当判断出一个数的正负性,则相应的寄存器自増1。最后将三个寄存器内的数据写到内存里面,并通过调用中断把结果显示到屏幕上。 其流程如右图所示: 主要的汇编代码如下: mov bl, 0;存放正数的个数 mov bh, 0;存放负数的个数 mov dh, 0;存放0的个数 mov cl, len mov ch, 0 mov si, offsetnumber;数据存储的初 ;始地址循环体 cld lp: lodsb ;读取一个数据区的数据 cmp al, 0 jz zero jg posi nega: inc bh;负数加1 jmp next zero: inc dh;零加1 jmp next posi: inc bl;正数加1 next: loop lp 程序运行的结果: 其中数区的定义如下: data segment number db 0ffh,00h,78h,80h,24h,66h,89h,0fh,00h,45h,0efh,10h ;定义数据区 len db $-number count db 3 dup(0);用于计数 str db There are totally ,$ str1 db positive number.,0ah,0dh,$ str2 db negative number.,0ah,0dh,$ str3 db zeros.,0ah,0dh,$ data ends mov cl, len mov ch, 0 mov si, offset number ;循环体 cld lp: lodsb cmp al, 0 sar al, 1 ;进行一次右移,使其最低位移到标志位CF,通过CF来 判断该数的奇偶性 jz zero ;先判断该数的正负性 jg posi nega: jc neod jmp neev zero: mov bl, [count+4];零的个数加1 inc bl mov [count+4], bl jmp next po

文档评论(0)

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

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

1亿VIP精品文档

相关文档