.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROC;如果有符號數循環移動一位生成的結果超過了目的操作數的有符號范圍;溢出就為1,換句話說:即該數的符號位取反了mov al,+127;AL =01111111brol al,1;OF =1,AL =11111110bmov al,-128;10000000Bshr al,1;OF =1,AL =01000000b;如果循環移動次數大于1,則溢出標志無定義mov al,-128;10000000Bshr al,1;OF =0,AL =00100000bINVOKE ExitProcess,0
main ENDP
END main
3:雙精度移位SHLD,SHRD
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
wval WORD 9BA6h.code
main PROC;雙精度左移,將AX的高4位復制到wval的低4位mov ax,0AC36hshld wval,ax,4;wval = BA6Ah ,ax = AX36h;雙精度右移,將dx的低4位復制到ax的高4位mov ax,234Bhmov dx,7654hshrd ax,dx,4;ax =4234INVOKE ExitProcess,0
main ENDP
END main
4 : 雙精度移位例子,將一個雙字數組右移4位
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
array DWORD 648B2165h,8C943A29h,6DFA4B86h,91F76C04h,8BAF9857h.code
main PROCmov bl,4;移動次數mov esi,OFFSET array ;數組偏移量mov ecx,(LENGTHOF array)-1;數組元素個數
L1:push ecxmov eax,[esi + TYPE DWORD]mov cl,bl ;移動次數shrd [esi],eax,cl ;EAX移入[ESI]的高位add esi,TYPE DWORD ;指向下一對雙字pop ecxloop L1shr DWORD PTR[esi],4;最后一個雙字進行移位INVOKE ExitProcess,0
main ENDP
END main
5 :不用使用SHRD指令將AX的最低移入BX的最高位,再使用SHRD指令移入
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROC;不使用SHRD指令,將AX的最低位移入BX的最高位mov ax,1111111111111111bmov bx,0011111111111111bmov si,axshr si,1rcr bx,1;使用SHRD指令,將AX的最低位移入BX的最高位mov ax,1111111111111111bmov bx,0011111111111111bshrd bx,ax,1INVOKE ExitProcess,0
main ENDP
END main
6:利用循環將EAX的每一位移入進位標志位,計算進位標志位置的1次數,計算32位數奇偶性
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROCmov ebx,0mov ecx,32mov eax,89ABCDEFh
L1:ror eax,1jnc L2inc ebx
L2:loop L1and ebx,1jz L3mov edx,0;奇數jmp quit
L3:mov edx,1;偶數quit:INVOKE ExitProcess,0
main ENDP
END main
7:使用shr與rcr 將 字節數組右移一位
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.data
ArraySize =3
array BYTE ArraySize DUP(99h);每半個字節都是1001.code
main PROCmov esi,0shr array[esi+2],1;高字節rcr array[esi+1],1;中間字節,包括進位標志位rcr array[esi],1;低字節,包含進位標志位INVOKE ExitProcess,0
main ENDP
END main
8:將無符號整數乘法,轉換成使用SHL和ADD計算
.386.model flat,stdcall.stack 4096
ExitProcess PROTO,dwExitCode:DWORD.code
main PROC;123*36 可以使用以下位運算替換;36=00100100;乘數36的位2和位5都是1,所以下面123左移5位和2位相加mov eax,123mov ebx,eaxshl eax,5;shl ebx,2add eax,ebx ;乘積相加INVOKE ExitProcess,0
main ENDP
END main
Random numbers just numbers that lie within a range and any of the numbers can occur. 隨機數只是在一個范圍內的數字,任何數字都可能出現。 In programming, we come through a lot of scenarios where we need to generate random numbers. Like for dice g…
python調用帶參函數There are following types of function calls in python: python中有以下類型的函數調用: Call by value 按價值致電 Call by reference 通過參考電話 1)按價值致電 (1) Call by value ) When, we call a function with the values i.e. pass …
這是一個彈出層的插件,有時候做東西的,經常會用到了,所以在次發一下,和大家分享一下! [task]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/x…
MathContext類的hashCode()方法 (MathContext Class hashCode() method) hashCode() method is available in java.math package. hashCode()方法在java.math包中可用。 hashCode() method is used to get the hash code value of this MathContext. hashCode()方法用于獲取此M…
LocalDate類minusYears()方法 (LocalDate Class minusYears() method) minusYears() method is available in java.time package. minusYears()方法在java.time包中可用。 minusYears() method is used to subtract the given years from this LocalDate and return the LocalD…