ARM匯編程序設(shè)計之:匯編語言文件格式
(3)雙目運算
ARM匯編中將雙目運算符放在兩個操作數(shù)中間。一般情況下,雙目運算的優(yōu)先級低于單目運算。下面將以操作符的優(yōu)先級為序分別介紹各操作符。
注意 | 操作符的優(yōu)先級與C語言中操作符優(yōu)先級順序略有不同,詳見單目運算一節(jié)。 |
表10.6列出了乘法相關(guān)操作符。
表10.6 乘法相關(guān)操作符
操作符 | 別名 | 使用 | 說明 |
* | A*B | 乘法操作 | |
/ | A/B | 除法操作 | |
:MOD: | % | A:MOD:B | 以B為除數(shù)對A取模 |
乘法相關(guān)操作符包括乘、除、取模運算,在雙目運算中具有最高優(yōu)先級。這些運算的操作數(shù)只能是數(shù)字表達式。
表10.7列出了字符串相關(guān)操作符。
表10.7 字符串操作符
操作符 | 使用 | 說明 |
:CC: | A:CC:B | 連接兩個字符串 |
:LEFT: | A:LEFT:B | 返回字符串A最左端B長度的字符,操作數(shù)A必須為字符串,B必須為整數(shù)表達式 |
:RIGHT: | A:RIGHT:B | 返回字符串A最右端B長度的字符,操作數(shù)A必須為字符串,B必須為整數(shù)表達式 |
表10.8列出了移位操作符。移位操作中兩個操作數(shù)均為數(shù)字表達式。
表10.8 移位操作符
操作符 | 別名 | 使用 | 說明 |
:ROL: | A:ROL:B | A循環(huán)左移B位 | |
:ROR: | A:ROR:B | A循環(huán)右移B位 | |
:SHL: | A:SHL:B | A左移B位 | |
:SHR: | >> | A:SHR:B | A右移B位 |
注意 | SHR是邏輯右移,不影響符號位。 |
表10.9列出了所有加、減、邏輯操作符。
表10.9 加減運算操作符
操作符 | 別名 | 使用 | 說明 |
+ | A+B | A加上B | |
− | A−B | 從B中減去A | |
:AND: | A:AND:B | A和B按位與 | |
:EOR: | ^ | A:EOR:B | A和B按位異或 |
:OR: | || | A:OR:B | A和B按位或 |
加、減運算的操作數(shù)均為數(shù)字表達式。邏輯運算的表達式為數(shù)字表達式,此運算按位操作產(chǎn)生結(jié)果。
表10.10列出了ARM匯編中的關(guān)系符。關(guān)系操作符用于表示兩個同類表達式之間的關(guān)系。關(guān)系符的兩個操作數(shù)必須為同種類型的操作數(shù)。操作數(shù)可以是數(shù)字變量、程序相關(guān)表達式、寄存器相關(guān)表達式或字符串。
表10.10 關(guān)系操作符
操作符 | 別名 | 使用 | 說明 |
= | == | A=B | 判斷A是否等于B |
> | A>B | 判斷A是否大于B | |
>= | A>=B | 判斷A是否大于等于B | |
AB | 判斷A是否小于B | ||
= | A=B | 判斷A是否小于等于B | |
/= | > != | A/=B | 判斷A是否不等于B |
評論