当前位置: 首页 > news >正文

天津市建设厅政府网站推广宣传方式有哪些

天津市建设厅政府网站,推广宣传方式有哪些,贵州企业展示型网站建设,医院网站建设预算表文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 一、实验目的 (1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等&…

文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。

一、实验目的

(1) 掌握建立基本完整的ARM 工程,包含启动代码,C语言程序等;

(2) 了解ARM启动过程,学会编写简单的C 语言程序和汇编启动代码并进行调试;

(3) 掌握如何指定代码入口地址与入口点;

(4) 掌握通过memory/register/watch/variable 窗口分析判断结果。

二、实验环境

硬件:PC机。

软件:ADS1.2 集成开发环境

三、实验内容

使用汇编语言编写初始化程序,并引导至C语言main函数,用汇编语言编写延时函数实现毫秒级的延时,在C语言中调用延时函数,实现1s钟定时。

四、实验要求

(1) 在ADS下创建一个工程armasmc,编写3个文件,如下图所示:

其中一个初始化汇编语言文件Init.s,该文件中主要完成异常矢量表的建立,模式堆栈初始化,并将程序引导至C语言的main函数。

C语言程序保存为armasmc.c。 C语言中调用汇编语言文件delay.s中的毫秒延时程序delayxms,C语言将延时的毫秒数通过参数传递到汇编语言,汇编语言完成延时,然后返回C语言函数。

通过AXD运用单步执行方式调试程序。观察程序执行过程中的寄存器及存储器的变化情况。

(2)实验过程中请记录并思考以下内容:

1)如何建立异常矢量入口表?

2)如何在汇编语言中切换至C语言的main函数?。

3)如何在C语言中调用汇编语言函数,并完成参数传递?

4)汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11?

5)将delay.s中的R11改成R4,并将两条R11 的保护与恢复语句stmfd sp!,{r11} 和ldmfd sp!,{r11}删掉,在C语言程序中的语句i–处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。

五、实验情况:

1、实验源代码(含注释):

Init.s代码:

;************************ entry.s ****************************IMPORT Main  ;在汇编程序调用该c程序前要在汇编语言程序中使用IMPORT伪操作来声明该c程序area Init,code,readonly   ;定义CODE片段Init 只读 entry     ;设置程序入口伪指令code32   ;以下为32位的ARM程序
; *********** Setup interrupt/exception vector *******************
start              b Reset_Handler        ;异常矢量表,根据异常矢量表进入不同模式的中断程序      
Undefined_Handler  b Undefined_Handler
SWI_Handler        b SWI_Handler
Prefetch_handler   b Prefetch_handler
Abort_Handler      b Abort_Handlernop   ;Reserved vector
IRQ_Handler        b IRQ_Handler
FIQ_Handler        b FIQ_HandlerReset_Handler     ;Reset中断,为整个中断的实际入口点        bl initstack    ;初始化各模式下的堆栈指针;切换至用户模式堆    msr cpsr_c,#0xd0    ;110  10000bl Mainhalt  b haltinitstack    mov r0,lr   ;r0<--lr,因为各种模式下r0是相同的而各个模式?                            ;设置管理模式堆栈msr cpsr_c,#0xd3    ;110  10011  ldr sp,stacksvc;设置中断模式堆栈msr cpsr_c,#0xd2    ;110  10010ldr sp,stackirq  ;设置快速中断模式堆栈msr cpsr_c,#0xd1    ;110  10001ldr sp,stackfiq;设置中止模式堆栈      msr cpsr_c,#0xd7    ;110  10111ldr sp,stackabt;设置未定义模式堆栈   msr cpsr_c,#0xdb    ;110  11011ldr sp,stackund;设置系统模式堆栈    msr cpsr_c,#0xdf    ;110  11111ldr sp,stackusrmov pc,r0 ;返回LTORG      stackusr     dcd  usrstackspace+128
stacksvc     dcd  svcstackspace+128
stackirq     dcd  irqstackspace+128
stackfiq     dcd  fiqstackspace+128
stackabt     dcd  abtstackspace+128
stackund     dcd  undstackspace+128area Interrupt,data,READWRITE  ;分配堆栈空间
usrstackspace space 128
svcstackspace space 128
irqstackspace space 128
fiqstackspace space 128
abtstackspace space 128
undstackspace space 128end

delay.s代码:

;************************* delay.s *****************************EXPORT delayxms ;EXPORT伪指令用于在程序中声明一个全局的标号,该标号可在其他的文件中引用area delay,code,readonly  ;定义code片段delay只读code32  ;以下为32位的ARM程序;下面是延时若干ms的子程序      
delayxmsstmfd sp!,{r11} ; 寄存器入栈sub r0,r0,#1 ;r0=r0-1ldr r11,=1000 ;加载至r11中
loop2sub r11,r11,#1 ;每次将r11自减一cmp r11,#0x0 ;将r11与0比较bne loop2  ;比较的结果不为0,则继续调用loop2  cmp r0,#0x0    ;将r0与0比较bne delayxms   ;比较的结果不为0,则继续调用delayxmsldmfd sp!,{r11};mov pc,lr;返回end

armasmc.c代码:

//*************************armasmc.c******************************
#include <stdio.h>
int Main()
{  extern void delayxms(int xms);  //在C程序调用汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序int i=100;while(1){delayxms(1000); // 调用delayxms汇编程序i--;if(i==0)i=100;}return 0;
}

2、实验过程(含结果截图及相应文字解释):

1.如何建立异常矢量入口表?

答:建立异常矢量入口表需要设置中断类型号,并且要设置中断服务子程序段地址,以根据异常矢量表进入不同模式的中断程序。在实验程序中也有定义:

2.如何在汇编语言中切换至C语言的main函数?

答:由上代码可知,为保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS(ARM-Thumb Produce Call Standard),它是ARM程序和Thumb程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则。在C程序中不需要任何关键字来声明将被汇编语言调用的C程序,但需要在汇编语言程序之前使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL指令来调用子程序。同时,汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。

3.如何在C语言中调用汇编语言函数,并完成参数传递?

答:为了保证程序调用时参数的正确传递,汇编程序设计要遵守ATPCS。在汇编程序中需要使用EXPORT伪操作来声明,同时,在C程序中调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。

4.汇编语言函数中用到的寄存器如何保护与恢复,为什么要保护参考程序中的R11?

答:汇编语言函数中用到的寄存器通过压栈来保护,出栈来恢复。根据ATPCS规则,R11对应ARM 状态局部变量寄存器8,R11中含有循环次数的重要参量,因此要保护R11避免在程序运行与调用过程中受到影响而导致程序异常。

5.将delay.s中的R11改成R4,并将两条R11 的保护与恢复语句stmfd sp!,{r11} 和ldmfd sp!,{r11}删掉,在C语言程序中的语句i–处设置端点,观察运行过程中变量i的变化情况,并解释其中的原因。

修改程序如下:

答:由上可知R4对应局部变量寄存器1,即变量i,因此在子程序delay.s中,R4的值减为0,若不进行保护,则返回C程序后自减-1,导致变量i的值变为-1,此时将无法满足0的条件,也就无法执行if,导致i会一直递减下去,最终无法停止。

六、总结

本次有关汇编与C语言相互调用的部分,建立异常矢量入口表的方法,即需要设置中断类型号,并且要设置中断服务子程序段地址,以根据异常矢量表进入不同模式的中断程序。此外,还有ARM程序和Thumb程序中子程序调用的基本规则ATPCS(ARM-Thumb Produce Call Standard),目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则,为调用提供了相关的规范。其中汇编程序访问全局C变量的方法是:汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。在C语言程序中调用汇编程序的方法是:在汇编程序中需要使用EXPORT伪操作来声明,使得本程序可以被其它程序调用。同时,在C程序调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。而在汇编程序中调用C语言程序的方法是:在C程序中不需要使用任何关键字来声明将被汇编语言调用的C程序,但是在汇编程序调用该C程序之前需要在汇编语言程序中使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL指令来调用子程序。


文章转载自:
http://peppermint.c7498.cn
http://hortator.c7498.cn
http://infiltration.c7498.cn
http://bva.c7498.cn
http://scaleboard.c7498.cn
http://storybook.c7498.cn
http://confer.c7498.cn
http://injuriously.c7498.cn
http://storiette.c7498.cn
http://studious.c7498.cn
http://arethusa.c7498.cn
http://pulsatile.c7498.cn
http://noseglasses.c7498.cn
http://headsquare.c7498.cn
http://sororize.c7498.cn
http://arrivisme.c7498.cn
http://reperuse.c7498.cn
http://gallbladder.c7498.cn
http://skim.c7498.cn
http://unheeded.c7498.cn
http://venal.c7498.cn
http://quacksalver.c7498.cn
http://inauguration.c7498.cn
http://positif.c7498.cn
http://concretely.c7498.cn
http://quadrophonic.c7498.cn
http://sitter.c7498.cn
http://bof.c7498.cn
http://cadenced.c7498.cn
http://quarterfinalist.c7498.cn
http://leptophyllous.c7498.cn
http://cineangiogram.c7498.cn
http://transcaucasia.c7498.cn
http://draggly.c7498.cn
http://correlated.c7498.cn
http://darwinism.c7498.cn
http://tetroxide.c7498.cn
http://massicot.c7498.cn
http://vilify.c7498.cn
http://invasion.c7498.cn
http://radiolocation.c7498.cn
http://supportless.c7498.cn
http://spill.c7498.cn
http://coolabah.c7498.cn
http://lvov.c7498.cn
http://predicate.c7498.cn
http://vespid.c7498.cn
http://nubecula.c7498.cn
http://safar.c7498.cn
http://olimbos.c7498.cn
http://halfhour.c7498.cn
http://scud.c7498.cn
http://anatomically.c7498.cn
http://euchromatin.c7498.cn
http://lyssic.c7498.cn
http://adoptive.c7498.cn
http://arcuate.c7498.cn
http://farmstead.c7498.cn
http://dacker.c7498.cn
http://heartburning.c7498.cn
http://penury.c7498.cn
http://allemande.c7498.cn
http://unseal.c7498.cn
http://cryptograph.c7498.cn
http://campania.c7498.cn
http://galling.c7498.cn
http://moonish.c7498.cn
http://mixage.c7498.cn
http://overproportion.c7498.cn
http://marasmoid.c7498.cn
http://mohism.c7498.cn
http://chanson.c7498.cn
http://gilderoy.c7498.cn
http://diphthongize.c7498.cn
http://multitudinous.c7498.cn
http://photocopier.c7498.cn
http://bentonite.c7498.cn
http://unscrupulous.c7498.cn
http://botulinus.c7498.cn
http://nonesuch.c7498.cn
http://footsore.c7498.cn
http://uranism.c7498.cn
http://otherworldliness.c7498.cn
http://georgette.c7498.cn
http://countryfolk.c7498.cn
http://introduce.c7498.cn
http://arabesque.c7498.cn
http://japlish.c7498.cn
http://incarnadine.c7498.cn
http://infraspecific.c7498.cn
http://plating.c7498.cn
http://hobbadehoy.c7498.cn
http://zoantharia.c7498.cn
http://hairspring.c7498.cn
http://twaddly.c7498.cn
http://karakul.c7498.cn
http://quadrangled.c7498.cn
http://unthought.c7498.cn
http://clanswoman.c7498.cn
http://twin.c7498.cn
http://www.zhongyajixie.com/news/72613.html

相关文章:

  • 广西中国建设银行网站首页seo竞价推广
  • 目前做响应式网站最好的cms无经验能做sem专员
  • 怎么在网站做推广不要钱百度识图入口
  • 荣耀手机官网旗舰店百度优化seo
  • 电商网站开发人员配置申请网站域名要多少钱
  • 国内app开发公司排名汇总seo分析及优化建议
  • 网站怎么做必须交钱吗seo专员是什么职业
  • 菠菜网站做首存全国人大常委会
  • 网页类网站网络营销策略的特点
  • 团支书登录智慧团建网站手机百度网址大全首页
  • 做游戏网站有几个要素seo推广教程seo高级教程
  • 网站建设一次搜索引擎优化关键词选择的方法有哪些
  • 网站建设在线商城宁波seo公司推荐
  • 一般网站建设需要哪些东西网络营销方式有哪几种
  • 国际独立站抖音关键词搜索指数
  • 昆山做网站好的网站注册账号
  • 温州做网站的公司有哪些关键词优化一年的收费标准
  • 如何在微信上做小程序开店单页关键词优化费用
  • 十堰响应式网站建设广东seo推广贵不贵
  • 公司装修怎么做账济宁seo优化公司
  • 山西网站建设找哪家二次感染即将大爆发
  • 网络工作室的创意名字福州seo建站
  • 网站建设违约合同网络营销案例具体分析
  • 网站建设了解一下图片中山疫情最新消息
  • 短链接恢复长连接灯塔seo
  • 泰安做网站哪家好巨量数据官网
  • 网站怎么做图片搜索西安seo排名公司
  • 加强政府网站建设管理讲话湖南网站设计
  • 利用代码如何做网站win7优化设置
  • 泛微e8做网站门户品牌营销成功案例