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

正文內(nèi)容

[信息與通信]arm匯編語言程序設(shè)計(編輯修改稿)

2024-11-12 17:29 本頁面
 

【文章內(nèi)容簡介】 的 Str2 : aaa str1:bbb l1:T,a1:0000004Fccc 23 main PROC 。函數(shù) main STMFD sp!,{lr}。 返回地址入棧 ADR r0,strhello ;取 strhello的地址至 r0 BL _printf。調(diào)用 C的 _printf函數(shù)打印字符串 LDMFD sp!,{pc} ;返回 Strhello 。strhello代表本地字符串的地址 DCB “$str2\n\0”。定義字節(jié)空間,賦值 str2的內(nèi)容 ENDP 。函數(shù) main結(jié)束 EXPORT main 。導出 main函數(shù)供外部調(diào)用 。引入三個 C運行時庫函數(shù)和 ARM庫 IMPORT _main IMPORT __main IMPORT _printf IMPORT ||Lib$$Request$$armlib||, WEAK END 24 偽操作 在 ARM匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,通常稱這些特殊指令助記符為偽操作。 偽操作在源程序中的作用是為完成匯編程序作各種準備工作的,這些偽操作僅在匯編過程中起作用,一旦匯編結(jié)束,偽操作的使命就完成。 在 ARM的匯編程序中,偽操作共計 42條。 ( 1)符號定義偽操作,變量定義、賦值 10條。 ( 2)數(shù)據(jù)定義偽操作,存儲區(qū)定義、賦值 9條。 ( 3)匯編控制偽操作 6條。 ( 4)其他偽操作 17條。 25 符號定義偽操作 用于變量定義、賦值共計 10條。 LCLA、 LCLL、 LCLS:局部變量定義。 GBLA、 GBLL、 GBLS:全局變量定義。 SETA、 SETL、 SETS: 變量賦值。 RLIST:通用寄存器列表定義名稱 。 26 LCLA、 LCLL、 LCLS定義局部變量 LCLA、 LCLL、 LCLS 定義局部變量 Local arithmetic Local logic Local string 格式: LCLA/LCLL/LCLS 局部變量名 說明: LCLA、 LCLL、 LCLS偽操作用于定義一個匯編程序中的局部變量,并初始化,其中: LCLA定義一個局部的數(shù)字變量,初始化為 0; LCLL定義一個局部的邏輯變量,初始化為 F; LCLS定義一個局部的字符串變量,初始化為空串。 27 這三條偽指令用于聲明局部變量,在其局部作用范圍內(nèi)變量名必須唯一,例如,在宏內(nèi)。 局部變量一般僅用于宏中。 例如: MACRO TEST LCLA num1;聲明一個局部的數(shù)字變量,變量名為 num1 LCLL l2;聲明一個局部的邏輯變量,變量名為 l2。 LCLS str3;定義一個局部的字符串變量,變量名為 str3 num1 SETA 0xabcd;將該變量賦值為 0xabcd l2 SETL {FALSE};將該變量賦值為真 str3 SETS “Hello!”;將該變量賦值為“ Hello!” ……。 使用局部變量 MEND 在宏內(nèi)定義局部變量后,在宏外使用該變量時編譯會出錯。 宏引用: TEST 28 GBLA、 GBLL、 GBLS 定義全局變量 格式: GBLA / GBLL / GBLS 變量名 說明: GBLA、 GBLL、 GBLS偽操作定義一個匯編程序中的全局變量,并初始化。 其中: GBLA定義一個全局數(shù)字變量,并初始化為 0; GBLL定義一個全局邏輯變量,并初始化為“ F”; GBLS定義一個全局字符串變量,并初始化為空串; 這三條偽指令用于定義全局變量,因此在整個程序范圍內(nèi)變量名必須唯一。 29 例如: GBLA num1 ;定義一個全局的數(shù)字變量,變量名為 num1 num1 SETA 0xabcd ;將該變量賦值為 0xabcd GBLL l2 ;定義一個全局的邏輯變量,變量名為 l2 l2 SETL {FALSE} ;將該變量賦值為假 GBLS str3 ;定義一個全局的字符串變量,變量名為 str3 str3 SETS “Hello!” ;將該變量賦值為“ Hello!” 30 SETA、 SETL、 SETS 變量賦值 格式: 變量名 SETA/SETL/SETS 表達式 說明: SETA:給一個數(shù)字變量賦值; SETL:給一個邏輯變量賦值; SETS:給一個字符串變量賦值; 格式中的變量名必須為已經(jīng)定義過的全局或局部變量,表達式為將要賦給變量的值。 例如: LCLA num1;聲明一個局部的數(shù)字變量 num1 num1 SETA 0x1234;將該變量賦值為 0x1234 LCLS str3 ;聲明一個局部的邏輯變量 str3 str3 SETS “Hello!”;該變量賦值為“ Hello!” 31 RLIST 格式:名稱 RLIST {寄存器列表 } 說明: RLIST可用于對一個通用寄存器列表定義名稱,該名稱可在 ARM指令 LDM/STM中使用。 在 LDM/STM指令中,列表中的寄存器根據(jù)寄存器的編號確定其訪問次序,與列表中的寄存器排列次序無關(guān)。 低編號寄存器對應(yīng)低地址存儲單元,高編號寄存器對應(yīng)高地址存儲單元。 32 例如: Pblock RLIST {R0R3, R7,R5, R9} ;將寄存器列表名稱定義為 pblock,可在 ARM指令 LDM/STM中通過該名稱訪問寄存器列表。 STMFD SP!, pblock;由高到低訪問, R9先入棧 STMFA SP!, pblock;由低到高訪問, R0先入棧 STM SP!, pblock ;出錯 33 數(shù)據(jù)定義偽操作 數(shù)據(jù)定義偽操作用于存儲區(qū)定義、賦值,共計 9條。 DCB DCW/DCWU DCD/DCDU DCQ/DCQU DCFS/DCFSU DCFD/DCFDU SPACE FIELD MAP 34 DCB定義字節(jié) Define continue bytes定義字節(jié) 格式:標號 DCB 表達式 說明: DCB分配連續(xù)的字節(jié)單元并用偽操作中指定的表達式對其初始化。 其中,表達式可以為使用雙引號的字符串或 0—255的數(shù)字 ,DCB可用“ =”代替。 35 例如: Array1 DCB 1,2,3,4,5;數(shù)組 str1 DCB “Your are wele!” ;構(gòu)造字符串并分配空間。 或 str1 = “Your are wele! LDR R0, = Array1 ;(大范圍地址讀取, 4G) 取 Array1地址至 R0 36 DCW/DCWU定義半字 格式: 標號 DCW / DCWU 表達式 說明: DCW分配連續(xù)半字存儲單元并用表達式值初始化,它定義的存儲空間是半字對齊的。 DCWU 功能跟 DCW類似,只是分配的存儲單元不嚴格半字對齊。 例如: Arrayw1 DCW 0xa,0xb,0xc,0xd ;構(gòu)造固定數(shù)組并分配半字存儲單元。 37 DCD/DCDU定義字 格式: 標號 DCD/DCDU 表達式 說明: DCD偽操作分配連續(xù)的字存儲單元并用偽指令中指定的表達式初始化,它定義的存
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1