




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 匯編語言程序設計課程介紹1.屬于低級語言的程序設計2.硬件類課程和操作系統先行課3.軟件開發的一個組成部分(加密解密、逆向工程、有害代碼的分析防治)4.高級語言程序設計的擴展(硬件資源的管理、驅動等)5.對計算機專業:專業基礎課、必修課第一章匯編語言基礎知識1.計1算機語言基本概念一、機器語言:(0、1代碼)1機.器指令:是指揮計算機完成某一基本操作的命令,是由硬件電路設計決定的,也叫硬指令。由操作碼和地址碼組成。指令系統:每臺計算機所特有的、全部指令的集合構成該的指令系統。3機.器語言程序:機器指令的集合構成了機器語言,用機器語言編寫的程序就是機器語言程序。4特.點:計算機能直接識別,執行
2、速度快,但難于記憶、識別和編寫。二、匯編語言:1匯.編指令:用便于記憶、并能描述指令功能的符號表示的機器指令。2匯.編程序:就是把匯編語言源程序翻譯成機器語言程序的一種系統軟件。3匯.編語言:匯編指令、偽指令、宏指令和匯編程序一起組成了匯編語言。4特.點:匯編指令與機器指令一一對應,相對機器語言易于理解、掌握。匯編語言直接面向機器,用匯編語言編制的程序簡潔、快速。三、高級語言:1高.級語言:機器語言和匯編語言以外的程序設計語言統稱高級語言。2特.點:其特點是更加接近自然語言和慣用的數學表達形式,與計算機硬件結構無關,因而便于使用,便于交流和推廣。高級語言編程效率高,但運行效率低。3高.級語言需
3、要使用編譯程序和解釋程序將源程序翻譯成機器語言程序,然后交計算機執行。1.數2據表示與運算一、位計數制:位.權表示法:每位的位權與該位的數值相乘后相加得到該數的數值。十進制:逢十進一,用十個數碼表示。()二進制:逢二進一,用0兩個數碼表示。()八進制:逢八進一,用0、1、2、3、4、5、6、7八個數碼表示。(Q)十六進制:逢十六進一,用十六個數碼表示。(H)二、不同數制之間的轉化:1非.十進制數轉化為十進制:xxxxxxxxX1X是10012Q=1xxxxxA031.2xH1=63+10 x1062+3x161+1x160+2x16-1=41009.125D十.進制轉化為非十進制數:十進制數轉
4、化位二進制數:整數部分:除2取余,倒序排列得到的整數。小數部分:乘2取整,順序排列得到的整數。十進制數轉換為十六進制數和八進制數的方法與轉換為二進制數的方法類同。3十六進制數與二進制數之間的轉換:16=24,所以每4位二進制數可以用一位十六進制數表示,或者說每一位十六進制數可以表示成4位二進制數。CB9A75BF11010110111111B=75BFH八進制數與二進制數之間的轉化與十六進制數與二進制數之間的轉換方法相同,只是三位二進制數表示成一個八進制數。三、數據的表示:數值數據可以用不同的碼制進行表示,常用的有原碼、反碼和補碼。1原碼正數原碼:符號位為0,數值位照抄。負數原碼:符號位為1,
5、數值位照抄。例:X=+25=+00011001BX原=00011001BX=-25=-00011001BX原=10011001B2反碼正數反碼:符號位為0,數值位照抄。負數反碼:符號位為1,數值位取反。例:X=+25=+00011001BX反=00011001BX=-25=-00011001BX反=11100110B3補碼:為了將減法運算變成加法來做,有符號數在計算機內一律采用補碼表示。正數補碼:符號位為0,數值位照抄。負數補碼:符號位為1,數值位取反加一。例:X=+25=+00011001BX反=00011001BX補=00011001BX=-25=-00011001BX反=11100110
6、BX補=11100111BBCD碼:解決十進制數在計算機內部的表示。BCD碼規定用四位二進制數表示一位十進制數。對多位十進制數,只要把每一位十進制數分別表示為四位二進制數即可。ASCII碼:解決字母、符號在計算機內部的表示。基本ASCII碼(標準ASCII碼)用七位二進制數表示一個符號(共128個)。用字節保存最高位為0。四、計算機中數的運算:.二進制數的算術運算與十進制運算相同,只不過是逢2進1,借1當2。加法減法乘法TOC o 1-5 h z0+0=00-0=00 x0=00+1=10-1=10 x1=01+0=11-0=11x0=01+1=101-1=01x1=1.十六進制算術運算:與十
7、進制運算相同,但逢16進1,借1當16;注意運算結果如為A,B,C,D,E,F,不能寫成10,11,12,13,14,15。.二進制數的邏輯運算(1)與運算(AND;A):1A0=01A1=10A0=00A1=0(2)或運算(OR;V):1V0=11V1=10V0=00V1=1D+(3)非運算(NOT;1):0=1匚0(4)異或運算(XOR;)11+0=111+1=001+0=001+1=1注意:邏輯運算是按位運算。.補碼的運算:(1)十進制二進制2300010111+36+001001005900111011(2)3600100100+(-23)+1110100113(進位1)0000110
8、1(3)2300010111+110111001111001111011100+(+110111001111001111011100-13(4)(-36)+(-23)+11101001-59(進位1)110001011.3808系6統/結8構0888086:1978年推出;內外數據總線16位;地址總線20位;尋址范圍1MB;主頻5MHz。8088:1979年推出;內部數據總線16位;外部數據總線8位;其余基本同8086,被稱為準16位CPU。的內部結構:8086CPU按功能可分為兩大部分:總線接口單元BIU和執行單元EU。系統總線控制系統系統總線控制系統1.總線總線接口單元BIU是8086CP
9、U同存儲器和I/O設備之間的接口部件,負責對全部引腳的操作,它的具體任務是:負責從內存單元中預取指令,并將他們送到指令隊列緩沖器暫存;CPU執行指令時,總線接口單元要配合執行單元,從指定的內存單元或者I/O端口中取數據傳送給執行單元,或者把執行單元的處理結果傳送到指定的內存單元或I/O端口中。總線接口單元BIU由20位地址加法器、4個段寄存器、16位指令指針、指令隊列緩沖器和總線控制邏輯電路等組成。(1)地址加法器和段寄存器:8086CPU內部寄存器都是16位的,為實現20條地址線1MB尋址,它用專門的地址加法器將有關段寄存器的內容(段起始地址)左移4位后,與偏移地址相加,形成一個20位的物理
10、地址,以對存儲單元尋址。如書P9圖1-3。(2)16位指令指針IP:指令指針IP是用來存放下一條待執行指令在代碼段中的偏移地址。程序運行中,IP的內容由BIU自動修改,使它總指向下一條要取的指令在現行代碼段的偏移地址用戶不能直接訪問IP,但可通過某些指令修改它的內容。如轉移指令。(3)指令隊列緩沖器:當EU執行指令,并不占用總線時,BIU會進行預取指令,將取得的指令按先后順序存入一個6字節的指令隊列寄存器中,該隊列寄存器遵循“先進先出”原則,并按順序由EU執行。(4)總線控制邏輯電路:總線控制邏輯電路將8086CPU的內總線和外部總線相連,是8086CPU與內存單元或I/O端口進行交換數據的通
11、道。它包括16條數據線、20條地址線和若干控制總線。2.執行單元EU:執行單元EU包含一個16位的運算器ALU、8個16位的寄存器、一個16位的標志寄存器FLAGS、一個數據暫存寄存器和執行單元控制電路。(1)算術邏輯運算單元ALU:它是一個16位的運算器,可用于8/16位二進制算術和邏輯運算,也可按指令的尋址方式計算16位偏移量。(2)標志寄存器FLAGS:它是一個16位的運算器,用來反映CPU運算狀態和存放某些控制標志。(3)數據暫存寄存器:它協助ALU完成運算,暫存參加運算的數據。(4)通用寄存器組:它包括4個16位數據寄存器AX、BX、CX、DX和4個16位的指針與變址寄存器SP、BP
12、、SI、DI。(5)EU控制電路:它負責從BIU的指令隊列緩沖器中取指令,并對指令譯碼,根據要求向EU內部各部件發出控制命令。二、8086CPU的寄存器組織:8086CPU內部共有14個寄存器。包括4個通用寄存器,4個指針與變址寄存器,4個段寄存器,1個指令指針寄存器,1個標志寄存器。AHALBXBLCHCLDHDL(1)通用寄存器:AX一累加器BX基地址寄存器CX一計數寄存器DX數據寄存器通用寄存器又稱為數據寄存器,16位寄存器也可當8個8位寄存器使用。多數情況運算的源/IPFLAGS運算的源/IPFLAGS目的操作數。(2)段寄存器:CS代碼段段寄存器DS數據段段寄存器ES附加段段寄存器S
13、S堆棧段段寄存器8086CPU的各種寄存器都是16位的,所以不能直接1MB空間,因此采用分段分段寄存器,即8086用一組段寄存器將這1MB存儲空間分成若干邏輯段,用4個16位的段寄存器分別存放各個段的起始地址(又稱段基址)。8086的指令能直接訪問這4個段寄存器。尋址時根據給出的偏移地址加上段基址左移4位的值,實現20位地址。CS:表示當前使用的指令代碼可以從該段寄存器指定的存儲器段中取得,相應的偏移地址由IP提供;DS:指示當前程序使用的數據所存區段的最低地址;ES:指出當前程序使用附加段地址的位置,該段一般用來存放原始數據或運算結果;SS指定當前堆棧的底部地址。(3)地址指針和編制寄存器:
14、SP堆棧指針BP基址指針SI一源變址寄存器DI一目的變址寄存器SP用以指出在堆棧段中當前棧頂的地址PUSH和POP指令由SP給出棧頂的偏移地址。BP指出要處理的數據在堆棧段中的基地址。注:BP并非確切的偏移量,它只是全部偏移量中的一個基本值;BP所指的物理地址必須用堆棧寄存器SS來計算。變址寄存器SI和PI用來存放當前數據段中某個單元的偏移量。注:在字符串操作時,源操作數在SI中,目的操作數在DI中,不能顛倒。(4)指令指針IP:它存放的時BIU要取的下一條指令的偏移地址,它具有自動加1功能。(5)標志寄存器:標志寄存器是一個16位的寄存器,8086共使用了9個有效位,其中6位狀態標志位,3位
15、控制標志位。狀態標志位是當一些指令執行后,所產生數據的一些特征,控制標志位則是可以由程序寫入以達到控制處理機狀態或程序執行方式的表征。D15,D14,D13D12,DDD9D8D7DJ,QRD?RR_OFDFIFTFSFZFAFPFCF6個狀態標志位的功能:CF進位標志:當執行加(減)法運算使最高位產生進(借)位時CF為1,否則為0;ZF零標志:若當前運算結果為0,ZF為1,否則為0;SF符號標志:它與運算結果的最高位相同;OF溢出標志:當補碼運算由益處時,OF為1,否則為0;PF奇偶標志:反映運算結果中1的個數時偶數還是奇數。當指令執行結果的低8位中含由偶數個1時,PF為1,否則為0;AF輔
16、助進位標志:當執行一個加(減)法運算使結果的低4位向高4位有進(借)位時,AF為1,否則為0。3個控制標志位的功能:TF單步中斷允許標志:是位調試程序而設定的陷阱控制位。當該位為1時,8086CPU處于單步狀態,此時CPU每執行完一條指令就自動產生一次內部中斷;IF外部可屏蔽中斷允許標志:用來控制8086是否允許接收外部中斷請求。IF為1響應外部中斷,否則不響應。注:不影響非屏蔽中斷;DF方向標志:用以指定字符串處理時的方向,當該位為1時字符串以遞減順序處理,即地址從高到低遞減,否則以遞增順序處理。第二章8086/8088的尋址方式和指令系統2.1尋址方式指令執行時首先要找到操作數,尋找操作數
17、的過程稱為尋址。匯編指令格式:操作碼助記符目的操作數,源操作數;注釋。操作碼助記符:每條指令必有。操作數:指令操作的對象或操作對象的地址。MOVAX,2050HMOVAX,2050H一、操作數類型:8086/8088系統中的操作數從其使用的角度可以分為目的操作數(OPD)和源操作數(OPS卜目的操作數為指令提供操作數據及操作結果的存放位置,它的值隨執行結果而變化;源操作數只為指令提供操作數據,其值在指令執行過程中是不變的。例如:ADDAX,BX。8086/8088系統中的操作數可以分為三種類型:立即數操作數、寄存器操作數和存儲器操作數。.立即數操作數:例如:MOVAX,0203H.寄存器操作數
18、:例如:ADDAX,BX.存儲器操作數:例如:MOVAX,BX二、尋址方式:8086CPU共有七種尋址方式。1立即數尋址方式:這種尋址方式直接把參與操作的數據寫在指令中,是指令的一部分,該數據稱為立即數。計算機尋找操作數時,只要讀取指令的操作數字節;操作數可以是各種數制下的數值(相當于8位或16位二進制數),也可以是帶單引號的字符。例如:MOVAX,2050HMOVAL,05HMOVAL,A注意:1立即數永遠不能作目的操作數。2立即數尋址方式不能用于單操作數指令。3源操作數和目的操作數要互相匹配。例如:MOV05H,ALMOVCH,2050HMUL0AH2寄存器尋址方式:寄存器尋址方式中,指令
19、需要的操作數存放在指令指明的寄存器中。這種尋址方式速度最快。16位操作數可使用AX、BX、CX、DX、CS、DS、ES、SS、SP、BP、SI和DI;8位操作數可使用AH、AL、BH、BL、CH、CL、DH和DL。例如:MOVAX,BX執行前:AX=1234H,BX=5678H執行后:AX=5678H,BX=5678H再如:INCAX執行前:AX=12H執行后:AX=13H3存儲器尋址方式:(1)直接尋址:這種尋址方式是在指令中直接規定操作數所在單元的偏移地址。若步指明操作數所在段則默認為DS數據段中,若指明操作數所在段則為指明段中(段超越)。例如:MOVAX,2050H執行的操作是:AX-D
20、Sx16+2050H執行前:AX=1234H,DS=3000H,(32050H)=5678H執行后:AX=5678H,DS=3000H,(32050H)=5678H再如:MOVDX,ES:2050H(使用段超越)執行的操作是:DX-ESx16+2050H偏移地址也可以用符號表示。例如:MOVAX,BUFA其中BUFA是數據段用偽指令定義過的符號。(2)寄存器間接尋址:偏移地址(或有效地址)通過寄存器間接給出,可用的寄存器為BX、BP、SI、DI。若指定寄存器是BX、SI、DI則物理地址由DS左移4位加上BX、SI或DI中的偏移地址;若指定寄存器是BP則物理地址由SS左移4位加上BP中的偏移地址
21、。可以段超越。例如:MOVAX,BX執行的操作是:AX-DSx16+BX執行前:AX=1357H,BX=100H,DS=3000H,(30100H)=2468H執行后:AX=2468H,BX=100H,DS=3000H,(30100H)=2468H再如:MOVAX,BP執行的操作是:AX-SSx16+BPMOVAX,ES:BX執行的操作是:AX-ESx16+BX(3)寄存器相對尋址:該尋址方式指令規定一個寄存器和一個有符號的8位或16位偏移量,有效地址等于寄存器內容加偏移量。可用的寄存器仍然是bx、bp、si、di。計算物理地址時,當指令規定的寄存器是BP時,默認的段寄存器用SS,其他三個寄存
22、器用DS。可以段超越。例如:MOVAX,DI+06H或MOVAX,06HDI執行的操作是:AX-DSx16+DI+06執行前:AX=0,DI=100H,DS=2000H,(20106H)=1234H執行后:AX=1234H,DI、DS、(20106H)中的內容未變。MOVCL,BP+0205H或MOVCL,205HBP執行的操作是:CL-SSx16+BP+205HMOVDX,ES:BX+02H執行的操作是:DX-ESx16+BX+02H再如:MOVAX,NAMEBXADD5BP,BX(4)基址變址尋址:該指令用一個基址寄存器與一個變址寄存器的值相加,計算結果作為操作數的偏移地址。基址寄存器只能是BX和BP,若
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽城管道清淤合同協議
- 電路線路改造合同協議
- 電廠高硫煤采購合同協議
- 獨棟酒吧出售合同協議
- 生鮮水餃售賣合同協議
- 環衛人工勞務合同協議
- 電子門鎖維保合同協議
- 電梯主板買賣合同協議
- 生活驛站轉讓合同協議
- 電子寵物領養合同協議
- 線組長培訓課件
- 2025年廣東省中考總復習·數學 第一部分 第三章 第13課時 反比例函數
- 食品銷售提成管理制度
- 2025-2030中國水利建設行業經營形勢分析及未來前景展望研究報告
- 助殘委托服務協議
- 自制結婚協議書范本
- 統編版二年級語文下冊第四單元自測卷(含答案)
- 湘豫名校聯考2024-2025學年高三春季學期第二次模擬考試化學答案
- 2025年醫院員工滿意度提升計劃
- 學會自我保護課件
- 政府會計實務(第六版)課件 3.政府會計核算模式
評論
0/150
提交評論