单片机原理与接口技术 (12).pdf
Keil 的使用与汇编语言的使用与汇编语言仿真仿真操作操作 一、一、目的目的 熟悉 KeilKeil 环境,通过在 KeilKeil 环境下调试字节传送程序,掌握汇编语言程序的调试方法,加深对堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。二、二、内容内容 1.1.掌握掌握 KeilKeil 环境的使用环境的使用 数据块填充:将片外 RAM 7000H-70FFH 单元按一定规律填充,观察相关寄存器和单元的内容。Source used:R0:计数器 DPTR:片外数据指针 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV SP,#40H FILL:CLR A ;A 寄存器清零 MOV R0,#00H ;设循环计数器 MOV DPTR,#7000H ;设数据指针 FILL1:MOVX DPTR,A ;传送到片外 RAM INC A ;A 内容加 1 INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0,#00H,FILL1 ;判断是否结束 HERE:SJMP HERE ;原地踏步 END 程序理解:/初始化部分 寄存器 A 清零,寄存器 R0 清零(R0 用于设置循环次数),数据指针 DPTR 指向片外存储单元,存储单元地址 0 x7000 FILL:CLR A ;A 寄存器清零 MOV R0,#00H ;设循环计数器 MOV DPTR,#7000H ;设数据指针/循环部分 将寄存器 A 的值赋值给 DPTR 所指向的存储单元(片外数据存储器),可以理解为 C 语言解引用操作符,A+,DPTR+,R0+,重复上述动作,直至 R0 溢出(CJNE 比较跳转指令,当 R0 溢出时,循环结束),即最终结果为片外存储单元 7000H-70FFH依次赋值 0-255 FILL1:MOVX DPTR,A ;传送到片外 RAM INC A ;A 内容加 1 INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0,#00H,FILL1 ;判断是否结束 2.2.编写多个十六位数的编写多个十六位数的传送传送程序程序 有 4 个十六位无符号数,连续存放在 20H 开始的片上数据区中,低八位先存,高八位在后。要求:编程实现将这 4 个数存于片外 RAM 2F00H 单元开始的单元中在前高八位。4 个十六位无符号数依次为 2021H,2122H,2223H,2324H 程序代码:MAIN:MOV 20H,#21H MOV 21H,#20H MOV 22H,#22H MOV 23H,#21H MOV 24H,#23H MOV 25H,#22H MOV 26H,#24H MOV 27H,#23H ;4 个十六位无符号数依次为 2021,2122,2223,2324 MOV DPTR,#2F00H ;数据指针 MOV R1,#20H ;数据指针 MOV R2,#00H ;循环计数 CLR A ;A 寄存器清零,临时存储 FILL:MOV A,R1 ;R1 指向存储空间中的赋值给寄存器 A MOVX DPTR,A ;将寄存器 A 中的值赋值给 DPTR 指向的存储空间 INC R1 INC DPTR INC R2 CJNE R2,#0 x08,FILL;循环结束标志,循环 8 次跳出循环 2F SJMP$END 3 3.实验结果实验结果 数据存储器(片内):数据存储器(片外):三、三、备注备注 1 怎样查看工作寄存器、SFR、片内 RAM、片外 RAM 及程序代码空间内容?D:addr eg:D:20H 查看片内 ram X:addr eg:X:2000H 查看片外 ram C:addr eg:C:20H 查看程序代码(rom)查看工作寄存器、SFR:2 片外传送还有哪些方法,举一例说明。