機器語言,機器語言就是0101組成的世界,計算機通過0101執行指令,但是總不能讓程序員寫0101吧? 既不好記,可讀性又差,且容易出錯,所以也就有了匯編語言,匯編語言主要是把特定的語句翻譯成0101代碼
執行的過程是:程序員->匯編指令->編譯器->機器碼(0101)->計算機
存儲器
計算機中最小的存儲單元是 bit
,也就是一個二進制位
8bit = 1byte(字節)
一個存儲單元可以存放1個byte,即8bit,如 0000 1100
CPU對存儲器的讀寫
CPU是通過總線來跟存儲器通信的,總線從邏輯上分為地址總線,控制總線,數據總線
地址總線主要是對地址進行傳輸,每根導線都有低電平和高電平,用二進制來表示就是0和1,10根導線可以傳送10位二進制數據,而10位二進制數據有2的10次方的數據組合。
數據總線主要是對數據進行傳輸,8根數據總線一次可傳送8位2進制
控制總線是個總稱,控制總線的寬度決定了CPU對外部器件的控制能力
寄存器
一個典型的CPU由運算器,控制器,寄存器等構成
- 運算器進行信息處理
- 寄存器進行信息存儲
- 控制器控制各種器件進行工作
- 內部總線連接各種器件,在它們之間進行數據傳送
通用寄存器
AX,BX,CX,DX這4個稱為通用寄存器,通常用來存放一般性的數據,由于這些寄存器是16位的,為了兼容舊代CPU,所以可拆分了8位
AX = AH + AL
BX = BH + BL
CX = CH + CL
DX = DH + DL
段的概念
段寄存器
CS和IP是CPU中兩個關鍵的寄存器,CS為代碼寄存器,IP為指令指針寄存器,假設CS = M,IP為N,CPU將從Mx16+N
單元開始讀取一條指令并執行。執行過程:
1.cs與ip放入地址加法器,計算得到地址
2.地址總線傳送該地址,然后在內存中找到該值
3.值通過數據總線傳送回cpu的控制電路
4.送入到指令緩存器
5.執行控制器執行指令
修改CS、IP指令
修改普通寄存器的指令類似于 MOV ax,16
, move bx,123
,表示把16送進ax寄存器,把123送進bx寄存器,大部分都可以通過mov指令來修改寄存器,mov指令被稱為傳送指令
但是,mov指令不能用于設置CS和IP,因為它們有專用的指令jmp
,用法:jmp 段地址:偏移地址
寄存器(內存訪問)
mov指令
1.將數據送入寄存器
2.將一個寄存器中的內存送入到另一個寄存器
3.將內存單元地址送入到寄存器 mov 寄存器名,內存單元地址
,mov a1, [0]
[...]表示一個內存單元,[...]中的0表示內存單元的偏移地址
段地址默認存放在DS中
CPU的棧機制
在8086CPU中,有兩個寄存器,SS和SP,SS存放棧頂地址,SP存放偏移地址,任意時刻,SS:SP執行棧頂元素。push指令和pop指令執行時,CPU從SS和SP中得到棧頂地址。