ARM匯編解決階乘及大小寫轉(zhuǎn)換的問題
環(huán)境以及硬件
一、硬件仿真基于 SAMSUNG's S3C44B0X 16/32-bit RISC microprocessor 芯片,仿真器為 J-LINK
二、編寫指令軟件為 Integrated Development Environment ,軟件仿真為 ARMulate.dll
三、需要基于ARM7硬件平臺的C語言啟動代碼,用于分配中斷向量表,初始化ISR地址,初始化堆??臻g,初始化應(yīng)用程序執(zhí)行環(huán)境,配置存儲器系統(tǒng),設(shè)定時鐘周期,呼叫主應(yīng)用程序。
四、這里僅有關(guān)鍵算法代碼
ARM匯編求一個數(shù)的階乘
題目:R1寄存器內(nèi)數(shù)據(jù)的階乘運算,結(jié)果存放在R0
mov r1,#6 ;將立即數(shù) 6 送至 R1,即為‘6'的階乘,可以更改
mov r0,r1 ;將 R1 的值給R0
loop ;定義一個循環(huán)體標(biāo)簽
subs r1,r1,#1 ;將 R1-R1 的給R1
mul r0,r0,r1 ;將 R0*R1 的值給R0
cmp r1,#1 ;將 R1 與 1 做比較
BNE loop ;上面的值不相等則跳轉(zhuǎn)至 loop
ARM匯編大小寫轉(zhuǎn)換以及存入內(nèi)存
題目:將內(nèi)存地址0XC100000開始處的字符串"Welcome to CSUST!"中對應(yīng)的小寫字母轉(zhuǎn)換成大寫,大寫變換成小寫。
說明:此算法存在局限性,只能轉(zhuǎn)換不包含ASSIC碼值大于‘127'和在‘91~96'之間的字符串
STRING_WELCOME DCB "Welcome to CSUST!\n\0" ;聲明一個字符串 STRING LDR r0,=STRING_WELCOME ;取得字符串的首地址 mov r1,#0x0c100000 ;將#0x0c100000給 R1,目的為將R1指向目標(biāo)地址 STRING2 LDRB r2,[r0] ;取出一個字符給 R2 cmp r2,#97 ;將 R2 與 97(即‘a(chǎn)') 作比較 BGE BIGWORD ;大于或等于 97 則跳轉(zhuǎn)至 BIGWORD 子程序 cmp r2,#65 ;將 R2 與 65(即‘A') 作比較 BGE SMALLWORD ;大于或等于 65 則跳轉(zhuǎn)至 SMALLWORD 子程序 B MYLOOP ;跳轉(zhuǎn)至MYLOOP,存字符 BIGWORD ;大寫轉(zhuǎn)小寫子程序 sub r2,r2,#32 ;大寫字母的assci碼-32 即可轉(zhuǎn)換為小寫 B MYLOOP ;跳轉(zhuǎn)至 MYLOOP,存字符 SMALLWORD ;小寫轉(zhuǎn)大寫子程序 add r2,r2,#32 ;小寫字母的assci碼+32 即可轉(zhuǎn)換為大寫 MYLOOP ;存字符子程序 STRB r2,[r1] ;存入R1指定的內(nèi)容 add r0,r0,#1 ;R0=R0+1 add r1,r1,#1 ;R1=R1+1 CMP r2,#'\0' ;將R2與‘\0'作比較,目的是判斷是否已經(jīng)取完了字符串 BNE STRING2 ;上一個比較不相等則跳轉(zhuǎn)至 STRING2 繼續(xù)取字符
ASSIC碼表
說明
1、程序均為原創(chuàng),不一定為最好的解法,歡迎留言或者私信交流;
2、需要開發(fā)環(huán)境或者其他資料的也歡迎留言或者私信;
3、若有侵犯個人或團(tuán)體的權(quán)益請及時聯(lián)系我;
4、本文為原創(chuàng),轉(zhuǎn)載或引用請注明出處
到此這篇關(guān)于ARM匯編解決階乘及大小寫轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)ARM匯編大小寫轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows10下利用DOSBOX和MASM32搭建匯編語言開發(fā)環(huán)境
這篇文章主要介紹了Windows10下利用DOSBOX和MASM32搭建匯編語言開發(fā)環(huán)境,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01匯編語言AND指令實現(xiàn)對兩個操作數(shù)進(jìn)行邏輯(按位)與操作
這篇文章主要介紹了匯編語言AND指令實現(xiàn)對兩個操作數(shù)進(jìn)行邏輯(按位)與操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01