文档介绍:第3章 S12指令系统
指令系统简介
丰富、强大、灵活,16位处理,共400多条。与硬件系统对应。
按功能分类:
数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等。
寻址方式多。
S12CPU的内部寄存器
特点:
默认地址空间:
$0000~$03FF(1K),实际使用512B
除一般数据读/写外,还可直接移位、置位、清零、位测试等复杂操作
数据传送速度较RAM快
S12XCPU寄存器
累加器D
16位=累加器A(高8位)+累加器B(低8位)。
常用于数据处理。
变址寄存器X、Y
各16位,常用于寻址操作。
堆栈指针寄存器SP( 16位)
指向堆栈区的顶部。
自动处理中断、子程序返回地址。
参数传递,零时保存数据。初始化。
程序计数器PC
16位,程序运行的地址指向下一条将
要执行的指令,可读,不可写。
取指令后自动增加。
R 8位
复位默认值:1101 0000B
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
S
X
H
I
N
Z
V
C
S---STOP指令禁止位。复位1,1禁止CPU执行STOP
X---费屏蔽中断屏蔽位。复位1,屏蔽来自XIRQ引脚的中断请求
H---辅助进位。BCD操作时累加器A的低4位的进位
I---中断屏蔽位。复位1,1屏蔽所有可屏蔽中断源
N---符号位。当指令运算结果为负时置1
Z---0标志位。当指令运算结果为0时置1
V---补码溢出标志位。当指令运算结果出现补码溢出时置1
C---进位标志。当加法运算结果产生进位(减法借位)时置1
寻址方式
寻址:寻找操作数地址的过程。
有效地址(effective address):操作数所在的地址。
寻址方式:通过确定操作数所在的地址,提取操作数的方法。
S12有7大种寻址方式:
一. 隐含寻址(INH) ----- 特点单字节指令
如 ROLA ;循环左移,操作数A隐含在指令中
EDIV ;助记符中无寄存器名称出现
INCA ;加一,操作数A隐含在指令中
有效地址包含在操作码中,操作数是CPU的寄存器。
二. 立即数寻址(IMM)
如 LDDA #$FF (将十六进制数FF调入A中,#表示立即数)
立即寻址:指令的操作数是一个8位或16位二进制数;
指令中出现的操作数称为立即数;
立即寻址常用来给寄存器赋值;
三. 直接寻址(DIR)
如 LDAA $55 (8位地址)
四. 扩展寻址(EXT)
如 LDAA $F03B (16位地址)
LDAA #$F03B ?
五. 相对寻址(REL)
SHIFT: LDAA #$55
BRA SHIFT (相对地址跳转)
n
n
:
操作数地址= 偏移量+ 寄存器的内容(16位)
:
3 位正数 1 -- 8 ; 不含0
5 位数-16 -- 15
9 位数-256 -- 255
16位数-32768 -- 32767
累加寄存器内容A、B、D作为偏移量
:
X 、Y、SP 、PC :可以选择除①意外的偏移量
X、Y、SP :仅①规定的偏移量
4 .操作数地址= 偏移量+ a ) 类寄存器集合
地址指令操作数
C008 LDDA 1 , X ; 2字节 5位偏移量
C00A LDDA 15 , X ;2字节 5位偏移量
C00C LDAA 255 , X ;3字节 9位偏移量
C00F LDAA 0 , X ;2 5位偏移量
C011 LDAA 32767 , X ;4 16位偏移量
C015 LDAA A , X ;2 累加器偏移量
C017 ------
偏移量在指令中 IDX , 2字节指令。
偏移量多1个字节 IDX1, 3字节指令。
偏移量多2个字节 IDX2, 4字节指令。
LDAA , X ;无偏移量, 指令为2B IDX ,等效指令
LDAA 0, X ;无偏移量, 指令为2B IDX ,等效指令
LDAA X ;无偏移量, 指令为2B IDX ,等效指令
LDDA 7 , X ; 偏移量《= 5位,2B IDX
LDAA -150 , X ; 偏移量《= 9位,3B IDX1
LDAA 10000, X ; 偏移量《= 16位,4B IDX2
5. 操作数地址= 偏移量+ b)类寄存器集合
带指针自动调整功能的变址寻址(IDX)
调整范围在1--- 8正数,寄存器:X、Y、S 。
MOVW 2, X+ , 4 ,+Y
STAA 1 , -SP