编辑: 鱼饵虫 | 2013-06-08 |
3、要求同上.请分别求出这一串数据块中正数、负数和零的个数,存入2FH、2EH和2DH单元中.请分别在30H单元开始写入5个正数、8个负数、3个零和9个正数、5个负数、2个零的情况,记录程序运行结果. 例如:输入61H, -19H,12H, 0,78,3, -13H,0,17H,-89H,-5H,-14H,-31H,-43H,-67H,0 则2FH、2EH、2DH单元的值分别为5,8,3 源代码: 输入数据如下,一共3个0,8个负数,5个正数: 0E7H,0EDH,0FEH,0EBH,0ADH,0BCH,0BCH,0EAH 0,0,0 12H,78H,37H,65H,24H 0的个数存放在(2DH)中,负数个数存放在(2EH)中,正数的个数存放在(2FH)中 运行结果: (2DH)=03,(2EH)=08,(2FH)=05说明有3个0,8个负数,5个正数,程序运行结果正确 软件实验4:
一、实验目的
1、熟悉软件实验的基本步骤和汇编程序的调试方法;
2、了解简单的函数计算;
3、掌握程序的多分支结构.
二、实验说明 多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作.若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序.
三、实验及步骤
1、启动PC机,打开KEIL软件,软件设置为模拟调试状态.在所建的Project文件中添加例程的源程序进行编译,编译无误后可以选择单步或跟踪执行方式或全速运行程序.
2、打开CPU窗口,观察CPU窗口各寄存器的变化.打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H、32H、33H的数据变化,30H更新为0,31H更新为1,32H更新为2,33H更新为3
3、在单步或跟踪执行方式运行程序时,可以观察CPU窗口各寄存器的变化,看到程序执行的过程,加深对实验的了解.可修改源程序中给30H~33H的赋值,重复实验,观察实验效果.
四、例程流程图和源程序 1.例程说明:程序顺序跳转到相应的地址,执行对应的操作. 2.流程图 3.源程序: ORG 0000H SJMP START START: MOV A,#0 CALL FUNCENTER MOV A,#1 CALL FUNCENTER MOV A,#2 CALL FUNCENTER MOV A,#3 CALL FUNCENTER SJMP $ FUNC0: MOV 30H,#0 RET FUNC1: MOV 31H,#1 RET FUNC2: MOV 32H,#2 RET FUNC3: MOV 33H,#3 RET FUNCENTER: ADD A,ACC ;
A*2 MOV DPTR,#FUNCTAB JMP @A+DPTR FUNCTAB:AJMP FUNC0 AJMP FUNC1 AJMP FUNC2 AJMP FUNC3 END 源程序: 运行结果:30H~33H单元的值分别为
0、
1、
2、3.
五、思考题
1、写跳转程序时要注意些什么? 答:要注意跳转指令的范围
2、跳转的作用有哪些? 答:控制程序走向,根据不同条件转移到程序的不同分支.
六、实验内容
1、根据外部RAM 8100H单元中的值X,决定Y的值,保存到8101H单元中. 2X X大于0时;
Y= 80H........