嵌入式汇编语言实验1_精品文档.ppt
- 文档编号:2564334
- 上传时间:2022-11-01
- 格式:PPT
- 页数:8
- 大小:94.50KB
嵌入式汇编语言实验1_精品文档.ppt
《嵌入式汇编语言实验1_精品文档.ppt》由会员分享,可在线阅读,更多相关《嵌入式汇编语言实验1_精品文档.ppt(8页珍藏版)》请在冰豆网上搜索。
*河南理工大学通信工程河南理工大学通信工程15.2.5ARM汇编程序实例例例1.1.数据块复制数据块复制例例2.2.数据简单运算数据简单运算
(1)计算1+2+3+.+100的结果。
程序清单:
AREAsum,CODE,READONLYMOVR0,#0;初始化R0=0MOVR2,#1;设置R2=0;R2控制循环次数FORCMPR2,#100;判断R2100?
BHSFOR_E;若条件失败,退出循环ADDR0,R0,R2;循环体,R0=R0+R2ADDR2,R2,#1;R2=R2+1BFORFOR_ELDRR1,#0X40000000;STRR2,R1;保存结果到数组第9项END程序清单:
AREABuf,DATA,READWRITE;定义数据段BufArrayDCD0x11,0x22,0x33,0x44;定义12个字的数组ArrayDCD0x55,0x66,0x77,0x88DCD0x00,0x00,0x00,0x00AREAExample,CODE,READONLYENTRYCODE32LDRR0,=Array;取得数组Array首地址LDRR2,R0;装载数组第1项字数据给R2MOVR1,#4LDRR3,R0,R1,LSL#2;装载数组第5项字数据给R3ADDR2,R2,R3;R2+R3R2MOVR1,#8;R1=8STRR2,R0,R1,LSL#2;保存结果到数组第9项END*河南理工大学通信工程河南理工大学通信工程4数据块复制数据块复制例例11:
程序将数据从源数据区:
程序将数据从源数据区srcsrc复制到目标数据区复制到目标数据区dstdst复复制时制时,以以88个字为单位进行。
对于最后所剩不足个字为单位进行。
对于最后所剩不足88个字的数据个字的数据,以字为单位进行复制以字为单位进行复制,这时程序跳转到这时程序跳转到copywordscopywords处执行。
在处执行。
在进行以进行以88个字为单位的数据复制时个字为单位的数据复制时,保存了所用的保存了所用的88个工作寄个工作寄存器。
存器。
在在ADSADS编译环境下编译环境下,程序如下:
程序如下:
*河南理工大学通信工程河南理工大学通信工程5数据块复制汇编程序实例数据块复制汇编程序实例AREAAREAB1ock,CODE,READONLY;B1ock,CODE,READONLY;设置本段程序的名称及属性设置本段程序的名称及属性NUMNUMEQU20EQU20;设置将要复制的字数设置将要复制的字数ENTRYENTRY;标识程序人口点标识程序人口点LDRR0,=LDRR0,=srcsrc;R0;R0寄存器指向源数据区寄存器指向源数据区srcsrcLDRR1,=LDRR1,=dstdst;RlRl寄存器指向目标数据区寄存器指向目标数据区dstdstMOVMOVR2,#NUMR2,#NUM;R2;R2指定将要复制的宇数指定将要复制的宇数MOVMOVSP,#&400SP,#&400;设置数据栈指针设置数据栈指针,用于保存工作寄存器数值用于保存工作寄存器数值BcopyBcopyMOVSR3,R2,LSR#3;MOVSR3,R2,LSR#3;需要进行的以需要进行的以88个字为单位的复制次数个字为单位的复制次数BEQBEQCwordCword;不足不足88个字的数据个字的数据,跳转到跳转到CwordCword以字为单位复制以字为单位复制STMFDSP!
R4-R11;STMFDSP!
R4-R11;保存工作寄存器保存工作寄存器OcopyOcopyLDMIAR0!
R4-R11;LDMIAR0!
R4-R11;从源数据区读取从源数据区读取88个字的数据个字的数据,放到放到88个寄个寄;存器中存器中,并更新目标数据区指针并更新目标数据区指针R0R0STMIAR1!
R4-R11;STMIAR1!
R4-R11;将这将这88个字数据写入到目标数据区中并更新个字数据写入到目标数据区中并更新;目标数据区指针目标数据区指针R1R1SUBSR3,R3,#1;SUBSR3,R3,#1;将块复制次数减将块复制次数减llBNEBNEOcopyOcopy;循环循环,直到完成以直到完成以88个字为单位的块复制个字为单位的块复制LDMFDSP!
R4-R11;LDMFDSP!
R4-R11;恢复工作寄存器值恢复工作寄存器值*河南理工大学通信工程河南理工大学通信工程6数据块复制汇编程序实例数据块复制汇编程序实例CwordCwordANDSR2,R2,#7ANDSR2,R2,#7;剩下不足剩下不足88个字的数据的字数个字的数据的字数BEQBEQStopStop;数据复制完成数据复制完成WcopyWcopyLDRLDRR3,R0,#4;R3,R0,#4;读取剩下的数据放到读取剩下的数据放到R3,R3,并更新目标数据区指针并更新目标数据区指针R0R0STRSTRR3,R1,#4;R3,R1,#4;将这将这R3R3中数据写入到目标数据区中中数据写入到目标数据区中;并更新目标数据区指针并更新目标数据区指针R1R1SUBSR2,R2,#1;SUBSR2,R2,#1;将字数减将字数减llBNEBNEWcopyWcopy;循环循环,直到完成以字为单位的数据复制直到完成以字为单位的数据复制StopStop;程序结束处理程序结束处理MOVMOVR0,#0x18;R0,#0x18;本条与下条指令的作用是参数传递本条与下条指令的作用是参数传递LDRLDRR1,=&20026R1,=&20026SWISWI0x1234560x123456;将将CPUCPU的控制权交给调试器的控制权交给调试器AREAAREABdata,DATA,READWRITEBdata,DATA,READWRITE;定义数据区定义数据区BdataBdatasrcsrcDCD1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4DCD1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dstdstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;这里的这里的DCDDCD定义源数据区定义源数据区srcsrc及目标数据区及目标数据区dstdstENDEND;结束汇编结束汇编*河南理工大学通信工程河南理工大学通信工程7数据简单运算数据简单运算例例22:
编写程序循环对:
编写程序循环对R4-R11R4-R11进行累加进行累加88次起始值次起始值,R4-R11,R4-R11起始值分别为起始值分别为118,8,每次累加操作后把每次累加操作后把R4-R11R4-R11的内容放入的内容放入SPSP堆栈中堆栈中,SP,SP初始设置为初始设置为0x400000000x40000000。
最后把。
最后把R4-R11R4-R11用用LDMFDLDMFD指令清空赋值为指令清空赋值为00。
*河南理工大学通信工程河南理工大学通信工程8数据简单运算汇编程序实例数据简单运算汇编程序实例AREAAREAB1ock,CODE,READONLY;B1ock,CODE,READONLY;设置本段程序的名称及属性设置本段程序的名称及属性ENTRYENTRY;标识程序人口点标识程序人口点Startldrr0,=srcldrr1,=resetmovsp,#0x40000000ldmiar0!
r4-r11movr2,#7DoAddaddr4,r4,#1addr5,r5,#2addr6,r6,#3addr7,r7,#4addr8,r8,#5addr9,r9,#6addr10,r10,#7addr11,r11,#8stmiasp!
r4-r11subr2,r2,#1cmpr2,#0bneDoAddldmfdr1!
r4-r11stopbstopAREAAREABdata,DATA,READWRITEBdata,DATA,READWRITE;定义数据区定义数据区BdataBdatasrcDCD1,2,3,4,5,6,7,8resetDCD0,0,0,0,0,0,0,0end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 汇编语言 实验 精品 文档