RAM汇编语言编程

RAM汇编语言编程

ID:37828511

大小:416.70 KB

页数:28页

时间:2019-06-01

RAM汇编语言编程_第1页
RAM汇编语言编程_第2页
RAM汇编语言编程_第3页
RAM汇编语言编程_第4页
RAM汇编语言编程_第5页
资源描述:

《RAM汇编语言编程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、RAM汇编语言编程©北京微芯力科技有限公司苏兰冬数据处理指令∑简单的寄存器操作∑立即数操作∑寄存器移位操作∑设置条码∑条码的使用∑乘法简单的寄存器操作¾算术操作¾按位逻辑操作¾寄存器传送操作¾比较操作简单的寄存器操作—算术操作这类指令对两个32位操作数进行二进制算术操作加减和反向减后者指把操作数次序颠倒后相减ADDro,r1,r2;r0=r1+r2ADDro,r1,r2;r0=r1+r2+CSUBro,r1,r2;r0=r1-r2SBCro,r1,r2;r0=r1-r2+C-1RSBro,r1,r2;r0=r

2、2-r1RSCro,r1,r2;r0=r2-r1+C-1简单的寄存器操作—按位逻辑操作这类指令对输入操作数的对应位进行指定的布尔逻辑操作ADDr0,r1,r2;r0=r1andr2ORRr0,r1,r2;r0=r1orr2EORr0,r1,r2;r0=r1xorr2BICr0,r1,r2;r0=r1andnotr2简单的寄存器操作—寄存器传送操作这些指令不用第一操作数它在汇编语言格式中被省略MOVr0,r2;r0=r2MVNr0r,2;r0=notr2简单的寄存器操作—比较操作这类指令不产生结果仅根据所选择的

3、操作来设置CMPr1,r2;根据r1-r2的结果设置ccCMNr1,r2;根据r1-r2的结果设置ccTSTr1,r2;根据r1andr2的结果设置ccTEQr1,r2;根据r1xorr2的结果设置cc立即数操作如果只希望把一个常数加到寄存器而不是两个寄存器相加可以用立即数值取代第二位操作数立即数通常是常量literal)前面加“#”ADDr3,r3#1;r3:=r3+1ANDr8,r7#&ff;r8:=r7[7:0]立即数=0255X22n寄存器移位操作第三种定义数据操作的方式同第一种类似但允许第二个寄存器

4、操作数在同第一操作数运算之前完成移位操作例:ADDr3,r2,r1,LSL#3;r3:=r2+8xr1注意它是一条RAM指令在单个时钟周期内执行设置条件码如果程序员要那么任何数据处理指令都能设置条件码NZC和V比较操作只能设置条件码要求以增加S操作码来指明意为“设置条件码例ADDSr2,r2,r0;32位进位输出C……ADCr3,r3,r1;…再加到高位字节中条件码的使用通过条件码转移指令来控制程序流乘法有专门的数据处理指令支持乘法即MULr4,r3,r3;r4:=(r3xr2)[31:0]它同其他算术指令有

5、一些不同即°不支持第二位操作数为立即数°结果寄存器不允许同为第一源寄存器°如果设置位S则标志位V保留而且标志位C不再有意义乘加指令MLAr4,r3,r2,r1;r4:=(r3xr2+r1)[31:0]数据传送指令∑寄存器间接寻址∑初始化地址指针∑单寄存器Load和Store指令∑基址偏移寻址∑多寄存器数据传送∑堆栈寻址∑块拷贝寻址寄存器间接寻址间接寄存器寻址利用一个寄存器的值基址寄存器作为存储器地址或者从该地址取值存放到寄存器或者将另一个寄存器的值存入该存储器地址指令汇编语言格式如下:LEDr0,[r1];r

6、0:=mem[r1]32STRr0,[r1];mem[r1]:=r032初始化地址指针要访问一个特定的存储器单元必须把一个RAM寄存器初始化使之包含这个单元的地址作为一个例子来考虑它必须从TABLE1向TABLE2拷贝数据TABLE1和TABLE2都接近代码COPYADRr1,TABLE1;r1指向TABLE1ADRr2,TABLE2;r2指向TABLE2…TABLE1…;数据源TABLE2…;目标单寄存器Load和Store指令这些指令使用基址寄存器来计算传送数据的地址基址寄存器应该包含一个接近目标地址的地

7、址还要计算偏移量下列指令中没有偏移量LDRr0,[r1];r0:=mem[r1]32STRr0,[r1];mem[r1]:=r032现在把一个表中的第一个字拷贝到另一表中即COPYADRr1,TABLE1;r1指向TABLE1ADRr2,TABLE2;r2指向TABLE2LDRr0,[r1];加载第一个数据…STRr0,[r2];将它存入TABLE2TABLE1…;数据源TABLE2…;目标基址偏移寻址如果基址寄存器不包含确切的地址则可以在基址上加上不超过4KB的[偏移量来计算传送地址即LDRr0,[r1#4

8、];r0:=mem[r1+4]32此为前变址寻址模式LDRr0,[r1]#4;r0:=mem[r1]32;r1:=r1+4此为后变址寻址模式多寄存器数据传送当大量数据需要传送时最好能同时存取几个寄存器例LDMIAr1,{r0,r2,r5};r0:=mem[r1]32;r2:=mem[r1+4]32;r5:=mem[r1+8]32堆栈寻址寻址变形基在存储器中实现堆栈于的事实RAM多寄存器传送指令支持全

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。