匯編語言筆記(持續更新)

機器語言,機器語言就是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

尋找物理地址過程

段的概念

image.png

段寄存器

CS和IP是CPU中兩個關鍵的寄存器,CS為代碼寄存器,IP為指令指針寄存器,假設CS = M,IP為N,CPU將從Mx16+N單元開始讀取一條指令并執行。執行過程:
1.cs與ip放入地址加法器,計算得到地址
2.地址總線傳送該地址,然后在內存中找到該值
3.值通過數據總線傳送回cpu的控制電路
4.送入到指令緩存器
5.執行控制器執行指令

修改CS、IP指令

修改普通寄存器的指令類似于 MOV ax,16move bx,123,表示把16送進ax寄存器,把123送進bx寄存器,大部分都可以通過mov指令來修改寄存器,mov指令被稱為傳送指令
但是,mov指令不能用于設置CS和IP,因為它們有專用的指令jmp,用法:jmp 段地址:偏移地址

寄存器(內存訪問)

image.png

mov指令

1.將數據送入寄存器
2.將一個寄存器中的內存送入到另一個寄存器
3.將內存單元地址送入到寄存器 mov 寄存器名,內存單元地址mov a1, [0]
[...]表示一個內存單元,[...]中的0表示內存單元的偏移地址
段地址默認存放在DS中

image.png

image.png
image.png

CPU的棧機制

在8086CPU中,有兩個寄存器,SS和SP,SS存放棧頂地址,SP存放偏移地址,任意時刻,SS:SP執行棧頂元素。push指令和pop指令執行時,CPU從SS和SP中得到棧頂地址。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎入門學習匯編語言》系列視頻的筆記,在此感謝他和像他一樣...
    Gibbs基閱讀 37,367評論 8 114
  • 計算機通過執行指令序列來使機器得以工作,所以對于每一系列的計算機都有指定的一組指令集供計算機使用,這組指令...
    未來科技工作室閱讀 8,119評論 1 10
  • 王爽匯編全書知識點大綱 第一章 基礎知識 機器語言 匯編語言的產生 匯編語言的組成 存儲器 cpu對存儲器的讀寫 ...
    2c3ba901516f閱讀 2,443評論 0 1
  • 匯編總結 匯編的發展史 機械語言 由0和1組成的機器指令(如:0101 0001 1101 0110) 匯編語言(...
    iChuck閱讀 1,334評論 1 8
  • 越底層越單純!真正的程序員都需要了解的一門非常重要的語言,匯編! 機器語言 我們所寫的語言最終安裝在機器上的是什么...
    瑞陽gg閱讀 614評論 0 0