实验三简单程序调试
实验三简单程序调试
一、实验目的
初步掌握汇编语言程序设计及调试的方法
二、实验仪器
1、DVCC-598JH 单片开发机一台;
2、WD-5 型直流稳压源一台。
三、实验预习
1、认真阅读实验指导书有关内容,明确实验目的、内容和操作步骤;
2、对实验中的程序进行手工汇编;
3、复习实验中相关指令的功能;
4、复习顺序结构程序设计思想。
四、实验内容
程序一:BCD 码数的加法运算
设有两个4位压缩的BCD码数,一个数存放在片内RAM31H (千位、百位)和30H (十位、个位)单元,另一个数高位存在33H单元,低位存在32H单元, 求两数之和,其结果存30H和31H单元。
参考程序:
地址目标程序源程序
ORG 1000H
1000 7830 MOV R0,#30H
1002 7932 MOV R1,#32H
1004 E6 MOV A,@R0
1005 27 ADD A,@R1
1006 D4 DA A
1007 F6 MOV @R0,A
1008 08 INC R0
1009 09 INC R1
100A E6 MOV A,@R0
100B 37 ADDC A , @R1 100C D4 DA A 100D F6 MOV
@R0, A
100E
80FE
SJMP $
END
程序二: 拆字程序
设有一个 8 位二进制数存放在片内 RAM40H 单元,将其拆为两个 4 位二进
制数,高 4 位存于 41H 单元,
低 4 位存于 42H 单元。
参考程序:
ORG
1000H
START :
MOV A , 40H ; 取数
ANL A , ;屏蔽高四位
MOV
42H , A ; 存低四位数
MOV
A , 40H ; 重新取数
SWAP
A ;高低四位互换
ANL
A , #0FH ;屏蔽低四位
MOV
41H , A ; 存高四位数
SJMP
$
END
程序三: 负数求补程序
已知一个16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2 中。
提示:二进制负数的求补方法可归纳为“求反加 1”。即可利用CPL 指令实 现求反,而 16 位加 1,则应是低 8位先加 1 ,高8位再加上低位的进行位。 注意, 这里不能用 INC 指令,因 INC 指令不影响标志位。
参考程序:
ORG 1000H START :
MOV A , R0 ;读低 8 位
CPL
A
;取反
ADD A ,#01H ;加1
MOV R2,A ;存低8 位
MOV A ,R1 ;读高8 位
CPL A ;取反
ADDC A ,#00H ;加进位
MOV 20H,R1 ;高8位一位寻址区MOV C,07H;符号位-C
MOV
ACC.7 ,
C
;恢复符号
MOV R3,A ;存高8 位
SJMP $
END
五、实验步骤
1、认真阅读实验参考程序并分析程序运行后的理论结果;
2、输入程序并检查输入是否正确;
3、根据已知条件输入程序执行前的原始数据;
4、执行程序,检查并记录结果;
六、练习
1、试编写计算6655H+11FFH 的程序。
提示:被加数和加数是16 位数,需分两步完成计算,首先将两数的低位相加,若有进位,保存在C Y中;然后再将两数的高8位连同进位位相加,结果存入50H、51H 单元中。
2、编写程序,将片内41H 和42H 单元的两个4 位二进制数进行组合,存放于40H 单元。41H 单元的数作为低4 位,42H 单元的数作为高4 位。
七、实验报告
1、整理记录结果,并与理论结果进行比较;
2、调试过程及体会;
3、思考BCD 码相减的实现方法;
4、思考有符号数的求补方法。