资源描述:
《汇编语言试验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、武汉科技学院数码管显示实验报告一、实验目的学习ARM汇编语言,熟悉ARM。二、实验内容在ARM实验箱上用汇编代码实现对数码管的控制。三、实验步骤及代码分析1,实验步骤1.连接ARM实验箱与PC机。2.查看示例程序,并熟悉其操作步骤,观看仿真时其内存变化。3.修改编写数码管控制程序,使之能达到对数码管控制亮灯的效果。4.调试,编译程序,连接,下载,单步调试,运行。2,代码分析.global_start/*声明一个全局变量*/.text_start:MOVsp,#0x31000000/*分配堆栈地址*/LDRr5,=led6table/*将此数组的头地址放到r5中MOVr7,#0x0/*循环变
2、量j*/Init:LDRr4,=seg7table/*将此数组的头地址放到r4中*/MOVr6,#0x0/*循环变量i*/Change:LDRBr0,[r5],#1/*将地址为r5的字节数据放入r0中,然后将r5加1,并将r0的高24位清零*/BLleds/*调用leds函数*/计算机科学学院武汉科技学院LDRBr0,[r4],#1/*将地址为r4的字节数据放入r0中,然后将r4加1,并将r0的高24位清零*/BLledn/*调用ledn函数*/MOVr0,#0x000F0000/*将地址#0x000F0000放入r0中*/BLdelay/*调用delay函数*/ADDr6,r6,#1/*
3、将r6加1放到r6中*/ADDr7,r7,#1/*将r7加1放到r7中*/CMPr7,#0x0A/*比较r7是否为#0x0A*/BNEconLDRr5,=led6table/*将此数组的头地址放到r5中MOVr7,#0x0/*将地址#0x000F0000入r7中*/con:CMPr6,#0x10/*比较r6是否为#0x10*/BNEchangeBinit/*voidleds(charleds)*/leds:STMFDsp!,{r4-r11}/*将r4到r11入栈,满递减堆栈*/MOVr5,#0x10000006MOVr4,r0/*leds控制哪个灯亮*/STRBr4,[r5]LDMFDsp
4、!,{r4-r11}/*将r4到r11出栈,满递减堆栈*/MOVPC,LR/*voidledn(charnum)*/ledn:STMFDsp!,{r4-r11}MOVr5,#0x10000004MOVr4,r0/*ledn灯显示数字*/STRBr4,[r5]计算机科学学院武汉科技学院LDMFDsp!,{r4-r11}/*将r4到r11出栈,满递减堆栈*/MOVPC,LR/*voiddelay(longtime)*/delay:/*delay函数*/SUBSr0,r0,#1BNEdelayMOVPC,LRstop:Bstop.ltorgseg7table:.byte0xc0,0xf9,0xa
5、4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8eled6table:.byte0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xef,0xf7,0xfb,0xfd.end一、实验小结这次实验,让我对ARM实验箱以及软件环境有了初步了解,由于没有学习汇编语言对其不熟悉,所以在实验过程中遇到很多困难,通过看书以及在同学的帮助下,实现了由c语言到汇编语言之间的转换并修改达到预期的功能要求。在调试的过程中,遇到了以下几个问题:1,数据的复制,不能直接把数据从内存复制到内存,需要用到寄存器。2,源程序的
6、数据块是.LONG型的,此处要改为.BYTE,对应C语言中的char型。计算机科学学院