微机实验.doc_第1页
微机实验.doc_第2页
微机实验.doc_第3页
微机实验.doc_第4页
微机实验.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机实验报告 实验名称 Keil的使用与汇编语言上机操作 指导教师 罗志祥 专业班级 * 姓名 * 学号 * 联系电话 * 一、 任务要求1.掌握Keil环境的使用 1)字节拆分、合并:调试e421.asm程序, 观察相关寄存器和单元的内容。 2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2. 编写多个十六位数的加法程序有4个十六位无符号数,连续存放在20H开始的片上数据区中,低八位先存,高八位在后。要求:和存于R3(高八位)和R2(低八位),进位位存于R4。二、 设计思路实验1中的两个小实验已经给出了源代码,不用设计,只要运行就可以,关键是后面的一个实验。第二个实验中,把四个十六位按照顺序依次存放到20H至27H中,低位先存,高位后存,然后用R0,R1指向前两个数的低位,相加后,将和放入R2中,然后R0,R1指向高位,通过ADDC相加,和放入R3,同时将进位放入R4中。然后,再将R2,R3看做一个数,和第三个数还有第四个数相加,得到最后的结果。三、 资源分配对任务2中四个数初值分别存于片内RAM中的20H21H,22H23H,24H25H,26H27H。运算结果和存于R3(高八位)和R2(低八位),进位位存于R4。四、 流程图 结束开始R4 R4+Cy进位存入R4单元初始赋值R3 R3+(28H) + Cy高位相加存入R3R0 (20H)指针赋初值R2 A R2低位相加存入R2R2 (20H)+(22H)低位相加存入R2A R1 (27H)指针赋值R3 (21H)+(23H)+Cy高位相加存入R3R4 R4+Cy进位存入R4R4 Cy+00H进位处理存入R4R3 R3+(26H)+Cy高位相加存入R3R2 A R2低位相加存入R2A R1 (25H)第三个数,指针赋值五、 源代码 (含文件头说明、语句行注释)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 -33H ORG 0000HLJMP MAINORG 0100HMAIN: MOV 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 33H, A ;合并字节 HERE: SJMP HERE ;踏步 END 2数据块填充程序:将片外RAM 7000H-70FFH单元按一定规律填充File name: fill.asm Date: 2011.8.20Designed by: CDHSource used: R0: 计数器 DPTR: 片外数据指针ORG 0000HLJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器 MOV DPTR, #7000H ;设数据指针FILL1: MOVX DPTR, A ;传送到片外RAM INC A ;A内容加1INC DPTR ;修改数据指针 INC R0 ;修改循环计数器 CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步 END 3 编写多个十六位数的加法程序Date: 2016.9.22Designed by: 张恒Source used: R0,R1: 地址指针 20H27H:BCD data ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,30H MOV 20H,#11H ;赋值 MOV 21H,#12H MOV 22H,#13H MOV 23H,#14H MOV 24H,#15H MOV 25H,#16H MOV 26H,#17H MOV 27H,#18H MOV R0,#20H ;将地址为20H的数赋给地址指针R0 MOV R1,#22H ;将地址为22H的数赋给地址指针R1 MOV A,R1 ;将地址指针R1的值传递给A ADD A,R0 ;地址R0中的值与A中的值相加赋给A MOV R2,A ;将A赋给R2地址中 INC R0 ;R0的地址加一 INC R1 ;R1的地址加一 MOV A,R0 ;将地址指针R0的值传递给A ADDC A,R1 ;地址R1中的值与A中的值还有cy相加赋给A MOV R3,A ;将A赋给R3地址中 CLR A ;清空A ADDC A,#00H ;将进位赋给A MOV R4,A ;将A赋给R4 INC R1 ;R1的地址加一 MOV A,R1 ;将地址指针R1的值传递给A ADD A,R2 ;地址R2中的值与A中的值相加赋给A MOV R2,A ;将A赋给R2地址中 INC R1 ;R1的地址加一 MOV A,R1 ;将地址指针R1的值传递给A ADDC A,R3 ;地址R3中的值与A中的值还有cy相加赋给A MOV R3,A ;将A赋给R3地址中 CLR A ;清空A ADDC A,#00H ;将进位赋给A ADD A,R4 ;将A与R4地址中的值相加赋给A MOV R4,A ;将A赋给R4 INC R1 ;R1的地址加一 MOV A,R1 ;将地址指针R1的值传递给A ADD A,R2 ;地址R2中的值与A中的值相加赋给A MOV R2,A ;将A赋给R2地址中 INC R1 ;R1的地址加一 MOV A,R1 ;将地址指针R1的值传递给A ADDC A,R3 ;地址R3中的值与A中的值还有cy相加赋给A MOV R3,A ;将A赋给R3地址中 CLR A ;清空A ADDC A,#00H ;将进位赋给A ADD A,R4 ;将A与R4地址中的值相加赋给A MOV R4,A ;将A赋给R4 END ;结束六、 程序测试方法与结果1字节拆分、合并程序拆分合并2数据块填充3多个十六位数的加法程序输出输入的值思考题1 怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?答:工作寄存器与SFR的内容在调试阶段的“Register窗口”查看,外围设备的内容在“Peripherals项目”中查看,也可以通过相对应的固定地址在“Memory1窗口”中查看。Dis assembly窗口中设置断点。2 字节拆分、合并还有哪些方法,举一例说明。 MOV 30H, #49H MOV A, #30HXCHD A, #03HSWAP AMOV 31H,AMOV A, 30HXCHD A,#30HMOV 32H,A3. 若按递减1规律填充数据块,应如何修改程序? 答:ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#40HFILL: CLR A MOV A,#0FFHMOV R0, #00H MOV DPTR, #7000H FILL1: MOVX DPTR, A DEC A INC DPTR INC R0 CJNE R0, #00H, FILL1 HERE: SJMP HERE END4. 若从7010H单元开始,连续填充20个字节,应该如何修改程序? 答:修改如下 ORG 0000HLJMP MAIN ORG 0100HMAIN: MOV SP,#40HFILL: CLR A MOV A,#00H MOV R0, #14H MOV DPTR, #7010H FILL1: MOVX DPTR, A INC A INC DPTR DEC R0 CJNE R0, #00H, FILL1 HERE: SJMP HERE END 5. 若完成双字节BCD码加法,应如何修改程序?答: ORG 0000HLJMP MAIN ORG 0100HMAIN:MOVA,30HADDA,32HDAAMOVR0,AMOVA,31HADDCA,3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论