第2节 汇编语言
推荐给好友
打印
加入收藏
更新于2008-08-24 09:11:37

3.2.1 汇编结构及特点

汇编语言是一种采用助记符来编写程序的语言,它由操作符和操作数两个部分组成,其中操作数又分为源操作数和目的操作数。汇编语言比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
由于汇编语言中使用了助记符,用汇编语言编制的程序必须通过预先放入计算机的"汇编程序"的加工和翻译,才可以变成能被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。


3.2.2 汇编寻址

在学习寻址方式之前,应首先了解符号指令的操作数中常用的符号,各个符号的意义如下表3-1 所示:

                                                          表3-1 指令中助记符的意义


F2MC-8FX 有如下十种类型的寻址方式:
1.直接寻址
当第一个操作数为直接地址时,就可以对“0000H”到“047FH”的地址空间直接访问。在这种寻址方式中,当第一个操作数为“00H”到“7FH”时,访问“0000H”至“007FH”, 而当第一个操作数为“80H”到“FFH”时,通过设置直接组指针(DP),将其映射到“0080H”到“047FH”的地址空间来访问,如下图所示:



由于第一个操作数92H在“80H”~ “FFH”范围内,故需要将其映射到“0080H”到“047FH”的地址空间。当DP=001B 时,其对应的访问地址为“0100H”~ “017FH”,因此第一个操作数的地址为(0100+92-80)H=0112H,如上图所示,即将“45H”送入“0112H”中。

2.扩展寻址
这种寻址方式用于指令中的扩展地址(16位)访问整个64K 字节的空间,在这种寻址方式中,将第二个操作数(即扩展地址)中的两个字节的数据送入第一个操作数中,如下图所示:


                                                       图3-2 扩展寻址

将扩展地址“1234H”~“1235H”中的16 位数据“5678H”送入到累加器中。

3.位直接寻址
这种寻址方式用于对应指令表中的“dir:b”时,访问“0000H”到“047FH” 地址中的第b 位。当操作数为“00H”~“7FH”时,访问“0000H”至“007FH”,而当操作数为“80H”~ “FFH”时,通过设置直接组指针(DP),将其映射到“0080H”到“047FH”的地址空间来访问,如下图所示:




上图中的dir 为“34H”在“00H”~ “7FH”内,故直接将“0034H”地址中的bit2置“1”。

4.变址寻址
这种寻址方式对应指令表中的“@IX+off”,用于寻址整个64K 字节的空间,在这种寻址方式中,将变址寄存器(IX)中的地址加上偏移量(off)得到所需要的地址,如下图所示:



如上图所示,IX+off=27A5H+5AH=27FFH,即将27FFH 和2800H 地址中的值送到累加器中。

5.指针寻址
这种寻址方式对应指令表中的“@EP”, 用于寻址整个64K 字节的空间,在这种寻址方式中,EP(附加指针)的值为地址,如下图所示:



如上图所示,将EP 地址27A5H 和27A6H 中的值1234H 送到累加器中。

6.通用寄存器寻址
这种寻址方式对应指令表中的“Ri”,用于寻址通用寄存器区域中的寄存器组,在这种寻址方式中,寄存器组的起始地址为“0100H”,通过RP 的值确定是32 个寄存器组中的哪一组,操作码的低三位确定访问寄存器组中的哪一个寄存器,如下图所示:



如上图所示,被访问寄存器的地址为:0100H+8*RP(01010B)+6=0156H,即将0156H寄存器中的值送入累加器中。

7.立即数寻址
这种寻址方式对应指令表中的“#d8”,用于需要立即数时,在这种寻址方式中,操作数即为立即数,操作数的长度可以为8 位,也可以为16 位,如下图所示:



8.向量寻址 这种寻址方式对应指令表中的“#vct”,用于跳转到子程序地址。在这种寻址方式中,
“#vct”为操作码,对应跳转到向量表的地址如下表所示:

                                                   表3-2 向量寻址





如上图所示,将#5对应地址FFCAH:FFCBH 中的值FEDCH 送入PC 中。

9.相对寻址
这种寻址方式对应指令表中的“rel”,用于跳转到当前PC(程序计数器)128 字节范围内。在这种寻址方式中,将操作数的值与PC 的值相加,得到新的PC 的值,如下图所示:



10.固有寻址
这种寻址方式在指令表中没有操作数,它由运行时的操作码决定。在这种寻址方式中,指令的执行取决于每一条指令,如下图所示:

3.2.3 汇编指令

富士通的单片机汇编指令主要由以下几类组成:
1.专用指令 

  • JMP @A
    将累加器A中的值送入PC(程序累加器)中,程序跳转到新的PC 处执行,如下图所示:
  • MOVW A,PC
    这条指令与JMP @A 的功能相反,它把PC 中的值存入累加器A 中,当执行完这条指令后,累加器中的值与储存的下一条指令的地址值相同,而不是储存的这条指令的操作码的地址,如下图所示:
  • MULU A
    这条指令将AL 和TL 中的无符号数相乘,并将16bit 结果放在累加器A 中,临时累加器T 中的值不变,在指令执行前,不使用AH 和TH 中的值。如下图所示:
  • DIVU A
    这条指令将T 中的16bit 数除A 中的16bit 无符号数,并把16bit 商存在累加器A 中,16bit 余数存在临时累加器T 中。如下图所示:
  • XCHW A,PC
    这条指令交换累加器A 和程序计数器PC 中的值,指令执行前,程序跳转到累加器A 中的地址,指令执行后,A中的值为这条指令的下一条指令的地址,如下图所示:

                                                                   图3-15 XCHW A,PC
  • CALLV #vct
    这条指令用于跳转到指令表中对应地址的子程序中,并把返回地址(PC的值)保存在堆栈指针中,指令执行完后,PC保存在堆栈中的值为下一条指令的地址,如下图所示:

2.位操作指令(SETB,CLRB)
位操作指令主要包括SETB 和CLRB 两个,在这个指令中,可以设置寄存器或RAM 中指定位为1( SETB)或0( CLRB) ,但是,由于CPU是对8bit数进行操作的,实际的操作过程包含了一系列过程(读出-修改-写入):读出8bit 数据,修改指定位,把数据写回到原来的地址。

3.F2MC-8FX 指令
F2MC-8FX 主要有以下几类指令:

 

上一节                    下一节




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.