ARM匯編指令集之八——移位指令(操作)
LSL(或ASL)操作的格式為:
本文引用地址:http://m.butianyuan.cn/article/201611/317605.htm通用寄存器,LSL(或ASL)操作數(shù)
LSL(或ASL)可完成對(duì)通用寄存器中的內(nèi)容進(jìn)行邏輯(或算術(shù))的左移操作,按操作數(shù)所指定的數(shù)量向左移位,低位用零來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)(0~31)。
操作示例
MOV R0, R1, LSL#2;將R1中的內(nèi)容左移兩位后傳送到R0中。
2、LSR操作
LSR操作的格式為:
通用寄存器,LSR操作數(shù)
LSR可完成對(duì)通用寄存器中的內(nèi)容進(jìn)行右移的操作,按操作數(shù)所指定的數(shù)量向右移位,左端用零來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)(0~31)。
操作示例:
MOV R0, R1, LSR#2;將R1中的內(nèi)容右移兩位后傳送到R0中,左端用零來填充。
3、ASR操作
ASR操作的格式為:
通用寄存器,ASR操作數(shù)
ASR可完成對(duì)通用寄存器中的內(nèi)容進(jìn)行右移的操作,按操作數(shù)所指定的數(shù)量向右移位,左端用第31位的值來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)(0~31)。
操作示例:
MOV R0, R1, ASR#2;將R1中的內(nèi)容右移兩位后傳送到R0中,左端用第31位的值來填充。
4、ROR操作
ROR操作的格式為:
通用寄存器,ROR操作數(shù)
ROR可完成對(duì)通用寄存器中的內(nèi)容進(jìn)行循環(huán)右移的操作,按操作數(shù)所指定的數(shù)量向右循環(huán)移位,左端用右端移出的位來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)(0~31)。顯然,當(dāng)進(jìn)行32位的循環(huán)右移操作時(shí),通用寄存器中的值不改變。
操作示例:
MOV R0, R1, ROR#2;將R1中的內(nèi)容循環(huán)右移兩位后傳送到R0中。
5、RRX操作
RRX操作的格式為:
通用寄存器,RRX操作數(shù)
RRX可完成對(duì)通用寄存器中的內(nèi)容進(jìn)行帶擴(kuò)展的循環(huán)右移的操作,按操作數(shù)所指定的數(shù)量向右循環(huán)移位,左端用進(jìn)位標(biāo)志位C來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)(0~31)。
操作示例:
MOV R0, R1, RRX#2;將R1中的內(nèi)容進(jìn)行帶擴(kuò)展的循環(huán)右移兩位后傳送到R0中。
評(píng)論