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

正文內(nèi)容

arm組合語言程式設(shè)計(jì)-文庫吧資料

2024-09-09 15:00本頁面
  

【正文】 2 ? UMLAL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元同目的暫存器 Low中的值相加後又放置到目的暫存器Low中,結(jié)果的高 32位元同目的暫存器 High中的值相加後又放置到目的暫存器 High中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 指令範(fàn)例: SMLAL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 + R0 ; R1 = ( R2 R3)的高 32位 + R1 59 ARM指令集 乘法指令與乘加指令 UMULL指令 ? UMULL指令的語法為: ? UMULL{條件 }{S} 目的暫存器 Low,目的暫存器低High,運(yùn)算元 1,運(yùn)算元 2 ? UMULL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元放置到目的暫存器 Low中,結(jié)果的高 32位元放置到目的暫存器 High中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 對於目的暫存器 Low,在指令執(zhí)行前存放 64位元加數(shù)的低 32位元,指令執(zhí)行後存放結(jié)果的低 32位。 ? 指令範(fàn)例: SMULL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 ; R1 = ( R2 R3)的高 32位 58 ARM指令集 乘法指令與乘加指令 SMLAL指令 ? SMLAL指令的語法為: ? SMLAL{條件 }{S} 目的暫存器 Low,目的暫存器低 High,運(yùn)算元 1,運(yùn)算元 2 ? SMLAL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元同目的暫存器 Low中的值相加後又放置到目的暫存器Low中,結(jié)果的高 32位元同目的暫存器 High中的值相加後又放置到目的暫存器 High中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 指令範(fàn)例: MLA R0, R1, R2, R3 ; R0 = R1 R2 + R3 MLAS R0, R1, R2, R3 ; R0 = R1 R2 + R3,同時(shí)設(shè)定 CPSR中的相關(guān)條件旗標(biāo)位元 57 ARM指令集 乘法指令與乘加指令 SMULL指令 ? SMULL指令的語法為: ? SMULL{條件 }{S} 目的暫存器 Low,目的暫存器低High,運(yùn)算元 1,運(yùn)算元 2 ? SMULL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果的低 32位元放置到目的暫存器 Low中,結(jié)果的高 32位元放置到目的暫存器 High中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 指令範(fàn)例: MUL R0, R1, R2 ; R0 = R1 R2 MULS R0, R1, R2 ; R0 = R1 R2,同時(shí)設(shè)定 CPSR中的相關(guān)條件旗標(biāo)位元 56 ARM指令集 乘法指令與乘加指令 MLA指令 ? MLA指令的語法為: ? MLA{條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2,運(yùn)算元 3 ? MLA指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,再將乘積加上運(yùn)算元 3,並把結(jié)果放置到目的暫存器中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 乘法指令與乘加指令共有以下 6條: ? MUL 32位元乘法指令 ? MLA 32位元乘加指令 ? SMULL 64位元有符號(hào)數(shù)乘法指令 ? SMLAL 64位元有符號(hào)數(shù)乘加指令 ? UMULL 64位元無符號(hào)數(shù)乘法指令 ? UMLAL 64位元無符號(hào)數(shù)乘加指令 55 ARM指令集 乘法指令與乘加指令 MUL指令 ? MUL指令的語法為: ? MUL{條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? MUL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果放置到目的暫存器中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 指令範(fàn)例: BIC R0, R0,#% 1011 ; 該指令清除 R0 中的位 0、 和 3,其餘的位保持不變。運(yùn)算元 2為 32位的遮罩,如果在遮罩中設(shè)定了某一位,則清除這一位。 53 ARM指令集 資料處理指令 BIC指令 ? BIC指令的語法為: ? BIC {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? BIC指令用於清除運(yùn)算元 1的某些位,並把結(jié)果放置到目的暫存器中。該指令常用於反轉(zhuǎn)運(yùn)算元 1的某些位。 52 ARM指令集 資料處理指令 EOR指令 ? EOR指令的語法為: ? EOR{條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? EOR指令用於在兩個(gè)運(yùn)算元上進(jìn)行邏輯互斥運(yùn)算,並把結(jié)果放置到目的暫存器中。該指令常用於設(shè)定運(yùn)算元 1的某些位。 51 ARM指令集 資料處理指令 ORR指令 ? ORR指令的語法為: ? ORR {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? ORR指令用於在兩個(gè)運(yùn)算元上進(jìn)行邏輯或運(yùn)算,並把結(jié)果放置到目的暫存器中。該指令常用於遮罩運(yùn)算元 1的某些位。 ? 指令範(fàn)例: RSC R0, R1, R2 ; R0 = R2 – R1 ! C 50 ARM指令集 資料處理指令 AND指令 ? AND指令的語法為: ? AND {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? AND指令用於在兩個(gè)運(yùn)算元上進(jìn)行邏輯與運(yùn)算,並把結(jié)果放置到目的暫存器中。該指令使用進(jìn)位元旗標(biāo)來表示借位,這樣就可以做大於 32位的減法,注意不要忘記設(shè)定 S尾碼來更改進(jìn)位元旗標(biāo)。 ? 指令範(fàn)例: RSB R0, R1, R2 ; R0 = R2 – R1 RSB R0, R1, 256 ; R0 = 256 – R1 RSB R0, R2, R3, LSL1 ; R0 = (R3 1) R2 49 ARM指令集 資料處理指令 RSC指令 ? RSC指令的語法為: ? RSC {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? RSC指令用於把運(yùn)算元 2減去運(yùn)算元 1,再減去CPSR中的 C條件旗標(biāo)位元的反碼,並將結(jié)果存放到目的暫存器中。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。該指令可用於有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。該指令可用於有符號(hào)數(shù)或無符號(hào)數(shù)的減法運(yùn)算。 ? 以下指令序列完成兩個(gè) 128位數(shù)的加法,第一個(gè)數(shù)由高到低存放在暫存器 R7~ R4,第二個(gè)數(shù)由高到低存放在暫存器 R11~ R8,運(yùn)算結(jié)果由高到低存放在暫存器 R3~ R0: ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加第二個(gè)字,帶進(jìn)位 ADCS R2, R6, R10 ; 加第三個(gè)字,帶進(jìn)位 ADC R3, R7, R11 ; 加第四個(gè)字,帶進(jìn)位 46 ARM指令集 資料處理指令 SUB指令 ? SUB指令的語法為: ? SUB {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? SUB指令用於把運(yùn)算元 1減去運(yùn)算元 2,並將結(jié)果存放到目的暫存器中。它使用一個(gè)進(jìn)位元旗標(biāo)位元,這樣就可以做比 32位大的數(shù)的加法,注意不要忘記設(shè)定 S尾碼來更改進(jìn)位元旗標(biāo)。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。 ? 該指令通常用於比較運(yùn)算元 1和運(yùn)算元 2是否相等。 ? 運(yùn)算元 1是要測試的資料,而運(yùn)算元 2是一個(gè)位遮罩,該指令一般用來測試是否設(shè)定了特定的位。 ? 該指令實(shí)際完成運(yùn)算元 1和運(yùn)算元 2相加,並根據(jù)結(jié)果更改條件旗標(biāo)位元。 ? 旗標(biāo)位元表示的是運(yùn)算元 1與運(yùn)算元 2的關(guān)係 (大、小、相等 ),例如,當(dāng)運(yùn)算元 1大於操作運(yùn)算元 2,則此後的有 GT 尾碼的指令將可以執(zhí)行。 ? 指令範(fàn)例: ?MVN R0,# 0 ;將立即數(shù) 0取反般移到暫存器 R0中,完成後 R0=1 40 ARM指令集 資料處理指令 CMP指令 ? CMP指令的語法為: ? CMP{條件 } 運(yùn)算元 1,運(yùn)算元 2 ? CMP指令用於把一個(gè)暫存器的內(nèi)容和另一個(gè)暫存器的內(nèi)容或立即數(shù)進(jìn)行比較,同時(shí)更新 CPSR中條件旗標(biāo)位元的值。與 MOV指令不同之處是在般移之前按位被取反了,即把一個(gè)被取反的值般移到目的暫存器中。其中 S選項(xiàng)決定指令的操作是否影響 CPSR中條件旗標(biāo)位元的值,當(dāng)沒有 S時(shí)指令不更新 CPSR中條件旗標(biāo)位元的值。 ? 比較指令 ? 比較指令不保存運(yùn)算結(jié)果,只更新 CPSR中相應(yīng)的條件旗標(biāo)位元。 36 ARM指令集 跳移指令 資料處理指令 ? 資料處理指令可分為 ? 資料般移指令 ? 資料般移指令用於在暫存器和記憶體之間進(jìn)行資料的雙向傳輸。同時(shí),副程式的返回可以通過將暫存器 R14值複製到 PC中來完成。以下指令: ?BL Label ;當(dāng)程式無條件跳移到標(biāo)號(hào) Label處執(zhí)行時(shí),同時(shí)將當(dāng)前的 PC值保存到 R14中 34 ARM指令集 跳移指令 BLX指令 ? BLX指令的語法為: ? BLX 目標(biāo)位址 ? BLX指令從 ARM指令集跳移到指令中所指定的目標(biāo)位址,並將處理器的工作狀態(tài)有 ARM狀態(tài)切換到Thumb狀態(tài),該指令同時(shí)將 PC的當(dāng)前內(nèi)容保存到暫存器 R14中。以下指令: B Label ;程式無條件跳移到標(biāo)號(hào) Label處執(zhí)行 CMP R1,# 0 ;當(dāng) CPSR暫存器中的 Z條件碼置位元時(shí),程式跳移到標(biāo)號(hào) Label處執(zhí)行 BEQ Label 33 ARM指令集 跳移指令 BL指令 ? BL指令的語法為: ? BL{條件 } 目標(biāo)位址 ? BL 是另一個(gè)跳移指令,但跳移之前,會(huì)在暫存器 R14中保存 PC的當(dāng)前內(nèi)容,因此,可以通過將 R14 的內(nèi)容重新載入到 PC中,來返回到跳移指令之後的那個(gè)指令處執(zhí)行。注意存儲(chǔ)在跳移指令中的實(shí)際值是相對當(dāng)前 PC值的一個(gè)偏移量,而不是一個(gè)絕對位址,它的值由彙編器來計(jì)算(參考定址方式中的相對定址)。 32 ARM指令集 跳移指令 B指令 ? B指令的語法為: ? B{條件 } 目標(biāo)位址 ? B指令是最簡單的跳移指令。 ? BLX 帶返回和狀態(tài)切換的跳移指令。 ? ARM指令集中的跳移指令可以完成從當(dāng)前指令向前或向後的 32MB的位址空間的跳移,包括以下 4條指令: ? B 跳移指令。 ? 通過向程式計(jì)數(shù)器 PC寫入跳移位址值,可以實(shí)現(xiàn)在 4GB的位址空間中的任意跳移,在跳移之前結(jié)合使用。 31 ARM指令集 跳移指令 ? 跳移指令用於實(shí)現(xiàn)程式流程的跳移,在 ARM程式中有兩種方法可以實(shí)現(xiàn)程式流程的跳移: ? 使用專門的跳移指令。 ? 空遞增堆疊 ? 堆疊指標(biāo)指向下一個(gè)將要放入資料的空位置,且由低位址向高地址生成。 30 ARM支援四種堆疊工作方式 ? 滿遞增堆疊 ? 堆疊指標(biāo)指向最後壓入的資料,且由低位址向高位址生成。 ? 當(dāng)堆疊指標(biāo)指向最後壓入堆疊的資料時(shí),稱為滿堆疊( Full Stack),而當(dāng)堆疊指標(biāo)指向下一個(gè)將要放入資料的空位置時(shí),稱為空堆疊( Empty Stack)。 LDMIA R0, {R1, R2, R3, R4} ; R1←[R0] ; R2←[R0 + 4] ; R3←[R0 + 8] ; R4←[R0 + 12] 28 ARM指令的定址方式 相對定址 ? 與基址變址定址方式相類似,相對定址以程式計(jì)數(shù)器 PC的當(dāng)前值為基底位址,指令中的位址標(biāo)號(hào)作為偏移量,將兩者相加之後得到運(yùn)算元
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1