機器語言是機器指令的集合,機器指令是一列二級制數字,計算機又將轉變一列高低電壓,這樣計算機的電子器件就受到驅動,進行運算了,每一個CPU都有自己的機器指令集,也就是規則,也叫做機器語言,早期的程序員編寫代碼,都是打洞呢,程序員將用0、1數字編成的程序代碼打在紙帶或者卡片上,1打孔,0就是不打孔。這樣很顯然不容易記憶,所以就開發了匯編語言,機器指令1000100111011000 表示把寄存器BX的內容送到AX,但是 匯編則寫成,mov ax,bx。這樣的寫法與自然語言就很接近了,不是么,所以說,程序員真™聰明呢
但,機器指令怎么翻譯成匯編指令呢,這就需要我們的編譯器了,
在計算機中有專門連接cpu和其他芯片的導線,稱為總線,根據傳送信息的不同,總線從邏輯上分為:地址總線,控制線和數據總線
地址總線:CPU是通過地址總線來指定存儲單元的。(尋址)
數據總線:CPU與內存或其他器件的數據傳送通過數據總線。(傳數)
控制總線:CPU對外部器件的控制是通過控制總線來進行的。(控力)
假如10條地址總線,意味着它能尋址1024個,因為210是1024,一條總線只要兩種狀態,高電壓和低電壓
不同CPU,寄存器的個數不一樣,結構不一樣,8086CPU有14個寄存器,分別為:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW.
8086CPU的所以寄存器都是16位的,可以存放2個字節,(A~D)X 四個寄存器存一般數據,被稱為通用寄存器;
而這四個寄存器又可分別 分為2個8位寄存器來用
- AX分為AH和AL
- BX分為BH和BL
- CX分為CH和CL
- DX分為DH和DL
一句話,AX的寄存器的低8位(0~7)叫AL寄存器,高8位(8~15)叫AH寄存器。AH和AL可獨立使用
終於開始語法了
mov ax,18 將18送入到寄存器AX里 AX=18(C語言)
add ax ,18 將寄存器AX的數值加上18 AX+=18(C語言)
mov ax, bx 將寄存器BX的數字送入到AX里 AX=BX
add ax,bx 將寄存器BX的數值加上AX放到AX里 AX+=BX
我們知道8086CPU是16位機 而16位機代表什么呢 :
- 運算器一次最大處理16位的數據
- 寄存器的最大寬度位16位
- 寄存器和運算器之間的通路為16位