mov指令是一條資料傳送指令,它把源運算元複製到目的運算元中。movzx指令將較小的運算元複製到較大的運算元中並進行零擴充套件。
movsx指令將較小的運算元複製到較大的運算元中並進行符號擴充套件。xchg指令交換兩個運算元的內容,指令中至少要有乙個運算元是暫存器。
運算元型別:
2)直接偏移運算元:在變數的名字後加乙個偏移量而生成的新偏移,這個新可以用來訪問記憶體資料。
4)變址運算元:把常量和間接運算元結合在一起。常量和暫存器值加在一起,得到的最終結果被用來定址。例如[array+esi]和array[esi]都是變址運算元。
下列算術運算指令是比較重要的:
1)inc指令將運算元加1。
2)dec指令將運算元減1。
3)add指令將源運算元和目的運算元相加。
4)sub指令從目的運算元中減掉源運算元。
5)neg指令求運算元的相反數(將運算元的符號變反)。
把簡單的算術表示式換成組合語言格式的時候,應按照標準的操作符優先順序規則選擇應首先求值(翻譯)的表示式。
狀態標誌:下面的cpu狀態標誌受算術運算影響:
1)算術運算結果為負時設定符號標誌位。
2)無符號算術運算結果太大以至於目的運算元無法容納的情況下設定進製標誌位。
3)目的運算元(結果)的第3位向第4位產生進製或錯位時設定輔助進製標誌。
4)算術運算結果為0時設定零標誌位。
5)有符號算術運算結果太大以至於目的運算元無法容納的情況下設定溢位標誌位。在進行位元組操作時,cpu根據第6位向高位的進製值和第7位向高位的進製值的異或運算的結果設定溢位標誌位。
操作符:
1)offset操作符返回變數相對於其所在段開始的偏移。
2)ptr操作符允許過載變數的預設宣告的尺寸。
3)type操作符返回單個變數或陣列中的單個元素的大小(按位元組計算)。
4)lengthof操作符返回陣列中元素的數目。
5)sizeof操作符返回陣列初始化時占用的位元組數。
6)typedef操作符用於建立使用者自定義的型別。
迴圈:jmp指令無條件轉移到另外乙個位址。loop指令用於計算型別的迴圈中。在32位模式下,loop指令使用ecx作為迴圈計數器,在16位模式下預設使用cx作為迴圈計數器。無論是在16位還是在32位模式下,loopd(雙字迴圈)指令都使用ecx作為計數器。
**********===結束,歡迎討論。
float和double型資料算術運算
計算機中儲存數字是用2進製表示的,所有在儲存double型別的資料並不能精確到0.1,所以在用double做操作的時候會因為精度問題出現一些和實際不一樣的結果,如果要求精度很高的話就用bigdecimal來計算,bigdecimal提供了加 減 乘 除的方法,直接呼叫就可以了。如 計算兩個doubl...
來自python的 算術運算子總結
加法字串拼接,字串不能有除去拼接和 n次輸出 的操作 劍法 乘法,對於字串則為n次輸出 如 a 3 aaa 除法 求餘 取整 冪次 a 21b 10c 0d 12 e 6 f 0.1 g 1.2 h 1 2j i 3 4j add print a b 31print a c 21 print a h...
pandas 的算術運算和資料對齊
pandas 還有乙個重要的功能,就是他可以對不同索引的物件進行算數運算。物件相加,如果存在不同的索引對,則結果的索引就是該索引對的並集。先來個例子 in 33 s1 series 7.3,2.5,3.4,1.5 index a c d e in 34 s2 series 2.1,3.6,1.5,4...