欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    寻址方式与汇编语言.ppt

    • 资源ID:6566421       资源大小:721.50KB        全文页数:45页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    寻址方式与汇编语言.ppt

    寻址方式与汇编语言,2010年7月,控制科学与工程学院,1.机器语言用机器能够直接识别的二进制指令代码(即机器码或可执行的目标代码)编写的程序称为机器语言。,执行速度快不易记忆,十分繁琐。,特点:,单片机语言,功能:将累加器A赋值1机器码:86 0186:告诉单片机要实现什么功能01:就是数1,2.汇编语言用机器指令系统的助记符(能反映指令特征和操作性质的英文单词或英文缩写),用符号代替操作数来编写的程序称为汇编语言程序。汇编语言实际上也是机器语言,用汇编语言编写的程序不仅执行速度快,又可以有效地利用机器本身的专有特性,从而提高机器的工作效率。用汇编语言编写的程序由于面向机器,在一种机型上不能运行另一种机型的汇编程序,通用性差。,特点:,功能:将累加器A赋值1汇编语言:LDAA#$1LDDA:LOAD Accumulator A#$1:就是数1,汇编语言指令格式,汇编语言对格式有严格的要求。典型的汇编语言有4部分组成:label:MOVB#$66,X;注释 标号 操作码 源操作数 目的操作数 注释操作码是指令功能的英文缩写,表示指令的功能,由助记符组成。操作数表示指令操作的对象,不同的指令操作的对象形式不同。注释说是为了方便阅读加的中文或者英文注释。可有可无。,汇编语言是与硬件有关的语言,都是针对某一种类型的CPU。不同公司的产品,其汇编语言中使用的助记符可能会略有差异,但是语法格式都是一样的。9S12单片机指令系统每条指令必须有操作码,操作数可以是0-3个9S12内核的指令系统一共有601条指令。汇编语言与机器语言指令是一一对应的。,汇编常量的表示,十进制:100,255十六进制:$55、$1234八进制:77,1000二进制:%01010101字符串:jkl”990、”ADDX008”,寻址方式,寻址:操作数指定了参与运算的数或者数所在的地址。在单片机的存储空间中,寻找指令规定的操作数的地址。9S12内核有8种寻址方式。,隐含寻址立即数寻址直接寻址扩展寻址相对寻址变址寻址累加器变址寻址带自动加、减的5位偏移量变址寻址,1.隐含寻址,定义:只有操作码,没有操作数或操作数为寄存器,不显示操作数。如:NOP、PSHA、PSHB、PSHX、PSHY,隐含操作数分别为无、A、B、X、Y。一般是单字节指令,隐含寻址举例,;PC=C003,A=CB,SP=500NOP;PC=C004,A=CB,SP=500PSHA;A=CB,SP=4FF,4FF=CBNOP是单字节指令,只让程序计数器PC加1PSHA首先移动SP指针,再压入数值,在立即数寻址方式下,指令中的操作数(参与运算的数)就直接存放在机器代码中,紧跟在操作码之后。这条指令汇编成机器代码后,操作数作为指令的一部分存放在操作码之后的主存单元中。称这种操作数为立即数立即数寻址方式常用来给寄存器赋值。注:立即数前加#,2.立即数寻址,LDAA#$55;表示将十六进制立即数55加载到累加器A中LDX#1234;表示将十进制数1234加载到X中 LDY#%01010101;表示将二进制数00100110加载到Y中,3.直接寻址,操作数是单字节地址,范围是$00$FF,共256个单元,一般访问I/O寄存器。如:LDAA$55表示将$55内存单元的数据加载到累加器A。执行前:55=0,A=CB 执行后:55=0,A=0,4.扩展寻址,操作数为16位地址,可访问64K空间。如:LDX$4000将$4000和$4001内存单元的数据加载到X。,FREESCALE的MCU采用“低字节数放高位地址单元,高字节数放低位地址单元”。(1)若:$4000=$12,$4001=$34 执行LDX$4000指令后,XH=$12,XL=$34(2)又如:STAA$4000;执行结果为A的内容存到$4000单元,STAA:Store Accumulator A,5.相对寻址,相对转移指令。操作数为单字节如:,LABEL1:BRA LABEL1,BRA:Branch always,6.变址寻址,操作数由基地址寄存器(X、Y、SP、PC)加偏移量构成。如:若X=$1000LDAA 0,X;A=$1000LDAA 7,X;A=$1000+7,LDAA-150,X;A=$1000-150LDAA 1000,X;A=$1000+1000 LDAA 1000,X;将X+1000地址单元中的 值作为指针,指向的内存单元的值加载到累加器A中,7.累加器变址寻址,偏移量非立即数,存放在累加器A、B、D中。如:若X=$1000 LDAB A,X;B=X+A LDAA D,X;A=X+D,8.带自动加减的5位偏移量间接寻址,有“先加、先减、后加、后减”四种方式。基址寄存器可以是X,Y,SP。主要用于数据块复制。如:MOVW 2,X+,4,+Y;执行该指令,将X开始单元的两个单元内容(一个字)传送到Y+4开始的两个单元,传送完成后X内容加2。,MOVW:move a word of data from one memory location to another,指令系统,数据传输(加载寄存器、传送到内存、内存之间的传输、寄存器间的传输、数据交换、加载有效地址、堆栈操作)指令数学运算(加减乘除、十进制调整、最值等)指令逻辑运算(移位、求补、取反等)指令比较测试指令条件转移、无条件转移、循环指令查表插值指令模糊运算指令系统控制指令(中断、调用、返回等),数据传输指令,LOAD指令指从内存到寄存器数据传送LDAA、LDAB、LDD、LDS、LDX、LDY如:LDAA#$55;将 立即数$55加载到A LDX$2000;将$2000和$2001单元数据加载到XSTORE指令指从寄存器到内存数据传送STAA、STAB、STD、STS、STX、STY如:STAA$1000;将A的内容存到$1000单元STY$2000;将Y的内容存到$2000和$2001单元MOVE指令指从内存到内存数据传送MOVB、MOVW如:MOVB$2000,X;将$2000单元内容存到X内容指向单元 MOVW 2,X+,4,Y+;将X和X+1内容指向单元存到Y和Y+1指向单元,数据传输指令,TRANSFER传送指令指从寄存器到寄存器数据传送:TAB、TAP、TBA、TFR、TPA、TSX、TSY、TXS、TYS如:若累加器A中的数据为$55 执行TAB指令后,累加器B中的数据为$55。EXCHANGE交换指令指寄存器的数据与寄存器数据交换:EXG、XGDX、XGDY、SEX如:若A中数据为$55,B中数据为$aa执行EXG A,B后,A中数据为$aa,B中数据为$55。LEA有效地址加载指令:LEAS、LEAX、LEAY如:LDY#$2000 LEAS 4,Y+执行后SP的值为$2000,Y的值为$2004。,数据传输指令,堆栈操作指令:单字节压栈出栈PSHA、PSHB、PSHC PULA、PULB、PULC 如PSHA指SP减一,A数据传送到SP指向单元 PULA指SP指向单元数据传送到A,SP加一双字节压栈出栈PSHD、PSHX、PSHYPULD、PULX、PULY如PSHD指SP减二,D数据高位(A)传送到SP指向单元,低位(B)传送到SP+1指向单元。PULD指SP指向单元数据传送到D高位(A),SP+1指向单元数据传送到低位(B),SP加二。,数据传输指令举例,;+加载/存储+LDAA#$55;A累加器加载$55STAA$480;把A的内容存到内存$480LDAB$480;$480内容加载到BINCB;B内容自加1STD$485;D内容送$485;+传送交换指令+LDAB#$AA;立即数$AA送BTAB;A送BLDAB#$AA;立即数$AA送BEXG A,B;A B交换;+MOVE指令+MOVW#$1234,$490;立即数$1234传送到$490和$491单元,数学运算指令,加法指令ADD:8位加法指令ABA、ADDA、ADDB、ADCA、ADCB16位加法指令ABX、ABY、ADDD减法指令SUB:8位减法指令SBA、SUBA、SUBB、SBCA、SBCB16位减法指令SUBD十进制调整指令:DAA(只能用在结果在A中的加法指令)加一指令:INC、INCA、INCB、INS、INX、INY减一指令:DEC、DECA、DECB、DES、DEX、DEY,数学运算指令,乘法指令MUL:无符号16位数乘法EMUL(D)(Y)送Y:D有符号16位数乘法EMULS(D)(Y)送Y:D无符号8位数乘法MUL(A)(B)送A:B除法指令DIV:无符号32位数除以16位数EDIV有符号32位数除以16位数EDIVS无符号16位数除以16位数的小数除法FDIV无符号16位数除以16位数IDIV有符号16位数除以16位数IDIVS乘加指令EMACS,数学运算指令,最大、最小值指令MAXA、MINA:A中数据与内存单元字节型数据比较,较大的传送到AMAXM、MINM:A中数据与内存单元字节型数据比较,较大的传送到内存单元EMAXD、EMIND:D中数据与内存单元中两个相临字节型数据组成的字数据比较,大者送DEMAXM、EMINM:D中数据与内存单元中两个相临字节型数据组成的字数据比较,大者送内存单元,数学运算综合举例,在$2000单元开始存放字节型数据$10,$30,$04,$A0,在$2010单元开始存放字节型数据$11,$1A,$09,$1F,分别使用加、减、乘、除四中运算处理对应位置的数据。并把结果存到$2020开始的内存单元中。例子程序见word文档实际程序见:2-shuxue-example,逻辑运算指令,与指令:ANDA、ANDB、ANDCC如LDY#$1000 ANDA YA与$1000单元数据与运算,结果保存到A异或指令:EORA、EORB或指令:ORAA、ORAB、ORCC清零指令:CLC、CLI、CLV、CLR、CLRA、CLRB把进位、中断屏蔽、溢出标志、内存单元,A,B清零取反指令:COM、COMA、COMB对内存单元、A、B进行取反运算并存储求补指令:NEG、NEGA、NEGB对内存单元、A、B进行求补运算并存储,逻辑运算指令,位测试指令:BITA、BITB将A或B与内存单元内容作与操作,改变标志位位操作指令:BCLR、BSETBCLR:将立即数取反与内存单元M内容与操作,将结果送内存单元BSET:将立即数与内存单元M内容或操作,将结果送内存单元逻辑左移指令:LSL、LSLA、LSLB、LSLD将内存字节、A、B、D内容带C左移逻辑右移指令:LSR、LSRA、LSRB、LSRD将内存字节、A、B、D内容带C右移,逻辑运算指令,算术左移指令:ASL、ASLA、ASLB、ASLD同逻辑左移算术右移指令:ASR、ASRA、ASRB将内存字节、A、B内容右移一位,最高位不变,最低位移动到C。循环左移指令:ROL、ROLA、ROLB循环右移指令:ROR、RORA、RORB,逻辑运算指令举例,取数$55,使用逻辑运算指令使低4位清零,然后低4位置一;对结果取反操作;逻辑右移一位;与内存单元中$00作位测试;查看结果。,逻辑运算指令举例,S1:FCB$00;定义参加比较数据LDAA#$55;A=55ANDA#$F0;A=50ORAA#$0F;A=5FNEGA;A=A1LSRA;A=50 C=1BITA S1;Z=1,比较测试指令,比较指令:CBA、CMPA、CMPB、CPD、CPS、CPX、CPY只做减法操作,不返回结果,影响标志位C(借位)、V(溢出),N(符号),Z(零)测试指令:TST、TSTA、TSTB测试内存单元、A或B是否为0,影响标志位N(符号),Z(零),V(总为0),C(总为0)。,转移跳转循环指令,短转移指令:无条件转移BRA、BRN有条件转移BCC、BCS、BEQ、BNE、BMI、BPL、BVC、BVS、BHI、BHS、BLO、BLS、BGT、BGE、BLT、BLE长转移指令:在短转移前加“L”如:LBRA等。,转移跳转循环指令,循环控制指令:DBEQ、DBNEIBEQ、IBNETBEQ、TBNE跳转指令:JMP无条件跳转到标号处执行,范围为64K。,DBEQ B,LABELLABEL:,B减1,若为0,LABEL:DBNE B,LABEL,B减1,若不为0,比较测试转移跳转指令举例,定义程序标号,从该程序标号开始执行程序;做5次空循环延时;A,B都给$55,作CBA测试;若Z=1则跳转到程序末尾。,比较测试转移跳转指令举例,BRA J1;短转移到J1NOP;由于转移,此句不执行J1:LDAB#$05;B=05J2:NOP;延时的NOP指令DBNE B,J2;B-1,若B=0则继续,否则到J2LDAA#$55LDAB#$55;A=B=55CBA;做A-B操作,Z=1BEQ J3;若Z=1转J3NOP;此句不执行J3:NOP;转移到此执行,查表插值指令,查表插值指令:TBL ETBL例子请见课本115页,系统指令,子程序调用返回返回指令:短子程序调用BSR(-128127),子程序返回使用RTS长子程序调用JSR(64K范围),子程序返回使用RTS跨页子程序调用CALL(1M范围)、子程序返回使用RTC调用和返回同时把返回地址和PPAGE寄存器内容压栈和出栈中断指令:软件中断SWI,把返回地址和CPU寄存器依次全部压栈陷阱中断TRAP,把返回地址和CPU寄存器依次全部压栈中断返回RTI,把返回地址和CPU寄存器依次全部出栈,系统指令,其他指令:STOP将PC、Y、X、D、CCR压栈,关闭时钟WAI将PC、Y、X、D、CCR压栈,关闭时钟,各自系统仍然运行,CPU等待中断BGND进入背景调试模式NOP空操作,系统指令,CPU12X在CPU12汇编指令集的基础上增加了不少新的指令。(1)将原有的8位读改写指令扩展到16位(2)增加了利用Gpage寄存器对连续8M寻址空间的读写指令(3)增加了测试并置位指令处理信号量(semaphore)(4)增加了MOVEB、MOVEW等,可实现从存储器到存储器的数据传送或将立即数直接写入存储器。,谢谢!,

    注意事项

    本文(寻址方式与汇编语言.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开