Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103052
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: 嵌入式

2014-10-21 17:33:15

        正如高级语言一样,汇编语言也分为很多种,不同的汇编语言存在着不同的语法格式,NASM是其中的一种。
       一、程序行的组成
            【标号】: 【操作码】【操作数】【注释】
            这四个均是可选的,有的程序行没有标号、只有标号或者既有标号也有指令(操作码+操作数)。
           标号其实就是当前程序行的首地址。
       二、伪指令
            伪指令是为了便于编程,告诉汇编器如何编译程序。
           1、DB、DW、DD、DQ和DT
               这5个伪指令是定义含有初值的数据,如:
               DB 12H ;定义字节数据,初始值为十六进制的12H
               DW 1234H;定义两个字节数据,
               DD  12345678H ; 定义四个字节数据,
               DQ 定义四个字节数据
               DT定义10个字节数据
           2、RESB、RESW、RESD、RESQ和REST
               这几个伪指令定义不包含初始值的
数据,实际上这些指令只是预留了一些内存空间而已。
           3、INCBIN
               引用二进制文件,如:INCBIN “test.dat”
           4、EQU
               EQU伪指令为一个符号定义了一个常量,一旦定义之后就不能再改变了,如:
               message DB ‘hello, world’ ;定义了一个标号message,它表示一个地址,从该地址开始存储12个字符
               mesglen EQU $-message ;$表示取当前程序行开始的地址,$-message就是message占用内存的大小。
           5、TIMES
              TIMES 次数  指令 ;表示重复执行指令的次数
      三、[]
            汇编语言中标号均做地址处理,[]表示取地址中的内容。
      四、常量
             常量有数字、字符、字符串和浮点数。
             注意:当字符常量超过一个时拍在前面的存储在低地址。
                       mov ax ab;  al中存储a,ah中存储b
             对于字符串常量,只适用于伪指令:DB类和INCBIN
             下述三个指令是相当的,
              DD ‘ninechars’ ;占用内存12个字节
              DD ‘nine’,'char','s';占用内存12个字节
              DB 'ninechars','0','0','0';占用内存12个字节
        五、运算符
         1、$表示当前程序行的首地址
         2、$$表示当前段的首地址
         3、OR(|)、XOR(^)、AND(&)、<<(移位运算符,左移)
        六、临界表达式
               NASM是一个二次汇编器,即第二次编译时就会产生机器代码,在第一次编译时编译器要能知道所有数据或代码占用           的内存大小。在第一次汇编中能够确定数据或代码占用空间大小的表达式称为临界表达式。
              TIMES  label-$ DB 0
              label: DB  ‘test’
               上述程序就肯定汇编不过,因为编译到第一行时不知道label-$是多少。
      七、局部标号
            .label  就是一个局部标号,注意前面有个. ,局部标号与非局部标号的结合可以够成独立标号、
     八、预处理器
            1、多行宏
           %MACRO  宏名称 参数个数
                           宏体
           %MACRO
          

 
               
              
            
阅读(1079) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~