5、连接DVCC系统
PC与实验箱连接,打开电源,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。上位机菜单上选择“联接” 菜单。联机正常,屏幕显示出现:寄存器窗口、反汇编窗口。如出现“联机失败”提示,表明DVCC系统与PC机连接不上,待检查。
6、编译\\编译文件\\编译连接传送文件、 ? 编译文件
编译无错误,无警告,则通过。 ? 编译连接传送文件
编译 无错误,在DVCC实验系统显示P状态下,按PCDBUG键,显示器全暗。点击:编译连接传送文件,错误!链接无效。时,数码管闪烁。
6
实验一 基本指令实验
一、实验目的 1、 掌握Medwin(万利)软件运用方法。 2、熟悉基本指令及寻址方式。 3、掌握PSW标志位的变化规律。 4、掌握拆字程序与查表程序的设计。 二、实验设备
Medwin(万利)、计算机一台。
三、实验内容 1、 数据传送类指令及寻址方式。 2、 运算类指令及PSW状态的变化规律。 3、 设计程序:查表求0~9的平方。 拆字程序设计。
四、实验程序及运行记录
1、数据传送类指令及寻址方式。
设定内部RAM(30H)=07H,外部RAM(0010H)=01H,(0011H)=00H,R7=15H,输入程序并保存,运行程序并填写下表。 程序org 0000h 结果 数据来源 数据去向 寻址方式 MOV R0, #30H MOV A , @R0 MOV A , R0 MOV 31H, 30H MOV 32H, #30H INC @R0 MOV 31H, @R0 MOV #0010H MOVX @DPTR DPTR, A, R0=30H A=07H A=30H (31H)=07H (32H)=30H (30H)=08H (31H)=08H DPTR=0010H A=01H 立即数30H 内部RAM30H 寄存器R0 内部RAM30H 立即数30H 内部RAM30H 内部RAM30H 立即数0010H 外部寄存器R0 累加器A 累加器A 内部RAM31H 内部RAM32H 内部RAM30H 内部RAM31H 数据指针DPTR 累加器A 立即寻址 寄存器间接寻址 寄存器寻址 直接寻址 立即寻址 寄存器间接寻址 寄存器间接寻址 立即寻址 寄存器间接寻 7
MOVC @A+DPTR SWAP A 程序 XCHD A, @R0 A, A=93H A=39H 结果 A=38H,(30H)=09H RAM0010H ROM0011H 累加器A 数据来源 内部RAM30H,累加器A 累加器A 内部RAM07H 栈顶09H 栈顶08H 累加器A 累加器A 数据去向 累加器A, 内部RAM30H 栈顶08H 栈顶09H 累加器A 内部RAM07H 址 变址寻址 寄存器寻址 寻址方式 寄存器间接寻址, 寄存器寻址 直接寻址 直接寻址 直接寻址 直接寻址 PUSH ACC PUSH 07H POP ACC POP 07H (SP)=08H,(08H)=38H (SP)=09H,(09H)=15H A=15H, (SP)=08H (07H)=38H, (SP)=07H END 反汇编代码TEXT1.LST
LOC OBJ LINE SOURCE 0000 1 ORG 0000H
0000 7830 2 START:MOV R0, #30H; 0002 E6 3 MOV A, @R0 0003 E8 4 MOV A,R0
0004 853031 5 MOV 31H, 30H 0007 753230 6 MOV 32H, #30H 000A 06 7 INC @R0
000B 8631 8 MOV 31H, @R0 000D 900010 9 MOV DPTR, #0010H 0010 E0 10 MOVX A, @DPTR 0011 93 11 MOVC A, @A+DPTR 0012 C4 12 SWAP A
0013 D6 13 XCHD A, @R0 0014 C0E0 14 PUSH ACC 0016 C007 15 PUSH 07H 0018 D0E0 16 POP ACC 001A D007 17 POP 07H
001C 80FE 18 HERE:SJMP HERE 19 END
2、算术运算类指令及PSW状态的变化规律
程序 A B CY AC OV P ORG 0000H SETB C ADDC A,#27H DA A SUBB A,#0A5H ADD A,#2DH INC A ADDC A,#95H DIV AB 00H 00H 00H 00H 71H 00H 77H 00H D2H 00H FFH 00H 00H 00H 95H 00H 95H 00H 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 语句功能 系统复位值 将位累加器C置1 A←49H A←(A)+27H+(C) 将加法运算的结果进行十进制调整 A←(A)-0A5H A←(A)+2DH A←(A)+1 A←(A)+95H+(C) A←(A)/(B)的商, B←(A)/(B)余数 MOV A,#49H 49H 00H 8
MOV B,#08H MUL AB END 95H 08H A8H 04H 0 0 0 0 1 1 0 1 B←08H A←AB乘积低8位, B←AB乘积高8位
反汇编代码TEXT2.LST
LOC OBJ LINE SOURCE 0000 1 ORG 0000H 0000 D3 2 SETB C ; 0001 7449 3 MOV A,#49H 0003 3427 4 ADDC A,#27H 0005 D4 5 DA A
0006 94A5 6 SUBB A,#0A5H 0008 242D 7 ADD A,#2DH 000A 04 8 INC A
000B 3495 9 ADDC A,#95H 000D 84 10 DIV AB
000E 75F008 11 MOV B,#08H 0011 A4 12 MUL AB 13 END 3、设计程序:查表求0~9的平方。(以6为例)
1)用指令MOVC A,@A+DPTR查表 ORG 0000H 反汇编代码 0000 021FFF LJMP 1FFFH TAB:DB 00H,01H,04H 0003 000104 DB 09H,10H,19H,24H 0006 09101924 DB 31H,40H,51H ORG 1FFFH MOV A,#06H MOV DPTR,#TAB MOVC A,@A+DPTR 000A 314051 1FFF 7406 2001 900003 2004 93 语句功能 跳转到地址1FFFH处 建立数据表格 建立数据表格 建立数据表格 A←06H DPTR←数据表格的起始地址 查表 2005 80FE SJMP $ 原地踏步 END 反汇编代码TEXT3.LST LOC OBJ LINE SOURCE 0000 1 ORG 0000H 0000 021FFF 2 LJMP 1FFFH;
0003 00 3 TAB:DB 00H,01H,04H 0004 01 0005 04
0006 09 4 DB 09H,10H,19H,24H 0007 10 0008 19 0009 24
000A 31 5 DB 31H,40H,51H 000B 40 000C 51
1FFF 6 ORG 1FFFH 1FFF 7406 7 MOV A,#06H 2001 900003 8 MOV DPTR,#TAB 2004 93 9 MOVC A,@A+DPTR 2005 80FE 10 SJMP $
9
11 END 2)用指令MOVC A,@A+PC查表 ORG 0000H MOV A,#06H ADD A,#02H MOVC A,@A+PC SJMP $ TAB:DB 00H,01H,04H DB 09H,10H,19H,24H DB 31H,40H,51H 反汇编代码 0000 7406 0002 2402 0004 83 0005 80FE 0007 000104 000A 09101924 000E 314051 语句功能 A←06H A←(A)+02H 查表 原地踏步 建立数据表格 建立数据表格 建立数据表格 END 4拆字程序,设(20H)=35H,要求拆为05H、03H存放在外部RAM0020H、0021H单元中。 ORG 0000H 反汇编代码 0000 7820 MOV R0, #20H MOV DPTR, #0020H 0002 900020 0005 E6 MOV A,@R0 ANL A, #0FH MOVX @DPTR, A INC DPTR MOV A,@R0 SWAP A ANL A, #0FH MOVX @DPTR, A SJMP $ END 0006 540F 0008 F0 0009 A3 000A E6 000B C4 000C 54F0 000E F0 000F 80FE 语句功能 R0←06H DPTR←0020H A←((R0)) A←(A)^(0FH) ((DPTR)) ←(A) DPTR ←(DPTR)+1 A←((R0)) (A)4~7←→(A)3~0 A←(A)^(0F0H) ((DPTR)) ←(A) 原地踏步 反汇编代码TEXT4.LST
LOC OBJ LINE SOURCE 0000 1 ORG 0000H
0000 7820 2 MOV R0,#20H;
0002 900020 3 MOV DPTR, #0020H 0005 E6 4 MOV A,@R0 0006 540F 5 ANL A, #0FH 0008 F0 6 MOVX @DPTR, A 0009 A3 7 INC DPTR 000A E6 8 MOV A,@R0 000B C4 9 SWAP A
000C 540F 10 ANL A, #0FH
000E F0 11 MOVX @DPTR, A 000F 80FE 12 SJMP $ 13 END 五、实验结果讨论
1)有无@ 的区别是MOV A ,R0是 将寄存器R0中的内容传送给累加器A ;而MOV A ,@R0是 以R0中的内容为地址,把该地址单元中的内容传送给累加器A 。有无 # 的区别
10