tag 标签: 汇编

相关帖子
相关博文
  • 热度 22
    2019-10-4 20:08
    1725 次阅读|
    0 个评论
    下载链接:https://pan.baidu.com/s/1OWw-ORbKcfrdLOnJJpwmAw 提取码:n8nk ​
  • 热度 26
    2016-6-24 14:43
    1503 次阅读|
    0 个评论
    1.编译后结果 Error : Public 'Binary2BCD' did not appear in label field  解决方法,是把Binary2BCD不要放到NAME这一行,个人理解是因为在使用NAME后边的标号时,此标号还没有创建、没有被记录在案   2.在IAR的汇编中立即数的表示方式为  MOV.W  #0XFF R4, 也可以不用0x, 但是后尾必须加h,当最高位是A-F时,前边要加0.以下三种方式均正确 MOV.W  #0xFF, R4 MOV.W  #0FFh,  R4 MOV.W  #99h,   R4   以下两种方式均回在编译时出错 MOV.W  #FFh , R4 Error : Undefined symbol:'FFh'    MOV.W #0FF R4 Error : Bad constant    以下这种方式,虽然编译不报错,但是编译器会认为是十进制 MOV.W  #99, R4   不加#会被认为是的存储器地址,被认作间接寻址,认为是地址99内容是地址X,即PC=X(PC) MOV.W  99, R4   0x和h不能同时使用,否则会编译出错 3.IAR仿真汇编窗口初识   第一列001268,表示存储器地址 第二列CF02,表示操作指令,和操作码、源/目的操作数寻址方式及形式有关 第三列0080,表示源操作数 第四列0057,表示目的操作数 第五列bic.b #0x80, BCSCTL1,表示汇编指令,                其中BCSCTL1是在.h文件的宏定义。                             #define BCSCTL1 (0x0057u) 4.当同一个.s43程序源文价下有两个以上用NAME ENDMOD模块时,只有第一个模块识别引用#include "msp430.h" 中的内容,当第二个模块引用头文件的内容时,会报不识别符号的错误。 编译信息Error : Undefined symbol:'WDTCTL' 。其中P2DIR/WDTCTL都是定义在头文件.h中的符号   5.IAR的英文分号和中文分号长得差不多,否则会报错。并且不能像Keil用鼠标一选中就能看出英文符号还是中文符号,在iar中,选中中英文时,反应一样。 6.Warning : Parts of segment DATA16_I are initialized (as in module Timer), even though it is of type DATA (and thus not promable) .代码如下   原因是在DATA(I)中也就是RAM中定义了const常量,DC16表示定义16位的const变量。 DATA(I),DATA(Z),DATA(N),都表示在RAM中定义变量,DATA(C)表示在在Flash中定义常数变量。 至此,这个warning可以有两种改正方法。一是把DC16改成DS16,二是把DATA换成DATA(C)。 前者表示在RAM中定义一个变量,后者表示在FLASH中定义一个常量   7.Fatal Error : Segment DATA_N must be defined in a segment definition option (-Z, -b or -P)  原因是RSEG后没有找到合适的在.xcl中定义的符号,这个DATA_N没有在.xcl中定义,改正如下 8. 关于变址寻址,X(Rn), X是一个地址,既可以是一个整数2(Rn),也可以是一个标号LED_TABLE(Rn), 但是这个LED_TABLE表示的是此处的地址,而不是此处地址含有的内容。Rn是寄存器,并且Rn和X的位置不能互换。也就是说,X是一个固定值,Rn偏移量,偏移的step和操作指令B/W有关
  • 热度 9
    2015-3-17 10:37
    809 次阅读|
    0 个评论
    转自http://blog.chinaunix.net/uid-20548989-id-1667484.html .section .data 汇编程序中以 . 开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇编指示(Assembler Directive)或伪操作(Pseudo-operation),由于它不是真正的指令所以加个“ 伪 ”字。 .section 指示把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设置不同的读、写、执行权限。 .data 段保存程序的数据,是可读可写的,相当于C程序的全局变量。本程序中没有定义数据,所以 .data 段是空的。 .section .text .text 段保存代码,是只读和可执行的,后面那些指令都属于 .text 段。 .globl _start _start 是一个符号(Symbol),符号在汇编程序中代表一个地址,可以用在指令中,汇编程序经过汇编器的处理之后,所有的符号都被替换成它所代表的地址值。在C语言中我们通过变量名访问一个变量,其实就是读写某个地址的内存单元,我们通过函数名调用一个函数,其实就是跳转到该函数第一条指令所在的地址,所以变量名和函数名都是符号,本质上是代表内存地址的。 .globl 指示告诉汇编器, _start 这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号(在第 5.1 节 “目标文件”详细解释)。 _start 就像C程序的 main 函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的 _start 符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个 _start 符号并且用 .globl 声明。如果一个符号没有用 .globl 声明,就表示这个符号不会被链接器用到。 _start: 这里定义了 _start 符号,汇编器在翻译汇编程序时会计算每个数据对象和每条指令的地址,当看到这样一个符号定义时,就把它后面一条指令的地址作为这个符号所代表的地址。而 _start 这个符号又比较特殊,它所代表的地址是整个程序的入口地址,所以下一条指令 movl $1, %eax 就成了程序中第一条被执行的指令。
  • 热度 17
    2014-5-6 11:07
    1059 次阅读|
    0 个评论
    再次对EDN的编辑功能表示无语,这篇文章竟然说超字数限制!
  • 热度 17
    2012-3-19 22:18
    1457 次阅读|
    0 个评论
    SN 单片机:M2Asm133 汇编软件的简体中文版本: 对主要常用菜单,提示,对话框进行了简体中文汉化,如果希望使用简体中文版本的朋友,请下载使用. 解开压缩包" hh_M2Asm133.rar" 后,把里面的主程序前面的 hh_ 去掉,然后覆盖软件安装目录里的同名文件即可.(请您备份原来的英文文件.以便需要时恢复.)  
相关资源