65SC02指令系统
65SC02微机处理器有64条指令,15种寻址方式。每条指令可对应不同的寻址方式,这样共能组合178种指令编码。指令长度为1—3字节,其中第一字节一律为操作码,操作数或操作数的地址跟随在操作码之后,根据采用的寻址方式占用一个或二个字节。为讨论方便,现将65SC02的指令系统按功能分成几类进行介绍,指令的助记符、说明及操作见表1。


一、传送指令:包括存储器和存储器、寄存器和寄存器之间的传送。例如,指令LDA#$00/TAX/ TAY分别将00送A累加器/A送X/A送Y,这样就实现了将累加器A,变址寄存器X和Y清零。
二、算术逻辑运算指令:包括算术运算指令和逻辑运算指令。前者加减是带进位或借位的加减法,其中借位标志C-是P寄存器中的标志位C的取反状态;后者运算各位之间没有进位借位关系。
三、置标志位指令:在P寄存器中设置了七个标志位,这些标志位可以由置标志位指令来设置。
四、比较指令:见表。执行CMP指令后,若C=1,则表示够减无借位,即A≥M;C=0,则表示不够减有借位,即A<M。
五、移位指令:包括将累加器A中的内容进行左移、右移、循环左移和循环右移等指令。
六、堆栈指令:堆栈是一个按照“后进先出”原则安排的内存区域,主要用于暂存数据。堆栈指针S始终指向栈顶的一个空单元,在数据出栈时自动加1,进栈时自动减1。堆栈设置在第一页地址010001FF上,S指示堆栈地址的低八位。
七、转移指令:程序通常是顺序执行的,但有时也需要转到某个特定地址继续执行,这就需要借助转移指令来实现。转移指令包括无条件转移指令和条件转移指令。
八、转子指令和子程序返回指令:转子指令使主程序转向子程序的入口地址,并执行子程序;子程序最后的返回指令,使程序返回到主程序被打断处。
汇编语言
计算机的CPU和存储器等功能部件只能接受“1”和“0”这样的信息,所以计算机的指令和地址等都是用二进制编码表示的,为方便常写成十六进制的形式,用这种形式的指令组成的程序称为机器语言。这种语言为计算机直接使用,不需任何翻译,因此速度最快;但它存在着不易看懂,容易出错的缺点。为克服机器语言的这些缺点,人们便想到了用与机器语言基本上一一对应的符号表示它,使所有的操作和地址都可用符号来标记,用这种符号编写的程序称为汇编语言。汇编语言必须经过翻译,变成机器语言才能为计算机接受。这个翻译过程称为“汇编”,是由计算机配置的汇编程序完成的。
汇编语言一般由标号、操作码、操作数及注释部分组成。举例说明如下:
标号 操作码 操作数 注释
STABT LDA #0 ; 和=0
TAX ; 变址计数=0
LOOP CLC ; 清进位
ADC $1000,X; 和=和+数据
INX ; 变址计数+1
CPX 5 ; 五个数据是否加完
BNE LOOP ; 未加完,继续求和
STA $06 ; 加完,送结果
这是对从1000单元开始存放着的五个数据求累加和的程序,其中START,LOOP都是标号,LOOP是程序分支所需要的地址,操作码部分都是65SC02的助记将,操作数部分是操作码所要操作的数据,在分号后面部分是注释部分(若要作为程序的一部分输入或要求与程序一起打印输出,注释部分要用英文书写)。它是用来说明语句的功能,便于阅读和交流。汇编程序对注释部分不予理会的。
伪指令
汇编语言中有一类指令,它们不产生目标程序,即不影响程序的执行,称为伪指令。例如为程序指定起始地址、给符号赋值、把给定的数据放入存储单元、留出存储数据用的存储区等操作。下面介绍6502系到汇编语言常用的伪指令。
一、初始地址伪指令ORG:
指令格式 ORG nn
nn是16位二进制数,本语句用来确定一段程序的起始地址。
二、定义字节伪指令DFB:
指令格式〈标号〉DFB 〈项或项表〉
其中“项或项表”指一个字节,或字节串,或是字特串。此语句告诉汇编程序在目标代码中留出一个或一串字节的位置,并在其中填入项或项表的数值或字符的ASGII码值。
三、定义字伪指令DW:
指令格式〈标号〉 DW〈项或项表〉
其中“项或项表”指的是一个字(包括两个字节)或字串。指令功能与上述DFB指令类似。通常DW指令用来定义地址码。
四、定义存储区伪指令DS:
指令格式〈标号〉 DS 表达式
功能:由标号所指定的单元开始,留出表达式所规定数量的内存单元。
五、等值伪指令EQU:
指令格式〈标号〉 EQU 〈项〉
上述伪指令举例说明如下:
① ORG $300
FIRST DFB $1A, $1B,$1C,,A,,B,,C
ORG规定了标号FIRST的地址为$300,伪指令把数据$1A、$1B、$1C及字母A、B、C的ASCII码值顺序放入FIRST开始的6个连续单元中。
② ADDRESS DW $C506,$FE04
DW指令在ADDRESS开始的四个单元中顺序放入06、C5、04及FE。
③ BUFFER DS 10
由BUFFER单元开始空出10个单元。
④ COUNT EQU $1000
AREA1 EQU COUNT
首先将数值$1000赋值给COUNT,然后再将已赋值的COUNT的值赋值给AREA1,即AREA1=$1000。(乌振声 黄金明)