电子电路 功放电路 电子制作 集成块资料 电子报 pcb 变压器 元器件知识 逆变器 电路图 开关电源 传感器技术 led 电磁兼容
电子电路图
当前位置: 首页 > 电子电路 > 设计编程

嵌入式汇编语言学习经验

时间:2018-11-24 13:28:30来源:网络 作者:admin 点击:
最近参与了一个项目,需要用嵌入式汇编写测试程序。汇编程序写过,C程序也写过,但是将它们混合起来写还是第一次,完全没有概念。只能上网找资料,自己慢慢摸索。  自己一

最近参与了一个项目,需要用嵌入式汇编写测试程序。汇编程序写过,C程序也写过,但是将它们混合起来写还是第一次,完全没有概念。只能上网找资料,自己慢慢摸索。

  自己一直用Windows操作系统,但是我们的项目是在Linux系统上,这两者的汇编语言系统是不同的,windows一直是Intel汇编,而Linux是At&T汇编。为了调试的方便,我决定现在windows中尝试着写点嵌入式汇编,然后再在Linux中写(主要原因是自己对Linux调试不熟悉)。

  首先遇到的第一个问题是,格式到底是什么。上网查资料,前篇一律,都是_asm_ _volatile_(…);格式,但是自己弄的时候总是不行,说明网络虽好,但是不可盲目相信。经过多番测试,我发现windows下嵌入式汇编的格式只有_asm关键字,也没有volatile;以前的括号现在也变成大括号,最后也没有引号。我自己写的一个简单测试程序为:

  #include

  #include

  //测试bsf指令

  void test()

  {

  int value,index=32;

  _asm {

  mov eax,index

  bsf ebx,eax

  mov value,ebx

  }

  printf("value is %d/n",value);

  }

  void main()

  {

  printf("Hello World/n");

  test();

  }

  Windows嵌入式汇编的特点是:

  1. 汇编是Intel汇编,而不是AT&T汇编;

  2. 关键字是_asm,而不是其他,这个有可能和自己的环境有关,如果你自己重新定义宏,那就是你自己定义的关键字;3. 虽说有volatile关键字,但是用上却报错,具体我也不知道怎么用;4. 没有冒号指定输入输出,要输入和输出的数可以直接在汇编语言中使用;5. 汇编代码要用大括号包围,而不是小括号,而且最后也没有分号;6. 如果不用大括号包围,则必须每句汇编代码之前都有_asm关键字。

  从上面的叙述中,可以看出貌似windows嵌入式汇编要简单很多。

  在windows中搞定之后,就要在Linux中进行测试。我首先做的就是直接复制在windows中的程序到Linux中,很明显自己的无知是要报错的。

  有经过多番测试,得到在Linux中执行无误的代码为:

  #include

  void test()

  {

  int bsf=0,bsr=0,input=0x12345,flag;

  asm volatile ("movl %3,%%eax/n"

  "movl %3,%%ebx/n"

  "bsf %3,%%cx/n"

  "movzwl %%cx,%0/n"

  "bsr %3,%%dx/n"

  "movzwl %%dx,%1/n"

  "pushf/n"

  "pop %2/n"

  :"=r"(bsf),"=r"(bsr),"=r"(flag)

  :"m"(input)

  );

  printf("bsf value is %d/n",bsf);

  printf("bsr value is %d/n",bsr);

  printf("flag is %x/n",flag);

  }

  int main()

  {

  printf("Hello World/n");

  test();

  return 0;

  }

  从结构来看,Linux下的要麻烦不少。首先用的汇编是windows程序员不熟悉的AT&T汇编,而且还要定义输入输出,寄存器用起来还要两个%……总之,比较麻烦。但是我没有贬低Linux的意思,只要用好了,功能还是很强大的。

  Linux下嵌入式汇编的特点是:容-源-电-子-网-为你提供技术支持

本文地址:http://www.dziuu.com/dz/22/15430445482641.shtml

本文标签:

12下一页尾页
顶一下
0%
返回首页
0
0%

------分隔线----------------------------

    猜你感兴趣:

  • 胆机电路图

        通常高压机制作,最好采用大细房设计指高压电源与推动级的低压电源分开,但此机采用845整流,不想浪费845的整流的声音表现,所以采用30秒时间继电器作低压缓冲,实行也相当有效,此机并无故障出现.关健是将时间

  • CXA1019S收音机电路图及引脚功能、电路参数

    本文介绍CXA1019S收音机电路图及引脚功能参数等,在收音机电路中,应用CXA1019S集成电路的很多,当然问题也出现很多,下面介绍CXA1019S电路原理。

  • 经典STK3048电路图(功放电路)

      基于STK3048和STK6153的制作原理及应用电路如图。其线路的简洁已经达到上限。其中,R1和R2可以直接使用成品板上的。当通电后如果管子不烫手并无其它异常的时候,就可以空载调整RP,使得R1、R2上的压降为10~13m

  • 由MK909D构成的USB音箱电路

      MK909D的USB音箱电路采用最新的USBDAC芯片,支持USB1.1以及USB2.0接口。内建64级音量控制,并有记忆功能;支持三种音量调节方式(A)轻触按键;(B)电位器;(C)编码器。支持输出静音功能,48K的DA采样,内建

  • 怎样选择最适合的单片机

    对于新手来说,首先根据自己学的什么样单片机就选什么类型的单片机,熟悉什么类型的单片机就选什么类型的单片机。因为单片机不仅要设计电路,还要设计控制软件。选自己熟悉的单片机上手最快,也最容易获得成功。下面介绍如何选择最适合的单片机。

  • 单片机晶振的作用是什么

    单片机晶振的作用是什么 在初学单片机的时候,总是伴随很多有关于晶振的问题,其实晶振就是如同人的心脏,是血液的脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题

  • 用keil软件编写单片机程序的步骤

    Keil单片机编程软件Keil C51是单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇

  • 看门狗电路电路图及工作原理

    在工业控制中常使用MCS-51系列单片机,为了防止程序跑飞往往外接一个看门狗电路。看门狗电路可完成加电复位和死机复位两种功能。成品的看门狗集成电路如MAX813L等价格一般都

  • 镍镉电池充电器电路图及原理

    镍镉电池充电器电路图及原理 镍镉电池是一种直流供电电池,镍镉电池可重复500次以上的充放电,经济耐用。其内部抵制力小,既内阻很小,可快速充电,又可为负载提供大电流,

  • 电感线圈的应用种类及主要性能参数

    电感线圈也是家用电器、仪器仪表及其他电子产品中常用的元件之一,是利用电磁感应的原理进行工作的电子元器件。它的电特性和电容器相反,“通低频,阻高频”。高

  • DY336设计的音响前级放大电路的简介

      如图所示电路是功放前级的其中一路放大电路。电路采用3只DY336低噪声、高品质运放。其中A1用作输入信号的缓冲跟随器,以减轻信号源的负担。A2和RPl组成负反馈音量调节器,这种音量的调节方式能减小RPl阻值变化所

  • OPA502构成的组合音响放大器电路

      该高保真组合音响放大电路使用了超低噪声精密运放OPA27作为前置放大。该电路最大输出功率可达150W。OPA27采用同相输入方式可提高其输入阻抗,当电源电压为±15V时,其输出线性动态范围±12V。当输出功率为50W时

  • 浅谈关于10W功率放大的电路图

      输出功率 Po=VoIo=(VomIom)/2=(Vom)2/(2RL)。管耗 PT=PT1+PT2=(2/RL)(VCCVom/3.14 -Vom2/4)。电源供给功率 PV=PO+PT=2VccVom/(3.14RL)效率 η=3.14Vom/(4Vcc)。当 Vom=0.637Vcc 时,每个功率管有

  • 经典HA1388功放电路图

      HA1388是音频功率放大集成电路,应用电路,采用12脚单列直插塑料封装结构。具有很多优点,该电路在电源电压13.2V、 4负载阻抗和10%失真时,输出功率为l8W。 :

  • 扬声器极性判别仪电路电路及其原理

      图中集成时基电路IC1、被测扬声器SP1等元件组成尖脉冲声激励发射电路,由SP1发射间隔T约为0.69秒的尖脉冲声信号,由于阻尼二极管D2的作用,使SP1的自由振荡余振波小得可以忽略不计,波形如图

  • 基于TDA2822M的小功率有源音箱电路

      TDA2822M是一片非常经典的优秀音频功率放大集成电路,它广泛用于便携式收录机中,在一些功率稍大的,尤其是带有机身扬声器的随身听中也可以经常看到TDA2822M的身影。  TDA2822M的标称输出功率(1KHz,8Ω,9V,

  • 音频压缩器电路的一般应用

      压缩器指在有些装设有杜比数字(DD)解码功能的功放接收机和前置放大器中采用的一种电路。系用来减少音量的峰值和增加低电平声音的音量。深夜为了不影响邻居或家人的休息,便可以使用动态范围压缩器来聆听音乐和

  • MAX4477构成的声音采集应用电路图

        声音测量通过驻极体XF-18D麦克风阵列进行测量。XF-18D麦克风是电容式微麦克风,输入信号为声音信号,输出信号经MAX4477构成的前置放大电路后进行电压值A/D采样。处理器的A/D采样频率可达20CkHz,可捕获到

  • 电机正反转控制电路图及实物接线图

    电机正反转控制电路图及实物接线图;;;要实现电机正反转控制就得改变电动机的其中两相,也就是换相,如下图中,从主电路图中可以看出,是更换了A与B相的顺序来实现电机正反转控制的。;;在介绍工作原理前,先给大家介绍一些专业词语。

  • 电动机型号字母含义及参数详解

    电动机型号字母含义1、产品代号即电机所属的系列及类型代号,一般采用电机所属系列和名称汉语文字中有代表性的一个或者几个字母的汉语拼音字头来组成。当字母代号后面跟有一

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
表情:
名称: E-mail: 验证码: 匿名发表
发布文章,推广自己产品。
推荐内容
  • 特斯拉线圈原理揭秘解读

    特斯拉线圈原理揭秘解读特斯拉线圈是一种射频 振荡器,可驱动空芯双调谐振变压器,在低电流时产生高压。特斯拉的原始电路以及大多数现代线圈使用简单的火花隙来激发调谐变

  • 51单片机对LCD1602液晶显示器的控

    51单片机对LCD1602液晶显示器的控制 要想实现人机交互,显示装置是不可缺少的。这篇文章主要关于如何控制液晶显示,并在此基础上加上定时器的功能,把原来已用数码管显示

  • 介绍编码器的工作原理和作用

    编码器的工作原理和功能:它是一个旋转传感器,将旋转位移转换为一系列数字脉冲信号。这些脉冲可用于控制角位移。如果编码器与齿轮杆或螺钉组合,可用于测量线性位移。

热门标签