《【教学课件】第四讲汇编语言初步.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第四讲汇编语言初步.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四讲 汇编语言初步目的:用汇编语言编写简单程序BIT/TI1学习内容汇编代码的结构汇编程序的构成编写简单算法:y=mx+bBIT/TI2一、汇编代码的构成label:|condinstruction.unitlabel:|condinstruction.unitoperand;commentoperand;comment标号:代码或变量地址条件寄存器条件寄存器指令:助记符(mnemonic)伪指令(directive)功能单元功能单元(可选可选)操作数:寄存器 常量 指针注释x.int.int10MPYMPY.M1A1,A3,A7|ADDADD.L1xA2,B2,A5 BIT/TI3常用伪指
2、令在在C语言里语言里long是是40位,在汇编语言里位,在汇编语言里long是是32位位注意BIT/TI4二、汇编程序的构成二、汇编程序的构成程序数据结构算法程序数据结构算法数据结构数据结构算法算法C程序的数据结构和算法实现BIT/TI5汇编程序数据结构汇编程序数据结构用汇编语言声明数据结构用汇编语言声明数据结构BIT/TI6汇编程序算法汇编程序算法用汇编语言编写算法用汇编语言编写算法BIT/TI7完整的汇编程序构成.sect“myData”.sect“myData”m m.int.int5 5x x.int.int1010b b.int.int2 2y y.int.int0 0.sect“m
3、yCode”.sect“myCode”startstartLD.D1LD.D1*A0,A1*A0,A1.ST.D1ST.D1A7,*A6A7,*A6 endendB BendendNOPNOP55BIT/TI8三、用汇编指令编写y=mx+b1.数据取入寄存器:m,x,b存储器寄存器1a.初始化数据指针1b.取数据2.乘法3.加法4.存储数据:y寄存器存储器BIT/TI91a.指针初始化指针初始化32位常量位常量MVK.S1m,A0MVKH.S1m,A0;&mA0MVK.S1x,A2MVKH.S1x,A2;&xA2MVK.S1b,A4MVKH.S1b,A4;&bA4BIT/TI10指令MVKMV
4、K把一个把一个16位常数放入寄存器位常数放入寄存器BIT/TI111b.取数据LDH.D1*A0,A1;取取mLDH.D1*A2,A3;取取xLDH.D1*A4,A5;取取bNOP4BIT/TI12LD/ST指令三种三种Load指令,对应不同长度的数据指令,对应不同长度的数据LDW取取32位字位字(word)LDH取取16位半字位半字(short)LDB取取8位字节位字节(byte)对无符号数对无符号数(字节、字节、16位半字位半字)LDBULDHU指令延迟:四个延迟间隙指令延迟:四个延迟间隙三个存储指令三个存储指令STWSTHSTB数据取入寄存器后进行符号扩展无符号扩展BIT/TI13指令延
5、迟间隙延迟间隙:多周期指令所需要插入的NOP指令个数BIT/TI142.乘法MPY.M1A1,A3,A7MPY.M1A1,A3,A7NOPNOPBIT/TI15乘法指令四种乘法指令四种乘法指令MPYMPY(U/US/SU)16LSB16LSBMPYHMPYH(U/US/SU)16MSB16MSBMPYHMPYH(U/S)L L(U/S)16MSB16LSBMPYLMPYL(U/S)H H(U/S)16LSB16MSB指令延迟槽:指令延迟槽:1两个乘法单元可以在一个周期内做两次乘法两个乘法单元可以在一个周期内做两次乘法BIT/TI163.加法或或ADD.?应该使用哪个功能单元?应该使用哪个功能单
6、元?ADD.?ADD.?A5,A7,A7A5,A7,A7BIT/TI174.存储结果BIT/TI18完整的y=mx+b汇编程序.titlelab4.asm/*定义数据结构*/.sectmyData”m.short10 x.short5b.short2y.short0/*算法*/.sectmyCode/*指针初始化*/init:mvk.s1m,A0;A0=&mmvkh.s1m,A0mvk.s1x,A2;A2=&xmvkh.s1x,A2mvk.s1b,A4;A4=&bmvkh.s1b,A4mvk.s1y,A6;A6=&ymvkh.s1y,A6/*取数据*/ldh.d1*A0,A1;A1=mldh.d1*A2,A3;A3=xldh.d1*A4,A5;A5=bnop4/*核心算法*/start:mpy.m1A1,A3,A7;A7=mxnop1add.l1A5,A7,A7;A7=mx+bsth.d1A7,*A6/*结束循环*/b$;endlessloopnop5BIT/TI19