彙編學習筆記(一) 基本知識

2021-07-15 23:21:38 字數 4490 閱讀 2192

一、基礎知識

2、資料匯流排:8088cpu有8根,8086cpu有16根,8根即8位,乙個位元組,16根即16位,2個位元組,即乙個字的寬度。

3、控制匯流排:決定了cpu對外部器件的控制能力

4、ram:隨機儲存器,斷電不儲存(主儲存器+記憶體擴充套件條+顯示卡的視訊記憶體)

5、rom:唯讀儲存器,關機內容不丟失(裝有bios的主機板及各類介面卡,顯示卡,網絡卡等都有)

二、暫存器

1、通用暫存器:ax,bx,cx,dx,8086cpu下都是16位。他們均可拆分為h與l高低兩種暫存器

4、段暫存器:cs是**段暫存器,ip是指令指標暫存器,任意時刻,cpu把cs:ip指向的內容當指令執行。

5、修改段:不能直接修改cs:ip,只能通過jmp指令修改,如:jmp 2ae3:3。若jmp 1000h,則不改變cs,只改ip

9、【】:只有bx,bp,si,di才可以放在【】中,其他所有的暫存器都不可以。bx不能和bp組合,si不能和di組合。若存在bp,且沒指定段,則預設為ss。

10、x ptr:word ptr指明了訪問的單元長度是字,byte ptr指明了訪問的單元長度是位元組。使用立即數時,特別要注意標明長度。

11、dup:db 16 dup(0)表示定義了16個位元組的資料,每個資料都是0,dup是重複的意思。

三、轉移指令等

5、jmp ax:和jmp near ptr 標號一樣,屬於段內近距離跳轉。

8、jcxz 標號:即cx與z比較,z就是0,所以可以看作是(cx) == 0 ? 跳**不跳轉。這是短距離跳轉,即jmp short 標號。

9、loop 標號:與jcxz相反,先把cx自減1,再判斷。(cx) == 0 ? 不跳**跳轉。也是短距離跳轉,即jmp short 標號。

10、跳轉越界:編譯會報錯。

12、retf:先從棧中拿出乙個位址word ptr,用來修改ip,再拿出乙個word ptr,用來修改cs,然後和jmp far ptr 標號 類似的遠距離跳轉。等同於:pop ip;pop cs。

13、call:先把ip壓棧,再跳轉jmp near ptr 標號;

14、call far ptr 標號:這時,要把cs,ip相繼壓棧,再jmp far ptr 標號;

15、call ***xx:***xx如果長度是字,就把ip壓棧。如果長度是雙字,就要把cs和ip都壓棧。

四、標誌暫存器

1、zf:執行一條指令後,如果結果為0,則zf為1。zf的簡單意思是判斷當前結果 == 0 ? 1: 0;影響的指令有:add、sub、mul、div、inc、or、and。

2、pf:奇偶校驗位。如果是偶數,則pf為1。

3、sf:符號位。如果是負數,則sf為1.

4、cf:進製值。記錄了最高位進製的標記,如果最高位進製了,cf就為1.

5、of:溢位標誌位。如果相加後參生了溢位,則of為1.

6、adc:進製加法指令,比add多了一步是,+cf。

7、sbb:借位減法指令,比sub多了一步是,-cf。

8、cmp:無返回值的減法指令,也叫比較運算子。兩數相減,結果為0時,zf置為1,pf置為1.為負時,會改變cf的值。

五、條件跳轉的各種型別

測試標誌位的jcc指令

指令描 述

條 件

別 名

相 反 指 令

jc

如果進製位被置位則跳轉

進製標誌=1

jb,jnae

jnc

jnc

如果進製位沒有置位則跳轉

進製標誌=0

jnb,jae

jc

jz

如果0標誌被置位則跳轉

0標誌=1

je

jnz

jnz

如果0標誌沒有置位則跳轉

0標誌=0

jne

jz

(續表)

指 令

描 述

條 件

別 名

相反指令

js

如果符號位被置位則跳轉

符號標誌=1

jns

jns

如果符號位沒有被置位則跳轉

符號標誌=0

js

jo

如果溢位標誌置位則跳轉

溢位標誌=1

jno

jno

如果溢位標誌沒有置位則跳轉

溢位標誌=0

jo

jp

如果奇偶校驗位被置位則跳轉

奇偶校驗標誌=1

jpe

jnp

jpe

如果奇偶校驗位為偶校驗則跳轉

奇偶校驗標誌=1

jp

jpo

jnp

如果奇偶校驗位沒有被置位則跳轉

奇偶校驗標誌=0

jpo

jp

jpo

如果奇偶校驗位為奇校驗則跳轉

奇偶校驗標誌=0

jnp

jpe

使用無符號數比較的jcc指令

指 令描 述

條 件

別 名

相反指令

ja

如果超過(>)則跳轉

進製標誌=0,0標誌=0

jnbe

jna

jnbe

如果不低於或等於(不 <=)則跳轉

進製標誌=0,0標誌=0

ja

jbe

jae

如果超過或等於(>=)則跳轉

進製標誌=0

jnc,jnb

jnae

jnb

如果不低於則跳轉(不 <)

進製標誌=0

jnc,jae

jb

jb

如果低於(<)則跳轉

進製標誌=1

jc,jnae

jnb

jnae

如果不超過或等於(不》=)則跳轉

進製標誌=1

jc,jb

jae

jbe

如果低於或等於(<=)則跳轉

進製標誌=1或0標誌=1

jna

jnbe

jna

如果不超過(不》)則跳轉

進製標誌=1或0標誌=1

jbe

ja

je

如果相等(=)則跳轉

0標誌=1

jz

jne

jne

如果不相等(<>)則跳轉

0標誌=0

jnz

je

使用有符號數比較的jcc指令

指 令描 述

條 件

別 名

相反指令

jg

如果大於(>)則跳轉

符號標誌=溢位標誌或0標誌=0

jnle

jng

jnle

如果小於或等於(<=)則跳轉

符號標誌=溢位標誌或0標誌=0

jg

jle

jge

如果大於或等於(>=)則跳轉

符號標誌=溢位標誌

jnl

jge

jnl

如果不小於(不<)則跳轉

符號標誌=溢位標誌

jge

jl

jl

如果小於(<)則跳轉

符號標誌<>溢位標誌

jnge

jnl

jnge

如果大於或等於(>=)跳轉

符號標誌<>溢位標誌

jl

jge

jle

如果小於或等於(<=)跳轉

符號標誌<>溢位標誌或0標誌=1

jng

jnle

jng

如果不大於(不》)則跳轉

符號標誌<>溢位標誌或0標誌=1

jle

jg

je

如果等於(=)則跳轉

0標誌=1

jz

jne

jne

如果不等於(<>)則跳轉

0標誌=0

jnz

je

python 基本知識學習(一)

一 基本概念和使用 1 資料結構 通過某種方式 例如對元素進行編號 組織在一起的資料元素的集合,這些資料元素 可能是數字或者字元,甚至可以是其他資料結構。2 序列 最基本的資料結構 python 包含6種內建的序列,最常用的兩種型別是 列表和元組,其它還有 字串 unicode字 符串 buffer...

Redis學習筆記 Redis基本知識

預設是16個資料庫,預設使用的是第乙個。命令官網查詢 命令列連線redis。linux的redis src目錄下執行 root lyx src redis cli測試效能 100個併發客戶端 每秒100000請求 redis benchmark h localhost p 6379 c 100 n ...

學習進度筆記 TensorFlow基本知識總結 1

tensorflow是全面的深度學習框架支援非常全面不是專門為客戶端設計 特點 1 真正的可移植性 引入各種計算裝置的支援包括cpu gpu tpu,以及能夠很好地執行在移動端,如安卓裝置 ios 樹莓派等等 2 多語言支援 tensorflow 有乙個合理的c 使用介面,也有乙個易用的python...