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

正文內(nèi)容

arm組合語言程式設(shè)計(參考版)

2024-09-05 15:00本頁面
  

【正文】 。 ? 指令範(fàn)例: SWI 0x02 ;該指令使用作業(yè)系統(tǒng)編號位元 02的系統(tǒng)常式。 100 ARM指令集 例外產(chǎn)生指令 ? ARM微處理器所支援的例外指令有如下兩條: ? SWI 軟體中斷指令 ? BKPT 中斷點中斷指令 101 ARM指令集 例外產(chǎn)生指令 SWI指令 ? SWI指令的語法為: ? SWI{條件 } 24位的立即數(shù) ? SWI指令用於產(chǎn)生軟體中斷,以便用戶程式能使用作業(yè)系統(tǒng)的系統(tǒng)常式。其中輔助運算器操作碼 1和輔助運算器操作碼 2為輔助運算器將要執(zhí)行的操作,目的暫存器為 ARM處理器的暫存器,來源暫存器 1和來源暫存器 2均為輔助運算器的暫存器。 99 ARM指令集 輔助運算器指令 MRC指令 ? MRC指令的語法為: ? MRC{條件 } 輔助運算器編碼,輔助運算器操作碼 1,目的暫存器,來源暫存器 1,來源暫存器 2,輔助運算器操作碼2。其中輔助運算器操作碼 1和輔助運算器操作碼 2為輔助運算器將要執(zhí)行的操作,來源暫存器為 ARM處理器的暫存器,目的暫存器 1和目的暫存器 2均為輔助運算器的暫存器。 98 ARM指令集 輔助運算器指令 MCR指令 ? MCR指令的語法為: ? MCR{條件 } 輔助運算器編碼,輔助運算器操作碼 1,來源暫存器,目的暫存器 1,目的暫存器 2,輔助運算器操作碼2。其中, {L}選項表示指令為長讀取操作,如用於雙精度資料的傳輸。 ? 指令範(fàn)例: LDC P3, C4, [R0] ;將 ARM處理器的暫存器 R0所指向的記憶體中的字資料般移到輔助運算器 P3的暫存器 C4中。 ? 指令範(fàn)例: CDP P3, 2, C12, C10, C3, 4 ;該指令完成輔助運算器 P3的初始化 96 ARM指令集 輔助運算器指令 LDC指令 ? LDC指令的語法為: ? LDC{條件 }{L} 輔助運算器編碼 ,目的暫存器, [來源暫存器 ] ? LDC指令用於將來源暫存器所指向的記憶體中的字資料般移到目的暫存器中,若輔助運算器不能成功完成般移操作,則產(chǎn)生未定義指令例外。 ? CDP指令用於 ARM處理器通知 ARM輔助運算器執(zhí)行特定的操作 ,若輔助運算器不能成功完成特定的操作,則產(chǎn)生未定義指令例外。 ? ARM的輔助運算器指令主要用於 ARM處理器初始化 ARM輔助運算器的資料處理操作,以及在 ARM處理器的暫存器和輔助運算器的暫存器之間般移資料,和在 ARM輔助運算器的暫存器和記憶體之間般移資料。 ? 操作範(fàn)例: MOV R0, R1, RRX2 ;將 R1中的內(nèi)容進(jìn)行帶擴充的迴圈右移兩位後般移到 R0中。 93 ARM指令集 移位元指令 RRX操作 ? RRX操作的格式為: ? 通用暫存器, RRX 運算元 ? RRX可完成對通用暫存器中的內(nèi)容進(jìn)行帶擴充的迴圈右移的操作,按運算元所指定的數(shù)量向右迴圈移位,左端用進(jìn)位元旗標(biāo)位元 C來填充。顯然,當(dāng)進(jìn)行 32位的迴圈右移操作時,通用暫存器中的值不改變。 92 ARM指令集 移位元指令 ROR操作 ? ROR操作的格式為: ? 通用暫存器, ROR 運算元 ? ROR可完成對通用暫存器中的內(nèi)容進(jìn)行迴圈右移的操作,按運算元所指定的數(shù)量向右迴圈移位,左端用右端移出的位來填充。其中,運算元可以是通用暫存器,也可以是立即數(shù)( 0~ 31)。 ? 操作範(fàn)例: MOV R0, R1, LSR2 ;將 R1中的內(nèi)容右移兩位元後般移到 R0中,左端用零來填充。 90 ARM指令集 移位元指令 LSR操作 ? LSR操作的格式為: ? 通用暫存器, LSR 運算元 ? LSR可完成對通用暫存器中的內(nèi)容進(jìn)行右移的操作,按運算元所指定的數(shù)量向右移位,左端用零來填充。其中,運算元可以是通用暫存器,也可以是立即數(shù)( 0~ 31)。 ? 例如,資料處理指令的第二個運算元為暫存器時,就可以加入移位元操作選項對它進(jìn)行各種移位操作。 SWPB R0, R0, [R1] ;該指令完成將 R1所指向的記憶體中的位元組資料與 R0中的低 8位元資料交換。顯然,當(dāng)來源暫存器 1和目的暫存器為同一個暫存器時,指令交換該暫存器和記憶體的內(nèi)容。 SWP R0, R0, [R1] ;該指令完成將 R1所指向的記憶體中的字資料與 R0中的字資料交換。顯然,當(dāng)來源暫存器 1和目的暫存器為同一個暫存器時,指令交換該暫存器和記憶體的內(nèi)容。 76 ARM指令集 連續(xù)資料載入 /存儲指令 IA 77 ARM指令集 連續(xù)資料載入 /存儲指令 IA 78 ARM指令集 連續(xù)資料載入 /存儲指令 IB 79 ARM指令集 連續(xù)資料載入 /存儲指令 IB 80 ARM指令集 連續(xù)資料載入 /存儲指令 DA 81 ARM指令集 連續(xù)資料載入 /存儲指令 DA 82 ARM指令集 連續(xù)資料載入 /存儲指令 DB 83 ARM指令集 連續(xù)資料載入 /存儲指令 DB 84 ARM指令集 資料交換指令 ? ARM微處理器所支援資料交換指令能在記憶體和暫存器之間交換資料。 ? {∧ }為可選尾碼, ? 當(dāng)指令為 LDM且暫存器列表中包含 R15,選用該尾碼時表示 ? 除了正常的資料般移之外,還將 SPSR複製到 CPSR。 75 ARM指令集 連續(xù)資料載入 /存儲指令 尾碼 ? 基址暫存器不允許為 R15,暫存器列表可以為 R0~R14的任意組合。 ? {類型 }為非堆疊型定址或堆疊型定址 73 非堆疊型定址 ? IA( Increment After) ?基底暫存器在存取後才增加 ? IB (Increment Before) ?基底暫存器在存取前即增加 ? DA (decrement After) ? 基底暫存器在存取後才減少 ? DB (decrement Before) ?基底暫存器在存取前即減少 74 ARM指令集 連續(xù)資料載入 /存儲指令 ? 堆疊型定址(應(yīng)用於程式堆疊資料結(jié)構(gòu)上) ? FD(Full Descending),滿遞減 ? FA(Full Ascending),滿遞增 ? ED(Empty Descending),空遞減 ? EA(Empty Ascending),空遞減 ? 堆疊指令範(fàn)例: STMFD R13!, {R0, R4R12, LR} ;將暫存器列表中的暫存器( R0, R4到 R12, LR)存入堆疊。 71 ARM指令集 連續(xù)資料載入 /存儲指令 ? ARM微處理器所支援連續(xù)資料載入 /存儲指令可以一次在一片連續(xù)的記憶體單元和多個暫存器之間般移資料,連續(xù)載入指令用於將一片連續(xù)的記憶體中的資料般移到多個暫存器,連續(xù)資料存儲指令則完成相反的操作。 ? 指令範(fàn)例: STRH R0, [R1] ;將暫存器 R0中的半字資料寫入以 R1為位址的記憶體中。 70 ARM指令集 載入 /存儲指令 STRH指令 ? STRH指令的語法為: ? STR{條件 }H 來源暫存器, 記憶體位址 ? STRH指令用於從來源暫存器中將一個 16位元的半字資料般移到記憶體中。 ? 指令範(fàn)例: STRB R0, [R1] ;將暫存器 R0中的位元組資料寫入以 R1為位址的記憶體中。 69 ARM指令集 載入 /存儲指令 STRB指令 ? STRB指令的語法為: ? STR{條件 }B 來源暫存器, 記憶體位址 ? STRB指令用於從來源暫存器中將一個 8位元的位元組資料般移到記憶體中。 ? 指令範(fàn)例: STR R0, [R1],# 8 ;將 R0中的字資料寫入以 R1為位址的記憶體中,並將新位址 R1+ 8寫入 R1。 68 ARM指令集 載入 /存儲指令 STR指令 ? STR指令的語法為: ? STR{條件 } 來源暫存器, 記憶體位址 ? STR指令用於從來源暫存器中將一個 32位元的字資料般移到記憶體中。 LDRH R0, [R1,# 8] ;將記憶體位址為 R1+ 8的半字資料讀入暫存器 R0,並將 R0的高 16位清零。當(dāng)程式計數(shù)器 PC作為目的暫存器時,指令從記憶體中讀取的字資料被當(dāng)作目的地址,從而可以實現(xiàn)程式流程的跳移。 67 ARM指令集 載入 /存儲指令 LDRH指令 ? LDRH指令的語法為: ? LDR{條件 }H 目的暫存器, 記憶體位址 ? LDRH指令用於從記憶體中將一個 16位元的半字資料般移到目的暫存器中,同時將暫存器的高 16位清零。 ? 指令範(fàn)例: LDRB R0, [R1] ;將記憶體位址為 R1的位元組資料讀入暫存器 R0,並將 R0的高 24位清零。該指令通常用於從記憶體中讀取 8位元的位元組資料到通用暫存器,然後對資料進(jìn)行處理。 LDR R0, [R1], R2, LSL# 2 ;將記憶體位址為 R1的字資料讀入暫存器 R0,並將新位址 R1+ R24寫入 R1。 LDR R0, [R1], R2 ;將記憶體位址為 R1的字資料讀入暫存器 R0,並將新位址 R1+ R2寫入 R1。 LDR R0, [R1, R2] ! ;將記憶體位址為 R1+R2的字資料讀入暫存器 R0,並將新位址 R1+ R2寫入 R1。 LDR R0, [R1, R2] ;將記憶體位址為 R1+R2的字資料讀入暫存器 R0。該指令在程式設(shè)計中比較常用,且定址方式靈活多樣,請讀者認(rèn)真掌握。該指令通常用於從記憶體中讀取 32位元的字資料到通用暫存器,然後對資料進(jìn)行處理。 ? 指令範(fàn)例: MSR CPSR, R0 ;般移 R0的內(nèi)容到 CPSR MSR SPSR, R0 ;般移 R0的內(nèi)容到 SPSR MSR CPSR_c, R0 ;般移 R0的內(nèi)容到 SPSR,但僅僅修改 CPSR中的控制位域 64 ARM指令集 載入 /存儲指令 ? ARM微處理器支援載入 /存儲指令用於在暫存器和記憶體之間般移資料,載入指令用於將記憶體中的資料般移到暫存器,存儲指令則完成相反的操作。其中,運算元可以為通用暫存器或立即數(shù)。 ? 當(dāng)在例外處理或進(jìn)程切換時,需要保存程式狀態(tài)暫存器的值,可先用該指令讀出程式狀態(tài)暫存器的值,然後保存。 62 ARM指令集 程式狀態(tài)暫存器存取指令 MRS指令 ? MRS指令的語法為: ? MRS{條件 } 通用暫存器,程式狀態(tài)暫存器( CPSR或 SPSR) ? MRS指令用於將程式狀態(tài)暫存器的內(nèi)容般移到通用暫存器中。 ? 指令範(fàn)例: UMLAL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 + R0 ; R1 = ( R2 R3)的高 32位 + R1 61 ARM指令集 程式狀態(tài)暫存器存取指令 ? ARM微處理器支援程式狀態(tài)暫存器存取指令,用於在程式狀態(tài)暫存器和通用暫存器之間般移資料,程式狀態(tài)暫存器存取指令包括以下兩條: ? MRS 程式狀態(tài)暫存器到通用暫存器的資料般移指令。 ? 對於目的暫存器 Low,在指令執(zhí)行前存放 64位元加數(shù)的低 32位元,指令執(zhí)行後存放結(jié)果的低 32位。 ? 指令範(fàn)例: UMULL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 ; R1 = ( R2 R3)的高 32位 60 ARM指令集 乘法指令與乘加指令 UMLAL指令 ? UMLAL指令的語法為: ? UMLAL{條件 }{S} 目的暫存器 Low,目的暫存器低 High,運算元 1,運算元
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1