4.
步骤4的结果为,A中显示的为R3中的数的平方。
五、思考题
BCD码转换成二进制数的算法是什么?
答:BCD码转换成二进制的算法和二进制数转换成BCD码的算法相反,是高位乘10再与低位相加。
六、源程序
1、无符号多字节二进制数据减法。被减数放在30H开始的4个单元中(从低字节到高字节),减数放在40H开始的4个单元中(从低字节到高字节),差放入30H开始处(从低字节到高字节) ORG 0000H MOV R0, #30H MOV R1, #40H MOV R7, #04H CLR C LOOP: MOV A, @R0 SUBB A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R7, LOOP SJMP $ END
2、 多字节BCD码加法运算。两个4字节长的BCD码加数分别存放在外部RAM 0100H和0110H开始的单元中(从低字节到高字节),计算两数之和,结果保存在0120H开始的9个单元中。 ORG 0 MOV DPH #1H
6
MOV DPL #0 MOV R0, #30H MOV R7, #04H LOOP1: MOVX A, @DPTR MOV @R0, A INC DPTR INC R0 DJNZ R7, LOOP1 MOV DPL, #10H MOV R0, #40H MOV R7, #04H LOOP2: MOVX A, @DPTR MOV @R0, A INC DPTR INC R0 DJNZ R7, LOOP2 MOV DPL, #20H MOV R0, #30H MOV R1, #40H CLR C LOOP3:
2、 分别用近程查表指令和远程查表指令,查找R3内容的平方值。R3内容小于等于
0FH。
近程查表指令:
ORG 0 MOV A,R3 ADD A,#2 MOVC A,@A+PC
7
MOV A, @R0 ADDC A, @R1 DA A INC R0 INC R1 MOVX @DPTR, A INC DPTR DJNZ R7, LOOP3 MOV A, #0 ADDC A, #0 MOVX @DPTR, A SJMP $ END
SJMP $
TABL:DB 00H,01H,04H,09H DB 10H,19H,24H,31H DB 40H,41H,64H,79H DB 0A9H,0C4H,0E1H END
远程查表指令: ORG 0
MOV DPTR,#TABL MOV A,R3 MOVC A,@A+DPTR SJMP $ ORG 4000H
TABL:DB 00H,01H,04H,09H DB 10H,19H,24H,31H DB 40H,41H,64H,79H DB 0A9H,0C4H,0E1H
END
8
软件实验三
一、实验目的
1、 熟悉软件实验的基本步骤和汇编程序的调试方法; 2、 掌握数值的加减运算;
3、 掌握用查表的方法将BCD值转换成ASCII值。
二、实验原理
将一个BCD数转换成ASCII值的方法为:先将高四位用查表法转成ASCII码,再将低四位用查表法转成ASCII码。
三、实验及步骤
1、 在所建的Project文件中添加例程的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化,打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H的数据变化。
2、 添加实验书实验内容1的源程序,选两组数据,一组含有要查找的字节,一组不含要查找的字节,编译,运行,观察程序运行后A的内容。
3、 添加实验书实验内容2的源程序,输入-69H,65H,-7H, -25H ,-47H,56H, -3H,17H,6H,-5H,-45H, -1H, -57H, 23H ,-5H,-13H,编译,运行,观察2FH与2EH单元中的内容。
4、 添加实验书实验内容3的源程序,输入61H, -19H,12H, 0,78,3, -13H,0,17H,-69H,-5H,-14H,-31H,-43H,-67H,0编译,运行,观察2FH,2EH,2DH单元中的结果。
四、实验结果 1. 2. 3. 4.
五、思考题
步骤1的结果为30H更新为31,31H更新为41。
步骤2的结果为,当数据中含有要查找的字节时,A中为要查找的字节;当数据步骤3的结果为,正数的和为89,负数的和为-199. 步骤4的结果为,2FH、2EH、2DH单元的值分别为5,8,3.
中不含要查找的字节时,A中显示FFH。
9
BCD码和ASCII码有哪些区别?
答:BCD码是用二进制数来表示十进制数的表示方法。有压缩BCD码和非压缩BCD码两种。
ASCII码是美国国家信息交换标准字符码的字头缩码。采用7位二进制代码对字符进行编码。
BCD码和ASCII码是两种不同的编码方法,BCD码只能表示数字,ASCII码除了表示数字之外还可以表示通用控制字符,英文字母和专用符号。
六、源程序
1、 查找关键字节(1字节),要查找的字节在R3中,一串字节存放在30H开始的20个单元中,查找结果放入A,若查找不到,则将FFH放入A. ORG 0 MOV R0, #30H MOV R7, #14H LOOP: MOV A, @R0 CLR C SUBB A, R3 JZ DONE INC R0 DJNZ R7, LOOP MOV A, #0FFH SJMP OVER DONE: MOV A, R0 OVER: SJMP OVER END
2、 在内部RAM的30H单元开始,有一串带符号数据块,其长度在10H单元中。编程求其中正数与负数的和,并分别存入2FH与2EH开始的2个单元中。(负数存放形式为补码)。 ORG 0
MOV 30H,#-69H MOV 31H,#65H
10