03章指令系统与汇编语言程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆大学通信工程学院 任勇、王永东
3.2 寻址方式
概念---CPU执行指令时确定操作数所在单元地址的方式。 操作数来自:寄存器、指令代码、存储单元(都有地址)
S12(X)有9大种寻址方式:
(1)隐含寻址(INH)
如 ROLA
(循环左移,操作数A隐含在指令中)
(2)立即数寻址(IMM)
如 LDAA #$FF (将十六进制数FF调入A中,#表示)
➢ 5位/9位/16位常数偏移量的变址寻址
如 LDD 6,X
;(6+X)D(A), (6+X+1)D(B)
LDAB $FF,Y
;($FF+Y)B
LDAA $7200,PC
;($7200+PC)A
(7)累加器变址寻址(IDX)
➢ 累加器内容做偏移量的变址寻址
如 LDAA B,X
;(B+X)A
LDAA D,Y
(3)直接寻址(DIR)
如 LDAA $55 (8位地址)
(4)扩展寻址(EXT)
如 LDAA $200A (16位地址)
(5)相对寻址(REL)
SHIFT: LDAA #$55
BRA SHIFT (相对地址跳转)
重庆大学通信工程学院 任勇、王永东
(6)变址寻址(IDX)
特征:以变址寄存器X、Y、SP、PC的内容为基址,再加或减个值,构 成最终的地址
LDAA #$1F LDAB $40B0 LDD 2,X LDY 2,SP+
操作 (M)→A (M)→B (M:M+1)→(A:B) (M:M+1)→SPH:SPL (M:M+1)→XH:XL (M:M+1)→YH:YL
重庆大学通信工程学院 任勇、王永东
2、寄存器存储指令:STore(影响标志位)
第3 指令系统与汇编语言程序设计
兼容以前的S12 CPU 丰富、强大、灵活,高速16位处理,共400多条 按功能:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等, 寻址方式多。
3.1 CPU内部寄存器 区别于I/O寄存器;
6个16bit: D(A+B), X, Y, SP, PC, CCR
助记符 STAA STAB STD STS STX STY
功能 将寄存器A中内容送入内存单元 将寄存器B中内容送人内存单元 将寄存器D中内容送入内存单元 将堆栈SP中内容送入内存单元 将变址寄存器x中内容送人内存单元 将变址寄存器Y中内容送入内存单元
操作 (A)→M (B)→M (A)→M, (B)→M+1 (SPH:SPL)→M:M+1 (XH:XL)→M:M+1 (YH:YL)→M:M+1
• 实际只有上述3条指令,其余写法是为 • 例:
了兼容老版本MCU
• TAB
• 8位到16位:通过符号位扩展后传送 • TFR A, Y
• 16位到8位:舍弃高8位,只传送低8位 • TAP ( 相当于 TFR A, CCR)
重庆大学通信工程学院 任勇、王永东
4、寄存器交换指令: Exchange
注: 1、浏览书中指令内容 2、以后编程时再查阅、体会
助记方法:英语含义,如:
CLR = CleaR LDAA = LoaD Accumulator A STAB = STore Accumulator B TAB = Transfer A to B MOVB =Move Byte BEQ =Branch EQual zero
8 位累加器 A
7
07
15
8 位累加器 B 0 8 位累加器 A、B 0 16 位累加器 D
15
0 变址寄存器 X
15
0 变址寄存器 Y
15
0 堆栈指针 SP
15
0 程序计数器 PC
S X H I N Z V C 条件码寄存器 CCR
进位/借位标志 C 溢出标志 V 零标志 Z 负标志 N 中断屏蔽位 I 半进位标志 H 非屏蔽中断允许位 X 停止(STOP)模式禁止位 S
建议:平常使用时,不应使用位数不匹配的方式进行数据交换。
重庆大学通信工程学院 任勇、王永东
5、内存数据传送指令:Move
特点:
1、不影响标志位
2、允许地址与地址间传送
3、传送方向是 ->
(例 MOVB $1000, $2000 )
4、16位数据结构是高位在前,低位在后
;(D+Y)A
(8)自加自减的变址寻址(IDX)
➢ 自动加减(1~8),先加、先减、后加、后减
如 STAA 1,-X
;X-1X,A(X)
STAA 1,-SP
;SP-1SP, A(SP)
(等效PSHA)
LDX 2,SP+
;(SP)X, SP+2SP
(等效PULX)
(9)间接变址寻址(IDX)
➢ 16位常数/累加器D偏移量的间接变址寻址 (内存中再取新地址)
如 LDAA [1000,X]
;((1000+X))A
JMP [D,PC]
;((D+PC))PC
变址寻址---重要而常用,表象:指令操作码后的操作数是X,Y,SP,PC (指针)
重庆大学通信工程学院 任勇、王永东
3.3 指令概览 分类(表3-1): ➢ 数据传送指令 ➢ 算数运算指令 ➢ 逻辑指令 ➢ 程序控制指令 ➢ 中断指令 ➢ CPU控制指令 ➢ 其它指令
• STAA $3F • STD -$2000,PC • STY 2,+SP
重庆大学通信工程学院 任勇、王永东
3、寄存器传送指令: Transfer
助记符
功能
TAB
将寄存器A中内容送入寄存器B
TBA
将寄存器B中内容送人寄存器A
TFR
寄存器之间的数据传送
操作
(A)→B
(B)→A (A、B、CCR、D、X、Y、SP) →A、B、CCR、D、X、Y、SP
TSX
将寄存器SP中内容送入寄存器X
(SP)→X
TSY
将寄存器SP中内容送入寄存器Y
(SP)→Y
TXS
将寄存器X中内容送入寄存器SP
(X)→SP
TYS
将寄存器Y中内容送入寄存器SP
(Y)→SP
TPA
将寄存器CCR中内容送人寄存器A
(CCR)→A
TAP
将寄存器A中内容送人寄存器CCR
(来自百度文库)→CCR
• 注意:TAB、TBA影响标志位,TFR不 影响标志位;
……
重庆大学通信工程学院 任勇、王永东
3.3.1 数据传送类指令
1、寄存器加载指令: LoaD (注:影响标志位)
助记符 LDAA LDAB LDD LDS LDX LDY
功能 将数据载入寄存器A 将数据载入寄存器B 将数据载入寄存器D 将数据载入寄存器SP 将数据载入变址寄存器X 将数据载入变址寄存器Y