微机实验报告--Keil的使用与汇编语言上机操作

上传人:liy****000 文档编号:116745532 上传时间:2019-11-17 格式:DOCX 页数:15 大小:374.29KB
返回 下载 相关 举报
微机实验报告--Keil的使用与汇编语言上机操作_第1页
第1页 / 共15页
微机实验报告--Keil的使用与汇编语言上机操作_第2页
第2页 / 共15页
微机实验报告--Keil的使用与汇编语言上机操作_第3页
第3页 / 共15页
微机实验报告--Keil的使用与汇编语言上机操作_第4页
第4页 / 共15页
微机实验报告--Keil的使用与汇编语言上机操作_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《微机实验报告--Keil的使用与汇编语言上机操作》由会员分享,可在线阅读,更多相关《微机实验报告--Keil的使用与汇编语言上机操作(15页珍藏版)》请在金锄头文库上搜索。

1、 实验名称 Keil的使用与汇编语言上机操作 成 绩 指导教师 专业班级 姓 名 学 号 联系电话 一、实验目的熟悉Keil环境,通过在Keil环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。二、任务要求 1. 掌握Keil环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2. 编写多个十六位数的加法程序有4个十六位无符号数,连续存

2、放在20H开始的片上数据区中,低八位先存,高八位在后。要求:和存于R3(高八位)和R2(低八位),进位位存于R4。三、实验过程1.字节的拆分,合并程序的调试(程序已给出,只需做出调试工作) 1)设计要求与资源分配如下:File name: e421.asmDescription: 1字节BCD码转换为2字节ASCII 2字节ASCII码转化为1字节BCD码Date: Designed by: Source used: 30H: BCD data 31H, 32H:ASCII data 31H, 32H -33H2)源代码如下:ORG 0000HLJMP MAINORG 0100HMAIN: M

3、OV SP, #40H ;赋堆栈指针 MOV 30H, #49H ;30H单元赋值 MOV R0, #32H ;R0指针赋值 MOV R0, #0 ;32H单元清零 MOV A, 30H XCHD A, R0 ;拆分字节 ORL 32H, #30H ;转换为ASCII SWAP A ORL A, #30H ;转换为ASCII MOV 31H, A ;结果存于31H单元 MOV A, 31H ;从31H单元取值 ANL A, #0FH ;转换为BCD SWAP A MOV 33H, A ;结果存于33H单元MOV A, 32H ;从32H单元取值 ANL A, #0FH ;转换为BCD ORL

4、33H, A ;合并字节 HERE: SJMP HERE ;踏步 END3)调试过程如下:3.1 字节拆分后的程序运行情况及Register中的内容如下所示:字节拆分后的片内RAM内容如下:调试结果分析:由源程序分析可知,当执行到字节拆分之后,片内RAM中30H,31H,32H 中的内容应为:49H,34H,39H,累加器A中的内容应为34H,寄存器R0中应保持最初的赋值为32H,对比上图所示的内容,与分析的结果相符合。3.2 字节合并后的程序运行情况及Register中的内容如下:字节合并后的片内RAM中的内容:调试结果分析:合并程序结束后,R0中的内容始终为32H不变,累加器A中的内容为0

5、9H,片内RAM中的30H,31H,32H,33H的内容为49H,34H,39H,49H,与上图所示结果相符合。2. 数据块填充程序的调试过程如下1) 设计要求与资源分配如下:File name: fill.asm Date: 2011.8.20Designed by: CDHSource used: R0: 计数器 DPTR: 片外数据指针2) 源代码如下:ORG 0000HLJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器 MOV DPTR, #7000H ;设数据指针FILL1: MOVX

6、DPTR, A ;传送到片外RAM INC A ;A内容加1INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步 END 3) 调试结果如下:4) 程序的调试分析:由源代码可知,第一次填充7000H的内容为00H,接着每次地址加1,填充的内容也加1,且填充的次数为循环计数器一次循环的次数,此处循环计数器为R0,从00H到00H共256次,则填充次数为256次,7001H中填充01H.70FFH中填充FFH.对比分析与上图结果相符合,说明程序调试成功。3两个16位数的加法程序1) 设计

7、思路与资源分配如下:File name: add416.asm Description: 有4个无符号16进制数,连续存放在20H开始的片上数据区中,其中,第一个数a的低八位存放在20H单元中,高八位存放在21H单元中;第二个数b的低八位存放在22H单元中,高八位存放在23H单元中;第三个数c的低八位存放在24H单元中,高八位存放在25H单元中;第四个数d的低八位存放在26H单元中,高八位存放在27H单元中;a和b的和m的低位存放在40H单元中,高位存放在41H单元中;c和d的和n的低位存放在42H单元中,高位存放在43H单元中;m和n的低位和存放在R2中,高位和存放在R3中;高位进位位存放于

8、R4中。Date: 2017.9.28Designed by: AXMSource used: 20H,21H,22H,23H,24H,25H,26H,27H 40H,41H,42H,43H,50H,51H R2,R3,R42)程序流程图如下:3)源代码如下:ORG 0000HLJMP MAINORG 0100HMAIN: MoV 20H,#0FFH ;20H单元赋值a的低位MOV 21H,#0FFH ;21H单元赋值a的高位MOV 22H,#0FFH ;22H单元赋值b的低位MOV 23H,#0FFH ;23H单元赋值b的高位MOV 24H,#0FFH ;24H单元赋值c的低位MOV 25H

9、,#0FFH ;24H单元赋值c的高位MOV 26H,#0FFH ;25H单元赋值d的低位MOV 27H,#0FFH ;26H单元赋值d的高位CLR C ;C清零MOV A,20H ;从20H单元取值ADDC A,22H ;a,b低位相加MOV 40H,A ;a,b低位和存于40HMOV A,21H ;从21H单元取值ADDC A,23H ;a,b高位相加MOV 41H,A ;a,b高位和存于41HCLR A ;A清零ADDC A,#00H ;求出进位MOV 50H,A ;a,b和进位存于50HCLR C ;C清零MOV A,24H ;从24H单元取值ADDC A,26H ;c,d低位相加MO

10、V 42H,A ;c,d低位和存于42HMOV A,25H ;从25H单元取值ADDC A,27H ;c,d高位相加MOV 43H,A ;c,d 高位和存于43HCLR A ;A清零ADDC A,#00H ;求出进位MOV 51H,A ;c,d和进位存于51HCLR C ;C清零MOV A,40H ;从40H单元取值ADDC A,42H ;m,n低位相加MOV R2,A ;低位和存于R2MOV A,41H ;从41H取值ADDC A,43H ;m,n高位相加MOV R3,A ;高位和存于R3CLR A ;A清零ADDC A,#00H ;求出进位ADD A,50H ;进位相加ADD A,51H

11、;进位相加MOV R4,A ;进位存于R4HERE: SJMP HERE ;踏步 END4)运行完程序后Register中的内容和片内RAM中的内容如下:5)结果分析:由源代码可知,片内RAM中的20H,21H,22H,23H,24H,25H,26H,227H中的内容都为0FFH;a,b低位相加的和存于40H的值为0FEH,高位相加的和存于41H的值为0FFH;c.d的低位相加的和存于42H的值为0FEH,高位相加的和存于43H的值为0FFH;a,b和c,d相加的高位进位分别存于50H和51H的值为01H;m,n的低位相加的和存于R2的值为0FCH,高位相加的和存于R3的值为0FFH;进位存放

12、在R4的值为03H;对比分析上图结果相符。四、思考题1怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?答:打开Register中的内容即可查看工作寄存器,SFR中的内容;打开memory,在address框中输入如:d:20H,即可查看片内RAM中的内容;打开memory,在address框中输入如:x:7000H,即可查看片外RAM中的内容;打开memory,在address框中输入如:c:2000H,即可查看程序代码空间的内容;Disassembly窗口的作用是显示每一步指令的执行情况,包括源代码的存储位置,机器码(十六进制)和相应的助记符。2字节拆分、合并还有哪些方法,举一例说明。答:方法1:用出发指令,对操作数除以16,商即为高四位,余数为低四位。程序举例如下:假设20H单元中有操作数64H,要将其字节进行拆分,高四位存在R3,低四位存在R4,则程序源代码如下

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号