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