![指令系统与汇编语言程序设计_第1页](http://file4.renrendoc.com/view/d1aee19ca0d73415432da4f749a0534e/d1aee19ca0d73415432da4f749a0534e1.gif)
![指令系统与汇编语言程序设计_第2页](http://file4.renrendoc.com/view/d1aee19ca0d73415432da4f749a0534e/d1aee19ca0d73415432da4f749a0534e2.gif)
![指令系统与汇编语言程序设计_第3页](http://file4.renrendoc.com/view/d1aee19ca0d73415432da4f749a0534e/d1aee19ca0d73415432da4f749a0534e3.gif)
![指令系统与汇编语言程序设计_第4页](http://file4.renrendoc.com/view/d1aee19ca0d73415432da4f749a0534e/d1aee19ca0d73415432da4f749a0534e4.gif)
![指令系统与汇编语言程序设计_第5页](http://file4.renrendoc.com/view/d1aee19ca0d73415432da4f749a0534e/d1aee19ca0d73415432da4f749a0534e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3指令系统与汇编语言程序设计兼容以前的S12CPU
丰富、强大、灵活,高速16位处理,共400多条按功能:数据传送、算术运算、逻辑运算、位操作、移位、控制、特殊等,寻址方式多。3.1CPU内部寄存器区别于I/O寄存器;6个:D,X,Y,SP,PC,CCR江苏理工学院3.2寻址方式
概念CPU执行指令时确定操作数所在单元地址的方式。操作数来自:寄存器、指令代码、存储单元(都有地址)
S12(X)有9大种寻址方式:(1)隐含寻址(INH)
如ROLA(循环左移,操作数A隐含在指令中)(2)立即数寻址(IMM)
如LDDA#$FF(将十六进制数FF调入A中,#表示)(3)直接寻址(DIR)
如LDAA$55(8位地址)(4)扩展寻址(EXT)
如LDAA$200A(16位地址)(5)相对寻址(REL)SHIFT:LDAA#$55BRASHIFT(相对地址跳转)
江苏理工学院(6)变址寻址(IDX)
特征:以变址寄存器X、Y、SP、PC的内容为基址,再加或减个值,构成最终的地址
5位/9位/16位常数偏移量的变址寻址如LDD6,X;(6+X)D(A),(6+X+1)D(B)LDAB$FF,Y;($FF+Y)BLDAA$7200,PC;($7200+PC)A
(7)累加器变址寻址(IDX)累加器内容做偏移量的变址寻址如LDAAB,X;(B+X)A
LDAAD,Y;(D+Y)A(8)自加自减的变址寻址(IDX)自动加减(1~8),先加、先减、后加、后减如STAA1,-X;X-1X,A(X)STAA1,-SP;SP-1SP,A(SP)(等效PSHA)LDX2,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控制指令其它指令注:1、浏览书中指令内容2、以后编程时再查阅、体会助记方法:英语含义,如:CLR=CleaRLDAA=LoaDAccumulatorASTAB=SToreAccumulatorBTAB=TransferAtoBMOVB=MoveByteBEQ=BranchEQualzero
……江苏理工学院3.3.1数据传送类指令1、寄存器加载指令:LoaD
(注:影响标志位)
LDAA#$1FLDAB$40B0LDD2,XLDY2,SP+助记符功能操作LDAA将数据载入寄存器A(M)→ALDAB将数据载入寄存器B(M)→BLDD将数据载入寄存器D(M:M+1)→(A:B)LDS将数据载入寄存器SP(M:M+1)→SPH:SPLLDX将数据载入变址寄存器X(M:M+1)→XH:XLLDY将数据载入变址寄存器Y(M:M+1)→YH:YL江苏理工学院2、寄存器存储指令:STore(影响标志位)
STAA$3FSTD-$2000,PCSTY2,+SP助记符功能操作STAA将寄存器A中内容送入内存单元(A)→MSTAB将寄存器B中内容送人内存单元(B)→MSTD将寄存器D中内容送入内存单元(A)→M,(B)→M+1STS将堆栈SP中内容送入内存单元(SPH:SPL)→M:M+1STX将变址寄存器x中内容送人内存单元(XH:XL)→M:M+1STY将变址寄存器Y中内容送入内存单元(YH:YL)→M:M+1江苏理工学院3、寄存器传送指令:Transfer注意:TAB、TBA影响标志位,TFR不影响标志位;实际只有上述3条指令,其余写法是为了兼容老版本MCU8位到16位:通过符号位扩展后传送16位到8位:舍弃高8位,只传送低8位例:TABTFRA,YTAP(相当于TFRA,CCR)助记符功能操作TAB将寄存器A中内容送入寄存器B(A)→BTBA将寄存器B中内容送人寄存器A(B)→ATFR寄存器之间的数据传送(A、B、CCR、D、X、Y、SP)→A、B、CCR、D、X、Y、SPTSX将寄存器SP中内容送入寄存器X(SP)→XTSY将寄存器SP中内容送入寄存器Y(SP)→YTXS将寄存器X中内容送入寄存器SP(X)→SPTYS将寄存器Y中内容送入寄存器SP(Y)→SPTPA将寄存器CCR中内容送人寄存器A(CCR)→ATAP将寄存器A中内容送人寄存器CCR(A)→CCR江苏理工学院4、寄存器交换指令:Exchange建议:平常使用时,不应使用位数不匹配的方式进行数据交换。江苏理工学院5、内存数据传送指令:Move特点:1、不影响标志位2、允许地址与地址间传送3、传送方向是->(例MOVB$1000,$2000)4、16位数据结构是高位在前,低位在后(例:MOVW#$100A,$1100)MOVB1,X,2,Y江苏理工学院6、堆栈操作指令:PuSH、PULl特点:1、各寄存器都可以入栈、出栈2、可以做8位、16位操作3、入栈时SP-1(2),出栈时SP+1(2)江苏理工学院7、有效地址加载指令:LEA(LoadEffectiveAddress)LEAX$100A,Y注:不影响标志位江苏理工学院3.3.2算术运算类指令1、加、减法指令:ADD、SUBtract说明:ABAAddBtoA(A+B)SBASubtractBfromA(A–B)江苏理工学院2、增量、减量指令:
INCrement
、DECrement江苏理工学院3、比较、检测指令:CoMPara、TeST特点:1、CMP作减法,结果不回传,只影响标志位2、TST固定减0,结果不回传,只影响标志位江苏理工学院4、求补运算指令:特点:1、用0去减该值2、不对符号位进行判断江苏理工学院5、十进制调整指令:DAA(DecimalAdjustA)特点:1、是在加法操作之后进行2、是对A进行压缩BCD码加法调整3、只有这一条调整指令例:LDD#$3275ADDB#$69EXGA,BDAAEXGA,BADCA#$26DAA结果:D=?$5944江苏理工学院6、符号扩展指令:SEX说明:1、根据最高位的值将8位扩展为16位
2、源:A,B,CCR目的:D,X,Y,SP例:SEXA,X7、乘、除法指令:MULtiply、DIVide江苏理工学院3.3.3逻辑指令1、基本逻辑运算指令2、清零和取反指令:CLear、COMplement江苏理工学院3、位操作和位检测指令BCLR相当于:1.取反然后2.与0的位与操作
(BCLR$20,#$F0)BSET相当于:与1的位或操作(BSET$20,#$0F)注意该类指令与TST、AND的区别
指定的1位或几位,非整体;BIT影响标志位,但不修改操作数助记符功能操作BCLR位清零(M)&(/mm)→MBITA寄存器A与内存按位相“与”(A)
&(M)BITB寄存器A与内存按位相“与”(B)
&(M)BSET位置1(M)|(mm)→M江苏理工学院4、移位指令LSLLogicShiftLeftASRArithmeticShiftRightRORROtateRight江苏理工学院特点:1、ASR补最高位,其余补02、移出去的进C标志江苏理工学院3.3.4程序控制类指令1、无条件转移指令
JMP(Jump),可以在64K范围内跳转2、短分支跳转指令是在当前PC的值加上一个8位带符号数的偏移量,即跳转范围:-128~+127BRABRanchAlwaysBRNBRanchNeverBCCBranchifCarryClearBCSBranchifCarrySetBEQBranchifEQual
BMIBranchifMinusBPLBranchifPlusBHIBranchifHigherBHSBranchifHigherorSameBLOBranchifLowerBGTBranchifGreaterThan江苏理工学院
注意:1、只作检测,满足条件转移,不影响标志位2、结果不回传例:BRCLR$20,#$81,LP1BRSET$20,#$80,LP2江苏理工学院3、长分支跳转指令特点:1、是在当前PC的值加上一个16位带符号数的偏移量,即跳转范围:-32768~+327672、与JMP指令实现的方法稍有不同,只能跳转32K距离。
3、与短跳转指令完全类似江苏理工学院4、循环控制指令特点:1、不影响、不依赖标志位
2、转移范围是-256~+255ADD:LDX#$0B00LEAY4,XLDAB#4CLCLOOP:LDAAXADCA1,Y+STAA1,X+DBNEB,LOOP江苏理工学院5、子程序调用与返回指令特点:
1、BSR调用范围为-128~+1272、JSR调用范围为-32768~+32767,支持多种寻址方式,直接寻址方式必须在$0000~$00FF内(例:JSR$50)3、CALL用于调用64K以外的子程序,用RTC指令返回江苏理工学院3.3.5中断指令特点:1、进入中断时,硬件自动保护现场,RTI指令将恢复现场及断点2、SWI指令不受I、X的限制,且执行时会自动将I置1(即自动关闭可屏蔽中断),中断向量表入口地址$FFF6-$FFF73、各硬件中断有固定的入口地址表,中断服务程序需用RTI指令返回江苏理工学院3.3.6S12CPU控制类指令特点:1、STOP进入伪停机模式,时钟被关闭,功耗最低;当有中断或复位时被唤醒2、WAI进入等待模式,时钟仍在工作,当有中断或复位时被唤醒,唤醒速度快江苏理工学院3.3.7其它指令
S12X还提供了高级函数指令和模糊运算指令,主要有:小值、大值、插值、乘积累加等重要的其它指令程序状态寄存器指令
特殊的数据访问指令,通常被用来改变程序状态寄存器CCR指令操作寻址方式ANDCCCLCCLICLVORCCPSHCPULCSECSEISEV(CCR)∧(M)=→CCRC=0I=0V=0(CCR)∨(M)→CCR(SP)–1=>SP;(CCR)→M(SP)M(SP)=>CCR;(SP)+1→SPC=1I=1V=1IMMIMMIMMIMMIMMINHINHIMMIMMIMM江苏理工学院S12X指令系统提供了全局23位地址访问的指令,包括:
GLDAA、GLDAB、GLDD、GLDS、GLDX、GLDY、GSTAA、GSTAB、GSTD、GSTS、GSTX、GSTY等,
S12X总共新增了84条这类全局寻址指令。全局地址[22:0]由CPU本地地址[15:0]和GPAGE寄存器[22:16]联合组成。江苏理工学院3.4使用汇编语言的程序设计程序:完成特定任务的指令的集合程序设计语言:机器语言(二进制指令代码,可直接执行)汇编语言(特定助记符指令语句,须编译)高级语言(通用高级语句,须编译)单片机应用系统的程序,多用汇编语言编制(*.asm文件)或C
一个汇编程序语句<--->一条单片机指令多个汇编语言语句汇编语言程序(源代码)注:程序需要特定的编译程序进行编译,生成二进制机器码
汇编语言:面向MCU硬件,不易移植,但高效、代码量小,是学习基础
江苏理工学院汇编语言指令格式
[标号:]操作码[操作数1][,操作数2][;注释]标号该指令的符号地址,标定程序入口或转移位置注:标号必须以字母开始,分大小写操作码助记符,指令所实现的操作功能注:不分大小写;前面无标号时,至少应保留一个空格;必有操作数参加操作的数据对象,地址、常数或表达式注:寄存器寻址已归纳到隐含寻址中,当操作数部分出现寄存器时,通常是寄存器变址寻址;分大小写注释为方便阅读、修改而加的注释;可有可无注:以“;”开始,本行其后的内容不再编译注意:必须在英文输入法或中文半角字符模式下书写指令,全角字符
错江苏理工学院常数数据的表示方法
Freescale规定,加前缀$十六进制%二进制@八进制’ASCII无十进制#立即数的标记如:LDAA#$32;立即数
LDAA$32;地址江苏理工学院汇编程序伪指令汇编程序使用的辅助性语句,不生成机器码起始地址伪指令ORG赋值伪指令EQU字节常量伪指令FCB(DC.B)双字节常量伪指令FDB(DC.W)字符量伪指令FCC
例:注:定界符可以是’、/、”,建议用’
ORG$0008HSTART:LDAA#$FF
PORTBEQU$0001BIT0EQU%0000001BSETPORTB,BIT0;等价于
BSET$0001,%00000001
ORG$0200TABLE:FCB$13,18,N1+6,21
ORG$1000LIST:FDB$0519,$2000
ORG$2000STAR:FCC’ABCD’江苏理工学院【例3-2】大小排序LDX#$2000;数据首地址CLC;C清零LDY#0;Y清零BEGIN:LDAA0,X;(0+X)→ALDAB1,X;(1+X)→ACBA;(A)-(B)BCSDONE;减有借位(前小后;大),无需调整,跳转BEQFLAG;相等,跳转STAA1,X;A→(1+X)STAB0,X;B→(0+X)BRADONE;调整完毕,跳转FLAG:INY;1+Y→YDONE:BRA*;结束,踏步等待比较RAM区内两个相邻单元中无符号数的大小,按小数在前、大数在后的规则,重新存放(首地址$2000)。若相等则Y寄存器加1。江苏理工学院3.4.2汇编语言编程实例1.基本数据传递与算术运算程序【例3-1】BCD加法,见书2.循环控制程序【例3-3】2个8字节数求和;**********************************ADD8:LDX#$0B01LEAY8,XLDAB#8CLCLOOP:LDAAXADCA1,Y+STAA1,X+DBNEB,LOOP$0B01...$0B09被加数0字节被加数1字节……加数0字节加数1字节……RAM区江苏理工学院3.延时子程序硬件延时内部定时器实现,精确,不占CPU软件延时循环执行指令,粗略,占用CPU【例3-4】2ms延时。
CPU执行时间:
T=NxTB
T总执行时间,此2msN总时钟周期数TB总线时钟周期(如1/8M=125ns)
则需N=T/TB=2ms/125ns=16000程序运行:N=4+2+3+(1+3)(TCOUNT-1)+(1+1)+3+5
故:TCOUNT=3996.25≈3996
注:其它时间可套用此,如20ms改TCOUNT为39996(或40000)
;*************************************JSRDELAY1;4;*************************************TCOUNTEQU3996;无DELAY1:PSHX;2LDX#TCOUNT;3DLOOP:DEX;1BNEDLOOP;3/1PULX;3RTS;5江苏理工学院又【例3-5】双重循环的100ms延时。忽略配合指令的执行时间,粗略估算:内循环=200x(1+1+3)T=1000T总时间=100x1000T=100000T2MHz晶振时,总线频率=1MHz
T=1us
子程序延时时间即100ms;////////////////////////////////////////////////////////////////////;子程序DELAY:利用寄存器X、Y,;执行两重循环实现延时。;////////////////////////////////////////////////////////////////////DELAY:PSHXPSHYLDX#100DELAY1:LDY#200DELAY2:NOP;1TNOP;1TDBNEY,DELAY2;3TDBNEX,DELAY1PULYPULXRTS注:其它延时时间套此;MCU总线频率不同延时不同江苏理工学院4.数据查表程序【例3-6】将A中的两个4位十六进制数转换为ASCII码,分别存入$2080、$2081中。(0~9的ASCII码:$30~$39,A~F:$41~$46);**************************************************;子程序TRANS:十六进制数转换为ASCII码;入口参数:(A)=十六进制数,高4位为0;出口参数:(B)=ASCII码;**************************************************TRANS:PSHX;X压栈
LDX#TABLE;置表地址
LDABA,X;查表,(X+A)BPULX;X出栈
RTS;返回TABLE:‘0123456789ABCDEF’;主程序段********************
ORG$8000HEXA:TFRA,XANDA#$0FJSRTRANSSTAB$2080
TFRX,ALSRALSRALSRALSRAJSRTRANSSTAB$2081……江苏理工学院5.多分支结构程序(类似查表);根据4x4键盘的键号执行相应子程序。
………………KeyMain:JSRKey16;调用键号获取子程序(键号:0~15,16无键按下)LDAAKey_Numb;加载键号到A,Key_Numb预先有定义
LSLA;A=A×2(分支编号)
LDX#Jmp_Table;给X赋表首地址
LDYA,X;给Y赋为(X+A),即加偏移A后查得分支地址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学四年级数学三位数乘两位数单元监控训练题
- 信息安全运维月报
- 志愿填报指南
- 英语全球通行
- 传媒融合电商
- 河南省郑州市惠济区2024-2025学年七年级上学期期末语文试题(解析版)
- 职中学生会申请书
- 银行评级申请书
- 二级建造师之二建建设工程法规及相关知识题库【全国】
- 初级银行管理-银行专业初级《银行管理》模拟试卷2
- 开封市第一届职业技能大赛健康照护项目技术文件(国赛)
- 饮酒与糖尿病
- 大学体育与健康 教案 保健(八段锦)4
- 非遗资源数据库建设
- 公路电子收费系统安装合同范本
- 医院培训课件:《伤口评估与测量》
- 期末试卷(试题)-2024-2025学年四年级上册数学沪教版
- 小学五年级美术《青花瓷》
- 醇基燃料突发事故应急预案
- 《第一单元口语交际:即兴发言》教案-2023-2024学年六年级下册语文统编版
- 情侣自愿转账赠与协议书范本
评论
0/150
提交评论