处理器处理二进制机器码,汇编作为机器码的一种助记符。仍然需要一个翻译的过程,由汇编程序进行翻译。
一条汇编语句,主要由四个部分组成,(标号,操作,数据/地址,注释),每个部分使用单个或多个空格分隔。
除了前面的用于运行的指令,还有一些信息会在汇编源代码中指明,称为汇编指示。
汇编指示是写给汇编程序的,提示程序的一些信息。
内存地址标号 操作 地址/数据
汇编指示 SUM EQU 200
ORIGIN 204
N DATAWORD 100
NUM1 RESERVE 400
ORIGIN 100
生成机器码 START MOVE N,R1
MOVE #NUM1,R2
CLR R0
LOOP ADD (R2),R0
ADD #4,R2
DEC R1
BGTZ LOOP
MOVE R0,SUM
汇编指示 RETURN
END START
SUM EQU 200
是一条汇编指示,告诉汇编程序用名字SUM来表示值200,在程序的任何地方遇到SUM,都需要使用200进行替代。ORIGIN 204
告诉汇编程序,从内存地址204的位置Load后面的数据块。N DATAWORD 100
说明数据值100放在地址204的存储单元中,并且为204给出标号N
,在程序任何地方碰到N都转为204NUM1 RESERVE 400
说明这400个字节的内存块是专门用于保存数据的,NUM1与地址208相关联。
第二个ORGIN 100
指明目标程序的指令从内存起始地址100开始LOAD,后面接汇编指令对应的目标程序指令,源程序最后一条语句是汇编指示END
,声明这是源程序的正文结束点,后接START 指程序开始执行的地址。RETURN
是一个汇编指示,表明在这儿,程序执行结束。汇编程序在该处插入一条合适的机器指令,将控制权交还操作系统
汇编处理的一个关键部分是决定哪些将要用来代替标号的值。某些情况下,标号直接用EQU给出。另外一些情况,是由给定的指令定义的标号。这种标号表示的值由汇编后的目标程序中这条指令所在位置决定的。
汇编程序对连续指令在生成机器码时的地址保持了解。
有些汇编程序在汇编时,第一遍扫描源码,得到符号表保存标号与数值的键值对。第二次扫描时对标号替换。
汇编程序生成的目标程序存储在磁盘,运行前被内存中的装载程序装载到内存中。装载程序需要知道目标程序的长度和存放的内存地址。这些往往在目标程序的头部进行说明。对于装载完毕的目标程序,装载程序使用转移指令跳转到目标程序开始执行。若程序运行时有错误,可用系统软件提供的调试程序进行调试分析。