彙編指令中的移位操作分為算術移位和邏輯移位
一般在進行左移操作的時候,算術移位和邏輯移位的處理過程都比較簡單:移除左邊的最高位,最低位補零
但是在進行右移操作的時候,算術移位移除右邊的數字然後左邊的最高位進行符號擴充套件,不過邏輯移位就是補零,則個需要注意一點。
對於需要進行左移和右移的操作,一般都是需要指定移動位數m,如果m=1則可以直接以立即數給出,如果移位超過1則需要把移位放在cl中。
移位操作主要分為如下幾個指令:
sal oprd,m 算術左移
shl oprd,m 邏輯左移
sar oprd,m 算術右移
shr oprd,m 邏輯右移
迴圈移位沒有符號位的擴充套件等性質
rol oprd,m 迴圈左移《如果運算元為nbit位,則移動n次後可以還原》
ror oprd,m 迴圈右移
rcl oprd,m 帶進製的迴圈左移
rcr oprd,m 帶進製的迴圈右移
一般移位操作都是和邏輯運算結合進行運算元的結合與分解運算
右移操作一般是把最高位移動到cf中
帶進製的迴圈移位操作也是對cf進行了操作,對其他標誌位的影響根據相關性質來決定。
組合語言基礎之 移位指令
原文 移位指令是一組經常使用的指令,包括 算數移位 邏輯移位 雙精度移位 迴圈移位 帶進製的迴圈移位 移位指令都有乙個指定需要移動的二進位制位數的運算元,該運算元可以是立即數,也可以是cl的值 在8086中,該運算元只能是1,但是在其後的cpu中,該立即數可以是定義域 1,31 之內的數 一 算數移...
15 ARM彙編自學筆記指令系統之移位指令(操作)
移位指令 操作 arm微處理器內嵌的桶型移位器 barrel shi f t er 支援資料的各種移位操作,移位操作在arm指令集中不作為單獨的指令使用,它只能作為指令格式中是乙個字段,在組合語言中表示為指令中的選項。例如,資料處理指令的第二個運算元為暫存器時,就可以加入移位操作選項對它進行各種移位...
學習 彙編指令
nop指令 空指令,什麼都不操作,唯一變化的就是eip當前指向的位址 需要講的就是位元組的問題 首先我們看到 00401002 e8 ff040000 call getmodulehandlea 這個位址中的資料e8 ff040000有5個位元組,那麼我們現在進行修改為將call的位址的彙編指令修改...