一、匯編語言的介紹
1、匯編語言和處理器指令集高度相關,不同指令集的匯編語言不兼容。
2、匯編語言是對機器語言的一種抽象,用英文字符來代表運算和控制指令,用英文字母和數字代表操作數。
二、常用的匯編語言
有 x86的匯編語言,ARM匯編語言,開源指令集。
三、匯編指令的格式
格式如下:
1、每次占據一行。
2、采用下列格式:
操作碼 操作數1, 操作數2案例: mov al, 33
mov是操作碼,al, 33 是操作數。
注意:
操作碼代表基本操作,例如相加、相減、相除、移位、比較、賦值等運算。
操作數代表運算數據存放位置,或者常數指定。
四、操作碼注意事項
操作碼代表運算和控制操作,有的需要2個操作數,有的只需要1個操作數,要查官方文檔。
不同版本可能操作碼不一樣。
通俗解釋:操作數就是加減乘除,輸入輸出等操作,只不過每次只能做一個運算或者操作,不能一心兩用。
五、操作數注意事項
1、操作數一般是寄存器、數據棧和常量來充當。
2、操作數如果使用寄存器,那么需要指定寄存器的名字。
一般處理器寄存器很多種,每個占據2字節或者4字節。
3、操作數如果是數據棧,那么需要告訴數據棧的偏移量,也就是在字節序列的索引位置。
因為按照字節存放,有些數據占據4個字節,有的占據8個字節,需要指定開始讀取的索引位置。
4、常量是編程時指定的。
通俗解釋:操作數就是用來計算的數字,可能存在內存里等待臨時確定,可能直接常數指定。
六、寄存器的注意事項
1、寄存器是處理器能直接讀取和寫入數據的存儲設備。
2、寄存器是處理器和外部內存、外部存儲設備(磁盤)交換數據的平臺。
3、處理器用寄存器和外部設備通信,用總線來連接外部設備。
4、每當處理器需要數據,那么內存就把數據復制到寄存器,處理器從寄存器讀取。
5、每當處理器輸出數據,就把數據寫入寄存器,內存就從寄存器讀取數據。
通俗解釋:寄存器就是處理器工作的平臺,內存把數據放到平臺上,等處理完后,內存再把數據從平臺拿走。
七、用中斷來調用外部功能
1、中斷是處理器用來停止當前指令,保存當前狀態,開始執行另一個程序的指令時作出的操作。
2、處理器需要和外部設備進行數據交換時調用中斷程序。(例如磁盤讀寫,網絡網卡讀寫,顯示文字和圖像,讀取鼠標和鍵盤的輸入)
3、BIOS提供了主板支持的中斷程序,處理器只需要在寄存器設置中斷程序的功能編號,然后調用該中斷程序。
通俗解釋:處理器想要外部數據了,就調用主板提供的中斷程序。
八、顯存的作用
顯存是存放圖像二進制數據的存儲空間,是處理器直接輸出圖像信號的對象。
顯示器從顯存中讀取圖像數據來顯示,同時用一定周期讀取顯存刷新圖像。
通俗解釋:處理器往顯存里放圖像的二進制數據,顯示器就從顯存里取數據顯示。
九、數據棧和指令棧
1、匯編語言把指令和數據分開,分別放在指令棧和數據棧中。
2、指令執行時,按照地址增加的順序讀取指令,執行指令(因為指令連續存放)。
3、用指令計數器來保存當前執行的指令在指令棧的下標位置。
4、匯編語言把內存空間,顯存空間連續排列,用地址來編號,每個字節一個地址,用整數遞增。
5、數據棧也是一個連續存放的內存空間,每個空間有地址,方便用地址來讀寫數據。
按照變量類型來連續讀幾個字節(例如int整型連續讀4個字節)。
通俗解釋:把指令和數據分開,各自單獨放一起,連續存放,像計數一樣,加一個單位就獲取一個指令,或者加一個單位就獲取一個數據。