【彙編語言_01】簡介:


b站up小甲魚的視頻,整理的筆記


概述

彙編語言是直接在硬件之上工作的編程語言,首先要了解硬件系統的結構,纔能有效的應用匯編語言對其編程(效率比較高)

彙編語言是除了機器語言之外,我們能夠操縱的最底層的語言了,所以它的重要性是不容忽視的

  • 研究重點:如何利用硬件系統的編程結構和指令集有效靈活的控制系統進行工作,用匯編的思維去寫程序
  • 對底層有大致的瞭解,對 CPU、內存各種硬件是如何配合的,如何傳輸信息的
  • 用計算機的思維操作計算機

1.1 機器語言

是機器指令的集合
機器指令:就是一臺機器可以正確執行的命令

指令:01010000(PUSH AX)

電平脈衝(0爲低電壓,1爲高電壓)

故事:原先是把數字打在紙帶或卡片上,1打孔,0不打孔
機器碼:一堆0和 1 的組合

1.2 彙編語言的產生

彙編語言的主體是彙編指令
彙編指令 VS 機器指令:指令的表示方法上。
彙編指令是機器指令便於記憶的書寫格式
彙編指令是機器指令的助記符

機器指令:1000100111011000
操作:寄存器BX的內容送到AX中
彙編指令:MOV AX,BX (後面的移動到前面,bx移動到ax,操作一般是三個英文縮寫)
這樣的寫法與人類語言接近,便於記憶和閱讀

在這裏插入圖片描述

寄存器

寄存器:嵌入到 CPU中的內存,一個 CPU 中有多個寄存器
AX 是其中一個寄存器的代號(他不是一級緩存,而是比緩存更接近 CPU 的)
不同代號的寄存器有不同的作用

Q:計算機能讀懂的只有機器指令,那麼如何讓計算機執行程序員用匯編指令編寫的程序呢?
A:C++ 翻譯成彙編語言,通過編譯器變成機器碼

OllyDbg反編譯軟件,拿到的是數據的地址,反彙編只能得到彙編語言,永遠不能反編譯出C語言,因爲一個C語言的語句可以對應各種各樣組合的彙編語言,所以你反編譯成c語言是會出現很大的錯誤的

1.3 彙編語言的組成

  • 彙編指令(機器碼的助記符)
  • 僞指令(由編譯器執行)
  • 其他符號(由編譯器執行)

彙編語言核心:彙編指令,它決定了彙編語言的 特性

在這裏插入圖片描述

1.4 存儲器

  • CPU是計算機的核心部件,它控制整個計算機的混作並進行運算,要想然一個 CPU 工作,就必須向它提供指令和數據
  • 指令和數在存儲器中存放,也就是平時所說的內存
  • 一臺 PC 機內存的作用僅次於 CPU
  • 離開了內存,性能再好的 CPU 也無法工作
  • 磁盤不同於內存,磁盤上的數據或程序如果不讀到內存中,就無法被 CPU 使用

1.5 指令和數據

  • 指令和數據是應用上的概念
  • 在內存或磁盤上,指令和數據沒有任何區別,都是二進制信息

二進制信息:
1000100111011000
89D8H(數據)
H代表Hex,十六進制

1000100111011000
MOV AX,BX(程序)

1.6 存儲單元

存儲器被劃分爲若干個存儲單元,每個存儲單元從0開始順序編號(不一定是內存,還有顯存啊等等 ,GPU 的速度比 CPU 的 速度快多了)

例如:
一個存儲器有128個存儲單元,編號從 0 ~ 127

對於大容量的存儲器一般還用一下單位來計算容量(以下用 B 來代表 Byte )

1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1024 就是 2102^{10}

磁盤的容量單位同內存的一樣

1.7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章