arm组合语言程式设计(编辑修改稿)内容摘要:
,#% 1 ;用於測試在暫存器 R1中是否設定了最低位(%表示二進位數字) TST R1,# 0xffe ;將暫存器 R1的值與立即數 0xffe按位元與,並根據結果設定 CPSR的旗標位元 43 ARM指令集 資料處理指令 TEQ指令 TEQ指令的語法為: TEQ {條件 } 運算元 1,運算元 2 TEQ指令用於把一個暫存器的內容和另一個暫存器的內容或立即數進行按位的互斥運算,並根據運算結果更新 CPSR中條件旗標位元的值。 該指令通常用於比較運算元 1和運算元 2是否相等。 指令範例: •TEQ R1, R2 ;將暫存器 R1的值與暫存器 R2的值按位元互斥,並根據結果設定 CPSR的旗標位元 44 ARM指令集 資料處理指令 ADD指令 ADD指令的語法為: ADD {條件 }{S} 目的暫存器,運算元 1,運算元 2 ADD指令用於把兩個運算元相加,並將結果存放到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 指令範例: ADD R0, R1, R2 ; R0 = R1 + R2 ADD R0, R1, 256 ; R0 = R1 + 256 ADD R0, R2, R3, LSL1 ; R0 = R2 + (R3 1) 45 ARM指令集 資料處理指令 ADC指令 ADC指令的語法為: ADC {條件 }{S} 目的暫存器,運算元 1,運算元 2 ADC指令用於把兩個運算元相加,再加上 CPSR中的 C條件旗標位元的值,並將結果存放到目的暫存器中。 它使用一個進位元旗標位元,這樣就可以做比 32位大的數的加法,注意不要忘記設定 S尾碼來更改進位元旗標。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 以下指令序列完成兩個 128位數的加法,第一個數由高到低存放在暫存器 R7~ R4,第二個數由高到低存放在暫存器 R11~ R8,運算結果由高到低存放在暫存器 R3~ R0: ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加第二個字,帶進位 ADCS R2, R6, R10 ; 加第三個字,帶進位 ADC R3, R7, R11 ; 加第四個字,帶進位 46 ARM指令集 資料處理指令 SUB指令 SUB指令的語法為: SUB {條件 }{S} 目的暫存器,運算元 1,運算元 2 SUB指令用於把運算元 1減去運算元 2,並將結果存放到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令可用於有符號數或無符號數的減法運算。 指令範例: SUB R0, R1, R2 ; R0 = R1 R2 SUB R0, R1, 256 ; R0 = R1 256 SUB R0, R2, R3, LSL1 ; R0 = R2 (R3 1) 47 ARM指令集 資料處理指令 SBC指令 SBC指令的語法為: SBC {條件 }{S} 目的暫存器,運算元 1,運算元 2 SBC指令用於把運算元 1減去運算元 2,再減去CPSR中的 C條件旗標位元的反碼,並將結果存放到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令使用進位元旗標來表示借位,這樣就可以做大於 32位的減法,注意不要忘記設定 S尾碼來更改進位元旗標。 該指令可用於有符號數或無符號數的減法運算。 指令範例: •SUBS R0, R1, R2 ; R0 = R1 R2。 C,並根據結果設定 CPSR的進位元旗標位元 48 ARM指令集 資料處理指令 RSB指令 RSB指令的語法為: RSB{條件 }{S} 目的暫存器,運算元 1,運算元 2 RSB指令稱為逆向減法指令,用於把運算元 2減去運算元 1,並將結果存放到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令可用於有符號數或無符號數的減法運算。 指令範例: 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} 目的暫存器,運算元 1,運算元 2 RSC指令用於把運算元 2減去運算元 1,再減去CPSR中的 C條件旗標位元的反碼,並將結果存放到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令使用進位元旗標來表示借位,這樣就可以做大於 32位的減法,注意不要忘記設定 S尾碼來更改進位元旗標。 該指令可用於有符號數或無符號數的減法運算。 指令範例: RSC R0, R1, R2 ; R0 = R2 – R1。 C 50 ARM指令集 資料處理指令 AND指令 AND指令的語法為: AND {條件 }{S} 目的暫存器,運算元 1,運算元 2 AND指令用於在兩個運算元上進行邏輯與運算,並把結果放置到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令常用於遮罩運算元 1的某些位。 指令範例: •AND R0, R0,# 3 ; 該指令保持 R0的 0、 1位,其餘位清零。 51 ARM指令集 資料處理指令 ORR指令 ORR指令的語法為: ORR {條件 }{S} 目的暫存器,運算元 1,運算元 2 ORR指令用於在兩個運算元上進行邏輯或運算,並把結果放置到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令常用於設定運算元 1的某些位。 指令範例: ORR R0, R0,# 3 ; 該指令設定 R0的 0、 1位,其餘位保持不變。 52 ARM指令集 資料處理指令 EOR指令 EOR指令的語法為: EOR{條件 }{S} 目的暫存器,運算元 1,運算元 2 EOR指令用於在兩個運算元上進行邏輯互斥運算,並把結果放置到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 該指令常用於反轉運算元 1的某些位。 指令範例: •EOR R0, R0,# 3 ; 該指令反轉 R0的 0、 1位,其餘位保持不變。 53 ARM指令集 資料處理指令 BIC指令 BIC指令的語法為: BIC {條件 }{S} 目的暫存器,運算元 1,運算元 2 BIC指令用於清除運算元 1的某些位,並把結果放置到目的暫存器中。 運算元 1應是一個暫存器,運算元 2可以是一個暫存器,被移位的暫存器,或一個立即數。 運算元 2為 32位的遮罩,如果在遮罩中設定了某一位,則清除這一位。 未設定的遮罩位保持不變。 指令範例: BIC R0, R0,#% 1011 ; 該指令清除 R0 中的位 0、 和 3,其餘的位保持不變。 54 ARM指令集 乘法指令與乘加指令 ARM微處理器支援的乘法指令與乘加指令共有 6條,可分為運算結果為 32位和運算結果為 64位兩類,與前面的資料處理指令不同,指令中的所有運算元、 目的暫存器必須為通用暫存器,不能對運算元使用立即數或被移位的暫存器,同時,目的暫存器和運算元 1必須是不同的暫存器。 乘法指令與乘加指令共有以下 6條: MUL 32位元乘法指令 MLA 32位元乘加指令 SMULL 64位元有符號數乘法指令 SMLAL 64位元有符號數乘加指令 UMULL 64位元無符號數乘法指令 UMLAL 64位元無符號數乘加指令 55 ARM指令集 乘法指令與乘加指令 MUL指令 MUL指令的語法為: MUL{條件 }{S} 目的暫存器,運算元 1,運算元 2 MUL指令完成將運算元 1與運算元 2的乘法運算,並把結果放置到目的暫存器中,同時可以根據運算結果設定 CPSR中相應的條件旗標位元。 其中,運算元 1和運算元 2均為 32位元的有符號數或無符號數。 指令範例: MUL R0, R1, R2 ; R0 = R1 R2 MULS R0, R1, R2 ; R0 = R1 R2,同時設定 CPSR中的相關條件旗標位元 56 ARM指令集 乘法指令與乘加指令 MLA指令 MLA指令的語法為: MLA{條件 }{S} 目的暫存器,運算元 1,運算元 2,運算元 3 MLA指令完成將運算元 1與運算元 2的乘法運算,再將乘積加上運算元 3,並把結果放置到目的暫存器中,同時可以根據運算結果設定 CPSR中相應的條件旗標位元。 其中,運算元 1和運算元 2均為 32位元的有符號數或無符號數。 指令範例: MLA R0, R1, R2, R3 ; R0 = R1 R2 + R3 MLAS R0, R1, R2, R3 ; R0 = R1 R2 + R3,同時設定 CPSR中的相關條件旗標位元 57 ARM指令集 乘法指令與乘加指令 SMULL指令 SMULL指令的語法為: SMULL{條件 }{S} 目的暫存器 Low,目的暫存器低High,運算元 1,運算元 2 SMULL指令完成將運算元 1與運算元 2的乘法運算,並把結果的低 32位元放置到目的暫存器 Low中,結果的高 32位元放置到目的暫存器 High中,同時可以根據運算結果設定 CPSR中相應的條件旗標位元。 其中,運算元 1和運算元 2均為 32位元的有符號數。 指令範例: SMULL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 ; R1 = ( R2 R3)的高 32位 58 ARM指令集 乘法指令與乘加指令 SMLAL指令 SMLAL指令的語法為: SMLAL{條件 }{S} 目的暫存器 Low,目的暫存器低 High,運算元 1,運算元 2 SMLAL指令完成將運算元 1與運算元 2的乘法運算,並把結果的低 32位元同目的暫存器 Low中的值相加後又放置到目的暫存器Low中,結果的高 32位元同目的暫存器 High中的值相加後又放置到目的暫存器 High中,同時可以根據運算結果設定 CPSR中相應的條件旗標位元。 其中,運算元 1和運算元 2均為 32位元的有符號數。 對於目的暫存器 Low,在指令執行前存放 64位元加數的低 32位元,指令執行後存放結果的低 32位。 對於目的暫存器 High,在指令執行前存放 64位元加數的高 32位元,指令執行後存放結果的高 32位。 指令範例: SMLAL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 + R0 ; R1 = ( R2 R3)的高 32位 + R1 59 ARM指令集 乘法指令與乘加指令 UMULL指令 UMULL指令的語法為:。arm组合语言程式设计(编辑修改稿)
相关推荐
o c e s sA n d r o i d R u n t i m e . s t a r t ( )s t a r t V m o n V m C r e a t e ds t a r t R e g。
网络广播正确的 ARP信息。 我们还是来简单说下这两个小工具。 • 欣向 ARP工具 • 我使用了该工具,它有以下几个主要功能: • . IP/MAC清单 • 选择网卡。 如果是单网卡不需要设置。 如果是多网卡需要设置连接内网的那块网卡。 • IP/MAC扫描。 这里会扫描目前网络中所有的机器的 IP与 MAC地址。 请在内网运行正常时扫描,因为这个表格将作为对之后 ARP的参照。 •
台机子不能取款 您使用 ATM机时遇到过什么问题吗。 回答:有时候不能取钱 这位叔叔非常配合我们 , 如果我们再有问题他应该也不会不耐烦 ,非常谢谢他 , 可惜我们准备的问题有点少了。 受访者 4:年轻男青年 , 大概 25岁左右 采访问题:您在使用 ATM机时感觉是否安全。 回答:不安全 您觉得 ATM机使用操作简便吗。 回答:简便 您在使用 ATM机时排过长对吗。 回答:有时很长 您使用
o nd i s p a t c h O n c e ( )d i s p a t c h O n c e I n n e r L o c k e d ( )d i s p a t c h E v e n t L o c k e d ( )Q u e u e d I n p u t L i s t e n e rm I n n e r L i s t e n e rm A r g s Q u e
ice值为 /descendantorself::title[@version] title元素拥有属性 version的下层元素, 包括自己本身 /descendant::title[parent::definition][last()] 父素为 definition的最后一个 title元素 中国科大 《 Ajax编程技术 》 822 XPath的位置路径 节点间的关系 轴
有异。 (1)相同点 表示建议做某事, advise与 suggest都可采用下列三种句型 : ① + 名词② + 动名词③ + that从句(从句中常用 should加动词原形, should可以省略。 eg. He advised/ suggested an early start. He advised/ suggested (our) starting early. He