第3章 指令系統(tǒng)及匯編語言程序.ppt_第1頁
第3章 指令系統(tǒng)及匯編語言程序.ppt_第2頁
第3章 指令系統(tǒng)及匯編語言程序.ppt_第3頁
第3章 指令系統(tǒng)及匯編語言程序.ppt_第4頁
第3章 指令系統(tǒng)及匯編語言程序.ppt_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第3章 指令系統(tǒng)及匯編語言程序,【本章內(nèi)容簡介】 本章以INTEL8086為核心CPU,介紹其尋址方式、指令系統(tǒng)、匯編語言的基本語法和程序設(shè)計的基本方法,然后,在此基礎(chǔ)上,簡單地介紹了32位機的指令系統(tǒng)。 【本章重點難點】 重點掌握8086的指令系統(tǒng)和匯編語言程序設(shè)計的基本方法。,31 8086指令系統(tǒng)概述,3118086指令的基本格式 操作碼 目的操作數(shù),源操作數(shù),312 8086指令的尋址方式 8086微處理器支持的操作數(shù)類型有兩大類:數(shù)據(jù)操作數(shù)和轉(zhuǎn)移地址操作數(shù)。 1.數(shù)據(jù)操作數(shù) (1)立即數(shù)(2)寄存器操作數(shù) (3)存儲器操作數(shù) 2.轉(zhuǎn)移地址操作數(shù) 轉(zhuǎn)移地址操作數(shù)是指在程序發(fā)生轉(zhuǎn)移時,與

2、轉(zhuǎn)移的目標(biāo)地址有關(guān)的操作數(shù)。它可以是立即數(shù),也可以是寄存器或存儲器操作數(shù)的形式。,數(shù)據(jù)操作數(shù)的尋址方式,(1)立即尋址 例如:MOV AX,1234H ;十六進(jìn)制數(shù)1234H作為源操作數(shù),送入AX寄存器,也即是給AX賦值。 (2)寄存器尋址 例如:MOV AX,BX ;將寄存器BX的內(nèi)容送入AX中 運行結(jié)果為:(AX)=(BX) (3)直接尋址 例如:MOV AL,2000H ; 指令中源操作數(shù)的尋址方式為直接尋址方式。 將邏輯地址為DS:2000單元內(nèi)的字節(jié)送入AL。,(4)寄存器間接尋址 例如:MOV AX,BX ; 指令中源操作數(shù)的尋址方式為寄存器間接尋址方式。 BX內(nèi)容為有效地址(偏移

3、地址),段地址為默認(rèn)的數(shù)據(jù)段地址。 (5)寄存器相對尋址方式 例如:MOV AL,BX+5; 指令中源操作數(shù)的尋址方式為寄存器相對尋址方式。 若DS=6000H,BX=2000H,BX的內(nèi)容加上8位位移量05H作為操作數(shù)的有效地址。傳送邏輯地址為6000H:2005H單元(物理地址為62005H單元)的一個字節(jié)到AL中。,(6)基址加變址尋址方式 例如:MOV AX,BX+SI; 指令中源操作數(shù)的尋址方式為基址加變址尋址方式。 BX的內(nèi)容與SI的內(nèi)容之和作為源操作數(shù)的有效地址,傳送數(shù)據(jù)段中的一個字。 (7)相對基址加變址尋址方式 例如:MOV AH,BX+DI+1234H ; 指令中源操作數(shù)的

4、尋址方式為相對基址加變址尋址方式。 BX的內(nèi)容加上DI的內(nèi)容再加上位移量1234H作為源操作數(shù)的有效地址,傳送數(shù)據(jù)段中的一個字節(jié)。,轉(zhuǎn)移地址的尋址方式,(1)段內(nèi)直接尋址方式 例如:JMP NEAR KEYB ;程序跳轉(zhuǎn)至KEYB處,其距當(dāng)前指令位置在-128+127字節(jié)范圍內(nèi),故用NEAR表明是短轉(zhuǎn)移。 (2)段內(nèi)間接尋址方式 例如:JMP BX;轉(zhuǎn)移目標(biāo)地址為原代碼段,有效地址為BX的內(nèi)容。 若該指令在存儲器中的邏輯地址為2000H:3000H,BX=2500H,則執(zhí)行完該指令后,下一條要執(zhí)行的指令在2000H:2500H處。 (3)段間直接尋址方式 例如:JMP 3000H:2000H

5、;轉(zhuǎn)移目標(biāo)地址為3000H:2000H。 (4)段間間接尋址方式 例如:JMP DWORD PTR SI+BX ;取DS段中偏移地址為SI+BX處的雙字內(nèi)容作為新的CS和IP的內(nèi)容。,321 數(shù)據(jù)傳送類指令,注意:,* 目的操作數(shù)不能是立即數(shù),CS,IP寄存器。 * 立即數(shù)不能直接給段寄存器賦值,立即數(shù)送存儲器時,數(shù)據(jù)類型要匹配。 * 兩個存儲器之間,兩個段寄存器不允許直接傳送數(shù)據(jù)。 * PUSH,POP指令均為單操作數(shù)形式,且操作數(shù)為字的形式。 * XCHG不能在存儲器間直接交換數(shù)據(jù),也不能用段寄存器,立即數(shù)作為操作數(shù)。 * 輸入/輸出指令用于累加器AL,或AX與外設(shè)端口交換數(shù)據(jù),8位端口號

6、在指令中直接給出,16位端口號必須由DX給出。 * 除SAHF,POPF外,數(shù)據(jù)傳送指令均不影響標(biāo)志位。,322 算術(shù)運算類指令,注意:,* 算術(shù)運算指令中,除兩操作數(shù)中源操作數(shù)為立即數(shù)外,必有一操作數(shù)在寄存器中,單操作數(shù)不能為立即數(shù)。 * 操作數(shù)的類型表達(dá)式或寄存器操作數(shù)決定運算為字節(jié)或字的形式。 * 算術(shù)運算指令一般都會影響標(biāo)志位。 如果運算結(jié)果為0,則ZF=1; 如果運算結(jié)果為負(fù),則SF=1; 如果運算結(jié)果的低八位中有偶數(shù)個1,則PF=1;,323 邏輯運算類指令,324 串操作類指令,注意:,*通過加重復(fù)前綴來實現(xiàn)串操作; *可以對字節(jié)串進(jìn)行操作也可對字串進(jìn)行操作; *所有的串操作指令

7、均用SI對源操作數(shù)進(jìn)行間接尋址,并假定在DS段,用DI為目的操作數(shù)進(jìn)行間接尋址,并假定在ES段,兩操作數(shù)均為存儲器操作數(shù)。 *串操作的地址修改與DF位有關(guān),DF=1,則地址按自動減量修改,也即傳送從最高地址處開始;DF=0,則地址按自動增量修改,也即傳送從最低地址處開始。,325 控制轉(zhuǎn)移類指令,1、無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令 (1)無條件轉(zhuǎn)移指令 (2)條件轉(zhuǎn)移指令 2、子程序調(diào)用與返回指令。 3、循環(huán)控制指令 4、中斷指令和中斷返回指令,326 處理器控制類指令,33 8086匯編語言的編程格式,331 8086匯編語言的標(biāo)記和表達(dá)式 1、標(biāo)記: (1)標(biāo)識符 (2)保留字 (3)界符

8、2、表達(dá)式: 1)算術(shù)運算符: 2)邏輯運算符: 3)關(guān)系運算符 4)分析運算符和綜合運算符;,332 8086匯編語言的語句類型和格式,1、8086匯編語言的語句類型 有三種基本語句:指令語句,偽指令語句和宏指令語句。 (1)指令語句就是8086指令系統(tǒng)中的語句,它與機器碼一一對應(yīng)。 例:MOV AX,1234H AND AX,0F0FH (2)偽指令語句是說明性語句,用來為匯編程序提供一些信息。它不產(chǎn)生機器碼。 例:DAT1 EQU 60 DAT2 DB 23H (3)宏指令語句是為方便程序設(shè)計,用來代替程序中多次重復(fù)使用的某程序段的指令,在匯編時展開,產(chǎn)生對應(yīng)的機器碼。,2、8086匯編

9、語言的語句格式 (1)指令語句的格式 例: KK1:MOV AX,1234H;給AX寄存器賦值1234H (2)偽指令語句,偽指令語句:,1標(biāo)號賦值偽指令EQU 標(biāo)號 EQU 表達(dá)式(常數(shù),數(shù)據(jù)的地址或已賦過值的舊標(biāo)號) 例:DAT1 EQU 60;DAT1=60 2定義存儲單元偽指令 DB(字節(jié)),DW(字),DD(雙字),DQ(4個字),DT(10個字)。用來定義數(shù)據(jù)、字符串或存儲單元。,3存儲單元類型定義偽指令BYTE(字節(jié)),WORD(字),DWORD(雙字) 例:MOV BYTE PTR SI,78;對一個字節(jié)單元賦值78 MOV WORD PTR SI,78;對一個字單元賦值78

10、4段定義偽指令SEGMENT,ENDS,ASSUME,ORG。 SEGMENT與ENDS成對使用。 格式:段名 SEGMENT 類型 段名 ENDS,ASSUME 格式:ASSUME 段寄存器名:段名1,段寄存器名:段名2, ORG, 定位偽指令,用來規(guī)定該語句之后的程序段或數(shù)據(jù)塊的起始地址的偏移地址。 格式:ORG 數(shù)值表達(dá)式 5定義子程序的偽指令PROC,ENDP,NEAR和FAR 子程序與主程序在同一個段內(nèi),則為近調(diào)用NEAR,否則為遠(yuǎn)調(diào)用FAR。 格式: 子程序名 PROC NEAR/FOR 子程序名 ENDP,(3)宏指令語句的格式 宏指令語句的一般格式為: 宏指令名 MACRO 形

11、式參數(shù)表 宏體 ENDM 取消宏定義偽指令PURGE 格式: PURGE 宏指令名, 注意:宏與子程序的區(qū)別 * 宏在匯編時展開,占用內(nèi)存多,執(zhí)行速度快。 * 子程序在程序執(zhí)行時展開,占用內(nèi)存少,執(zhí)行速度慢。,333 8086匯編語言的程序結(jié)構(gòu),;定義堆棧段 名稱1SEGMENT ;定義堆棧深度與堆棧段變量 名稱1ENDS ;定義數(shù)據(jù)段 名稱2SEGMENT ;定義變量 名稱2 ENDS ;定義附加數(shù)據(jù)段 名稱3SEGMENT ;定義變量 名稱3 ENDS ;定義代碼段,名稱4SEGMENT ASSUME CS:名稱4,ES:名稱3, DS:名稱2 ,SS:名稱1 START:除代碼段外的段地址填裝 ;程序主體 子程序1 PROC ;子程序1主體 子程序1 ENDP 子程序N PROC ;子程序N主體 子程序N ENDP 名稱4ENDS END START,34 匯編語言程序設(shè)計,341 程序設(shè)計步驟 通過對項目的分析,建立相應(yīng)的數(shù)學(xué)模型。 1依據(jù)數(shù)學(xué)模型及匯編語言提供的基本運算確定相應(yīng)的算法。 2用流程圖形式將算法描述出來。 3編寫源程序。 4靜態(tài)檢查。 5上機運行調(diào)試。 342 順序結(jié)構(gòu)與簡單程序設(shè)計 343 分支結(jié)構(gòu)和分支程序設(shè)計 344 循環(huán)結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論