目錄
非迴圈移位
1.1 邏輯左移——shl
1.2 邏輯右移——shr
1.3 算術左移——sal
1.4 算術右移——sar
迴圈移位
2.1 迴圈左移——rol
2.2 迴圈右移——ror
2.3 帶進製迴圈左移——rcl
1.4 帶進製迴圈右移——rcr總結
1. 非迴圈移位
1.1 邏輯左移——shl
運算元每左移一次,運算元的最低位補零,最高位移入cf(cf的原值丟失)。
例:將 10100101 邏輯左移三次,每次移一位
第一次:01001010
cf=1
第二次:10010100
cf=0
第三次:00101000
cf=1
1.2 邏輯右移——shr
運算元每右移一次,運算元的最高位補零,最低位移入cf(cf的原值丟失)。
例:將 10101101 右移三次,每次移動一位
第一次:01010110 cf=1
第二次:00101011 cf=0
第三次:00010101 cf=1<%�fp>
1.3 算術左移——sal
與邏輯左移相同
1.4 算術右移——sar
每右移一次,運算元的最低位移入cf,最高位(符號位)不變,次高位與最高位相同。
例:將 10000101 算術右移三次,每次一位。
第一次:11000010 cf=1
第二次:11100001 cf=0
第三次:11110000 cf=1
2. 迴圈移位
2.1 迴圈左移——rol
每移位一次,運算元的最高位被移入運算元的最低位,同時(最高位)移入標誌位cf。
例:將 10011010 迴圈左移三次,每次一位。
第一次:00110101 cf=1
第二次:01101010 cf=0
第三次:11010100 cf=0
2.2 迴圈右移——ror
每移位一次,運算元的最低位被移入運算元的最高位,同時(最低位)移入標誌位cf。
例:將 10011010 迴圈右移三次,每次一位。
第一次:01001101 cf=0
第二次:10100110 cf=1
第三次:01010011 cf=0
2.3 帶進製迴圈左移——rcl
每移位一次,運算元的最高位移入標誌位cf,而原cf中的值移到運算元的最低位。
例:將 10011010 帶進製迴圈左移三次,每次一位。初始cf=0
第一次:00110100 cf=1
第二次:01101001 cf=0
第三次:11010010 cf=0
1.4 帶進製迴圈右移——rcr
每移位一次,運算元的最低位移入標誌位cf,而原cf中的值移到運算元的最高位。
例:將 10011010 帶進製迴圈左移三次,每次一位。初始cf=0
第一次:01001101 cf=0
第二次:00100110 cf=1
第三次:10010011 cf=0
總結非迴圈移位指令,每移一位相當於乘2(左移時)或除2(右移時)。由此可知,無符號數倍增或減半時,使用邏輯左移或右移指令;帶符號數要倍增或減半時,可用算術左移或右移指令。只有當移位後的數未超出一位元組或乙個字(與目的運算元為位元組或字相對應)的表達範圍,數的倍數和減半才是正確的。
迴圈移位指令,迴圈移位之後,運算元中原來各數字的資訊不會丟失,而是移到了運算元的其他位或進製標誌cf中,必要時還可以恢復。
當右移一次時,若結果的最高位與次高位不同,則溢位標誌位of=1,否則of=0;當左移一次時,若結果的最高位與進製標誌不相等,則溢位標誌位of=1,否則of=0。
指令格式:移位指令 dst, cl/1
邏輯運算指令和移位指令
and xortest shlsal rolrcl ornot shrsar rorrcr and,or xor 和 test都是雙位元組操作指令,運算元的定址方式的規定與算術運算指令相同.not是單位元組操作指令,不允許使用立即數.邏輯運算均是按位進行操作,真值表如下 and 位與 or 位或 x...
三菱資料移位指令 三菱plc移位指令例項詳解
移位指令的功能是對資料進行左 右移動。有迴圈移位指令ror,rol,rcr和rcl,位移字移指令sftr,sftl,wsfr和wsfl,還有移位讀寫指令sfwr和sfel。在編寫程式中,較為常用的就是por,rol,sftr和sftl這幾個了,對於這幾個指令我們就要掌握一下了。在這裡,我們需要注意的...
組合語言基礎之 移位指令
原文 移位指令是一組經常使用的指令,包括 算數移位 邏輯移位 雙精度移位 迴圈移位 帶進製的迴圈移位 移位指令都有乙個指定需要移動的二進位制位數的運算元,該運算元可以是立即數,也可以是cl的值 在8086中,該運算元只能是1,但是在其後的cpu中,該立即數可以是定義域 1,31 之內的數 一 算數移...