微处理器实验报告-实验一

《微处理器》实验报告

学院:                  

班级:                  

姓名:                  

学号:                  

实验 循环程序实验

  • 实验要求

利用PROTEUS平台,建立8086 的循环程序的例子。

  • 实验目的

1、熟悉实验系统的编程和使用。

2、掌握使用LOOP判断转移指令实验循环的方法。

3、掌握使用LOOP与CX的组合。

  • 实验说明

由于本实验是通过给CX一个数值,再通过LOOP作一个判断CX-1是否为0的转移,实现程序的循环,循环的内容是执行AX+1, 所以结果应该为AX 最后大小为开始时给定CX的大小。

  • 实验程序流程图

  • 实验步骤

1、Proteus仿真

a.在Proteus中打开设计文档“循环程序.pdsprj”;

b.单步运行,打开调试窗口进行调试。

参考程序:

 CODE SEGMENT

      ASSUME CS:CODE

CON_A EQU  25

CON_B EQU  12       

START:  

MOV AX,0     ;对AX清零,用于记录当前是第几次循环

MOV CX,5     ;设置循环次数,不可以用别的寄存器,是LOOP语句指定的

INC_AX: NOP  ;LOOP将会跳转到该标签

INC AX       ;循环一次 AX+1

LOOP INC_AX  ;CX-1 ?=0 不等于循环至INC_AX处

JMP $        ;原地无限循环

CODE ENDS

        END START

2、调试、验证

a.设置断点、单步运行程序,一步一步调试;

b.观察每一步运行时,8086内部寄存器的数值变化;

c.改变CX的赋值大小,观察AX的变化;

d.检查验证结果。

a.

给AX和CX赋初值,对AX清零,CX赋值为5,设置循环次数。

 b.

经过AX自增语句及LOOP语句后,跳转回了NOP语句,发现AX加一,CX减一。此后以此类推。

若是在AX执行后,LOOP执行前暂停,就会发现AX加一,但CX未加。这证明了正是LOOP语句对CX进行了减一的操作。

 c.

改变CX的赋值大小后,观察到AX的最终值随着CX的赋值大小变化,CX赋值变大,AX结果变大;CX赋值变小,AX结果值随之变小,跳出循环后CX均为零。

d.

  • 实验结果

最初AX初始化为0,CX赋值为5,经过AX自增语句及LOOP语句后,跳转回了NOP语句,发现AX加一,CX减一。此后以此类推。若是在AX执行后,LOOP执行前暂停,就会发现AX加一,但CX未加。这证明了正是LOOP语句对CX进行了减一的操作。

经过五次循环后,最终结果如图,AX等于5,表示循环了5次,而跳出循环后,CX一定为0。

MOV AX,0 ;对AX清零,用于记录当前是第几次循环;MOV CX,5 ;设置循环次数,不可以用别的寄存器,是LOOP语句指定的;INC_AX: NOP ;啥也不做,LOOP将会跳转到该标签;INC AX ;循环一次 AX+1;LOOP INC_AX ;CX-1 ?=0 不等于循环至INC_AX处;JMP $ ;原地无限循环。

                                                                                                                                                                                                             

  • 心得体会

在这次实验中,我掌握了使用LOOP判断转移指令实验循环的方法,也掌握了使用LOOP与CX的组合:

LOOP语句之所以先减后判断CX是否为0,就是为了CX中的数值能刚好对应循环次数,便于用户的使用。

在这次的程序中INC AX语句的位置可以替换成任何需要被多次调用的程序。

使用INC语句的原因有以下几点:1.在8086平台上,运行速度比ADD快2.代码所占内存小3.INC不改变符号位,而ADD会,如果循环体中需要用到CF,可能就会因为这点出现问题。

通过这次实验,我熟悉了实验系统的编程和使用,并且掌握了利用PROTEUS平台,建立8086 的循环程序的方法,学会了如何插入断点并单步运行程序。

这次的实验不仅巩固了我的理论知识,而且让我体验到了将理论运用到实践中的乐趣,让我受益匪浅。                                                      

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青竹小轩_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值