(arg)argument:自變量,變元
(reg)register:寄存器
(seg)segment:段寄存器
(mem)memory:存儲器(內存單元?)
一.各寄存器
1.數據寄存器:AX(accumulator 累加器)、BX(base address 基址寄存器 “過渡寄存器”)、CX(counter 計數器)、DX(data 數據寄存器):可拆分為L和H,將16位拆分為低八位和高八位
2.地址指針寄存器:SP(堆棧指針寄存器)、BP(基址指針寄存器)
????????SP(start pointer):棧頂指針,指向棧頂
? ? ? ? BP(base pointer):基址指針,段地址默認在SS中,可以定位物理地址。指向哪里?一直指在最低端?
3.變址寄存器:SI、DI,用于指令間的變址尋址和間接尋址
? ? ? ? DI(destination source):目的變址寄存器,一般與ds連用,確定某個儲存單元的地址
? ? ? ? SI(source index):源變址(什么是源地址?)寄存器,默認短地址和DI一樣,和ds連用
????????[注]:這兩個屬于變址寄存器.可以和bx.bp聯用,但是和bx連用時,段地址在DS中,和bp聯用時,段地址在SS中.也可以單獨使用,單獨使用時,段地址默認在DS中,想要越段使用,加上段前綴即可.
????????在串指令操作中,si和ds聯用,確定目標源地址,di和es(附加段寄存器)聯用,確定傳送的目的地址.說白了就是,分別尋址數據段和附加段.
????????在串指令中,si和di具有自加和自減功能
4.段寄存器:
? ? ? ? CS:Code Segment 代碼段
? ? ? ? DS:Date Segment 數據段
? ? ? ? ES:Extra Segment 附加段(啥時候用)
? ? ? ? SS:Stack Segment 堆棧段
5.控制寄存器:
? ? ? ? IP(introduction point):指令指針寄存器,內容為下一條要執行指令的偏移地址
? ? ? ? FLAGS:標志寄存器
????????分控制標志:CF(進位標志)、PF(奇偶標志)、AF(輔助進位標志(第四位的進位情況))、ZF(零標志)、SF(符號標志)、OF(溢出標志)
和狀態標志:TF(跟蹤標志)、IF(中斷標志)、DF(方向標志)
存儲器編址規則(十六進制)
指令地址:CSX10H+IP
堆棧操作地址:SSX10H+SP
操作數地址:DS(ES)X10H+偏移地址
二.常用指令意義和規則
1.數據傳遞指令mov
2.運算指令:add adc(帶進位加法) inc(加一)?sub sbb(帶借位減法) dec(減一)?
3.比較指令與轉移指令
4.循環指令
5.邏輯指令:
? ? ? ? and:與
? ? ? ? or:或
? ? ? ? not:非
? ? ? ? xor:異或,常用于寄存器清零
? ? ? ? neg:求補,使該數變為絕對值相等,符號相反的另一數
6. 變量操作指令
7.地址相關指令:
? ? ? ? lea:lea ax, [bx] 傳偏移地址
????????lds:lea ax, [bx] 傳地址指針,傳給reg與ds
? ? ? ? les:lea ax, [bx] 傳地址指針,傳給reg與es(extra segment)
8.移位指令(位運算?)
9.堆棧指令:
? ? ? ? push
? ? ? ? pop