1. 程式人生 > >1.機器語言和匯編語言

1.機器語言和匯編語言

數字 翻譯 內存 連接 但是 芯片 結構 數值 post

機器語言是機器指令的集合,機器指令是一列二級制數字,計算機又將轉變一列高低電壓,這樣計算機的電子器件就受到驅動,進行運算了,每一個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位

1.機器語言和匯編語言