freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ch4-arm7tdmi匯編語(yǔ)言程序設(shè)計(jì)-資料下載頁(yè)

2024-10-24 20:16本頁(yè)面
  

【正文】 DCD 3 。 0:表示選擇加法子程序 1:表示選擇減法子程序 。 2:表示選擇乘法子程序 3:表示選擇除法子程序 END,計(jì)算機(jī)學(xué)院,77,2024/10/20,③ 堆棧傳遞參數(shù)方式,主程序和子程序使用同一個(gè)堆棧,主程序在BL調(diào)用子程序前,先將要傳遞的參數(shù)壓入到堆棧中,子程序可從堆棧中讀取傳過(guò)來(lái)的數(shù)據(jù);子程序返回需要向主程序傳遞參數(shù)時(shí),也可使用此方法。,計(jì)算機(jī)學(xué)院,78,2024/10/20,第4章 匯編語(yǔ)言程序設(shè)計(jì),1. 匯編語(yǔ)言的基本概念 2. ARM匯編程序的組成與結(jié)構(gòu) 3. 匯編語(yǔ)言程序設(shè)計(jì)的基本方法 4. 匯編語(yǔ)言和C語(yǔ)言交叉編程,計(jì)算機(jī)學(xué)院,79,2024/10/20,1.匯編程序與C程序間變量互訪,匯編程序訪問(wèn)C程序中的變量 具體操作步驟: 在C程序中,將供匯編程序訪問(wèn)的變量用關(guān)鍵字extern聲明為全局變量; 匯編程序中,用偽指令I(lǐng)MPORT引入C程序中的全局變量; 使用偽指令LDR讀取這個(gè)全局變量的地址; 使用指令LDR讀取這個(gè)全局變量的值; 在匯編程序中使用這個(gè)全局變量;,計(jì)算機(jī)學(xué)院,80,2024/10/20,C程序訪問(wèn)匯編程序中的變量 具體操作步驟: 在匯編語(yǔ)言程序中,用偽指令“global”定義全局變量,變量名必須是下劃線(xiàn)“_”為首字符的字母數(shù)字串; C程序中將該變量聲明為外部變量,即可訪問(wèn)匯編程序定義的全局變量。,1.匯編程序與C程序間變量互訪,計(jì)算機(jī)學(xué)院,81,2024/10/20,例:匯編程序和C程序間變量互訪 /* print.c 定義全局變量,并作為主程序 */ include extern int g_var = 124。 /* 全局變量 */ extern asmVisit(void)。 /* 匯編程序中聲明的全局函數(shù) */ extern int _multiple。 /* 聲明匯編程序中的全局變量_multiple為外部變量 */ int main() { printf(“Original value of g_var is: %d \n “, g_var)。 asmVisit()。 /* 調(diào)用匯編程序中的函數(shù),訪問(wèn)全局變量g_var */ printf(“mult is %d“,_multiple)。 /* 訪問(wèn)匯編程序中全局變量_multiple */ printf(“ Modified value of g_var is: %d“, g_var)。 return 0。 },計(jì)算機(jī)學(xué)院,82,2024/10/20,。 visit.s文件 AREA asmfile, CODE, READONLY EXPORT asmVisit 。 聲明全局函數(shù),供C程序調(diào)用 IMPORT g_var 。 引入在C程序中聲明定義的全局變量 GLOBAL _multiple 。 聲明全局變量,供C程序訪問(wèn) asmVisit LDR R0, =g_var LDR R1, [R0] LDR R2, =_multiple LDR R2, [R2] MOV R3, R1, LSL R2 。 將R1中的值擴(kuò)大指定的倍數(shù) STR R3, [R0] MOV PC, LR AREA asmData, DATA, READWRITE _multiple DCD 2 END,計(jì)算機(jī)學(xué)院,83,2024/10/20,2.匯編程序調(diào)用C程序,匯編程序中調(diào)用C函數(shù),只需在匯編程序中用偽指令I(lǐng)MPORT將需要調(diào)用的C函數(shù)名引用即可,然后將C函數(shù)放在一個(gè)獨(dú)立的C文件中進(jìn)行編譯,剩下的工作就由鏈接器來(lái)處理。 匯編程序與C函數(shù)間參數(shù)的傳遞規(guī)則遵守ATPCS(ARM Thumb Procedure Call Standard)規(guī)則:用ARM處理器寄存器組中的{R0 R3}作為參數(shù)傳遞和結(jié)果返回寄存器;如果參數(shù)數(shù)目超過(guò)4個(gè),則使用堆棧進(jìn)行傳遞。,計(jì)算機(jī)學(xué)院,84,2024/10/20,。 asmfile.s文件 AREA asmfile, CODE, READONLY IMPORT cFun 。 聲明引用外部函數(shù) ENTRY CODE32 start MOV R0, 1 MOV R1, 2 MOV R2, 3 BL cFun 。 此時(shí)結(jié)果和在R0中 stop MOV R0, 0x18 。 程序結(jié)束返回編譯器調(diào)試環(huán)境 LDR R1, =0x20026 SWI 0x123456 END /* cFun.c文件,由asmFile.s文件調(diào)用 */ int cFun(int a, int b, int c) { return a + b + c。 },計(jì)算機(jī)學(xué)院,85,2024/10/20,3. C程序調(diào)用匯編程序,C程序調(diào)用匯編子程序,要做的主要工作有兩個(gè): 在C程序中用關(guān)鍵字extern聲明匯編子程序的函數(shù)原型(C程序是函數(shù)結(jié)構(gòu)的程序設(shè)計(jì)風(fēng)格),聲明該函數(shù)的實(shí)現(xiàn)代碼在其他文件中; 在匯編程序中用偽指令EXPORT導(dǎo)出子程序名,并用它作為匯編代碼段的標(biāo)識(shí),最后用mov pc, lr返回。 這樣,在C程序中就可以像調(diào)用C函數(shù)一樣調(diào)用該匯編子程序了。,計(jì)算機(jī)學(xué)院,86,2024/10/20,具體操作步驟: 匯編程序中,用該子程序名作為匯編代碼段的標(biāo)識(shí),定義程序代碼,最后用“MOV PC, LR”指令返回; 匯編程序中用偽指令EXPORT導(dǎo)出子程序名; C程序中用關(guān)鍵字extern聲明該匯編子程序的函數(shù)原型;然后就可在C程序中訪問(wèn)該函數(shù); 函數(shù)調(diào)用時(shí)的參數(shù)傳遞規(guī)則:寄存器組中的{R0 R3}作為參數(shù)傳遞而返回值用寄存器R0返回;如果參數(shù)數(shù)目超過(guò)4個(gè),則使用堆棧進(jìn)行傳遞。,3. C程序調(diào)用匯編程序,計(jì)算機(jī)學(xué)院,87,2024/10/20,/* cfile.c */ include extern void strcpy(const char *src, char *dest)。 int main() { char *s = “this string is in C file“。 char temp[32]。 strcpy(s, temp)。 printf(“Source string : %s \n“, s)。 printf(“Destination sting: %s“, temp)。 return 0。 },計(jì)算機(jī)學(xué)院,88,2024/10/20,。 asmfile.s AREA strcpy,CODE, READONLY EXPORT strcpy 。 完成源字符串R0到目的字符串R1的拷貝 loop LDRB R5, [R0], 1 CMP R5, 0 。 是否到字符串結(jié)束 BEQ exit STRB R5, [R1], 1 B loop exit MOV PC, LR END,計(jì)算機(jī)學(xué)院,89,2024/10/20,4. C程序中內(nèi)嵌匯編代碼,C 程序中內(nèi)嵌的匯編代碼可使用大部分的ARM 和Thumb 指令,存在一些限制,主要有下面幾個(gè)方面: 不能直接向寄存器PC賦值,程序跳轉(zhuǎn)要使用指令B或者BL; 在訪問(wèn)物理寄存器時(shí),不要使用過(guò)于復(fù)雜的C表達(dá)式,避免物理寄存器沖突; R12和R13常被編譯器用來(lái)存放中間編譯結(jié)果,計(jì)算表達(dá)式值時(shí)可能將R0~RR12及R14用于子程序調(diào)用,因此要避免直接使用這些物理寄存器;,計(jì)算機(jī)學(xué)院,90,2024/10/20,一般不要直接指定物理寄存器,而讓編譯器進(jìn)行分配; 內(nèi)嵌匯編代碼中定義的變量不能在C函數(shù)體中訪問(wèn),但內(nèi)嵌匯編代碼可以通過(guò)指針的方式訪問(wèn)C函數(shù)體中定義的變量。,4. C程序中內(nèi)嵌匯編代碼,在C程序中使用“__asm”關(guān)鍵字標(biāo)記內(nèi)嵌匯編代碼, 格式如下: __asm 。 注意是雙下劃線(xiàn) { 。 匯編指令編寫(xiě)的代碼 },計(jì)算機(jī)學(xué)院,91,2024/10/20,int main() { char *s= “this is a example AsmInC !“。 char temp[64]。 strcpy(s , temp)。 printf(“Original string: %s \n “, s)。 printf(“Copyed string: %s“, temp)。 return 0。 },計(jì)算機(jī)學(xué)院,92,2024/10/20,include void strcpy(const char *src, char *dest) { char ch。 。 檢查字符串是否結(jié)束的標(biāo)志 __asm { 。 功能:完成將源字符串src中的數(shù)據(jù)拷貝到目的字符串dest中 LOOP: LDRB ch, [src], 1 STRB ch, [dest], 1 CMP ch, 0 BNE LOOP } },樹(shù)立質(zhì)量法制觀念、提高全員質(zhì)量意識(shí)。24.10.2024.10.20Sunday, October 20, 2024 人生得意須盡歡,莫使金樽空對(duì)月。23:39:5623:39:5623:3910/20/2024 11:39:56 PM 安全象只弓,不拉它就松,要想保安全,常把弓弦繃。24.10.2023:39:5623:39Oct2420Oct24 加強(qiáng)交通建設(shè)管理,確保工程建設(shè)質(zhì)量。23:39:5623:39:5623:39Sunday, October 20, 2024 安全在于心細(xì),事故出在麻痹。24.10.2024.10.2023:39:5623:39:56October 20, 2024 踏實(shí)肯干,努力奮斗。2024年10月20日下午11時(shí)39分24.10.2024.10.20 追求至善憑技術(shù)開(kāi)拓市場(chǎng),憑管理增創(chuàng)效益,憑服務(wù)樹(shù)立形象。2024年10月20日星期日下午11時(shí)39分56秒23:39:5624.10.20 嚴(yán)格把控質(zhì)量關(guān),讓生產(chǎn)更加有保障。2024年10月下午11時(shí)39分24.10.2023:39October 20, 2024 作業(yè)標(biāo)準(zhǔn)記得牢,駕輕就熟除煩惱。2024年10月20日星期日11時(shí)39分56秒23:39:5620 October 2024 好的事情馬上就會(huì)到來(lái),一切都是最好的安排。下午11時(shí)39分56秒下午11時(shí)39分23:39:5624.10.20 一馬當(dāng)先,全員舉績(jī),梅開(kāi)二度,業(yè)績(jī)保底。24.10.2024.10.2023:3923:39:5623:39:56Oct24 牢記安全之責(zé),善謀安全之策,力務(wù)安全之實(shí)。2024年10月20日星期日11時(shí)39分56秒Sunday, October 20, 2024 相信相信得力量。24.10.202024年10月20日星期日11時(shí)39分56秒24.10.20,謝謝大家!
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1