匯編語(yǔ)言程序設(shè)計(jì)第4章匯編語(yǔ)言程序課件_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第4章匯編語(yǔ)言程序課件_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第4章匯編語(yǔ)言程序課件_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第4章匯編語(yǔ)言程序課件_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)第4章匯編語(yǔ)言程序課件_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、匯編語(yǔ)言程序設(shè)計(jì)第 4 章 匯編語(yǔ)言程序教案匯編語(yǔ)言程序設(shè)計(jì)第 4 章 匯編語(yǔ)言程序教案第 4 章 匯編語(yǔ)言程序4.1 匯編語(yǔ)言語(yǔ)句格式4.2 偽指令語(yǔ)句4.3 匯編語(yǔ)言程序設(shè)計(jì)的過(guò)程習(xí)題例第 4 章 匯編語(yǔ)言程序4.1 匯編語(yǔ)言語(yǔ)句格式匯編語(yǔ)言程序的指令8086/8088匯編語(yǔ)言源程序由三類(lèi)指令組成:執(zhí)行指令(符號(hào)指令)提供給匯編程序“翻譯”成機(jī)器能直接執(zhí)行的指令。偽指令(匯編指示指令)提供給匯編程序指示匯編操作的指令。宏指令提供給匯編程序的擴(kuò)展的“功能宏大”的指令。匯編語(yǔ)言程序的指令8086/8088匯編語(yǔ)言源程序由三類(lèi)指令匯編語(yǔ)言源程序的語(yǔ)句格式 ;名字項(xiàng)是一個(gè)用戶自定義的標(biāo)識(shí)符。操作符

2、項(xiàng)是(執(zhí)行/偽/宏)指令的助記符號(hào)保留字。操作數(shù)項(xiàng)是指令的操作對(duì)象 (多個(gè)用“,”分隔) 。注釋項(xiàng)是開(kāi)始于“;” 的提供的閱讀信息。注意:各項(xiàng)之間用空格鍵符,或TAB鍵符分界。操作符項(xiàng)必須有,其它項(xiàng)可選擇有/無(wú)。例如,執(zhí)行指令的語(yǔ)句格式: : ;匯編語(yǔ)言源程序的語(yǔ)句格式 標(biāo)識(shí)符標(biāo)識(shí)符由字母A/aZ/z,09,特殊字符 ?、 . 、 、_ 、 $等字符(少于32個(gè)字符,第1個(gè)字符不能是數(shù)字, “. ”只能做第1個(gè)字符)組成。標(biāo)識(shí)符在名字項(xiàng)中被定義,可以是標(biāo)號(hào)(結(jié)束于“:”)、變量名、符號(hào)常數(shù)名、段名、過(guò)程名等。定義了的標(biāo)識(shí)符可以在操作數(shù)項(xiàng)中被使用。* 標(biāo)號(hào)、過(guò)程名作為轉(zhuǎn)移地址使用。 * 變量名作

3、為內(nèi)存單元的偏移地址(EA)使用。* 符號(hào)常數(shù)名作為立即數(shù)使用。* 段名作為段基址立即數(shù)使用。標(biāo)識(shí)符標(biāo)識(shí)符由字母A/aZ/z,09,特殊字符 ?、 操作數(shù)表達(dá)式操作數(shù)是指令操作的具體操作對(duì)象,可以是操作數(shù)據(jù),也可以是轉(zhuǎn)移地址。操作數(shù)個(gè)數(shù)有0個(gè)操作數(shù)(無(wú)操作數(shù),或者是隱含的固定尋址操作數(shù))、1個(gè)操作數(shù)、多個(gè)操作數(shù)(多個(gè)操作數(shù)之間用“,”分割)。操作數(shù)可以用規(guī)定的匯編表達(dá)式描述。匯編表達(dá)式是由寄存器、常量、變量、標(biāo)號(hào),以及運(yùn)算符組成的,能被匯編程序計(jì)算出結(jié)果的操作數(shù)表達(dá)式。匯編表達(dá)式分為數(shù)值表達(dá)式和地址表達(dá)式兩種。操作數(shù)表達(dá)式操作數(shù)是指令操作的具體操作對(duì)象,可以是操作數(shù)據(jù)數(shù)值表達(dá)式數(shù)值表達(dá)式:由常

4、數(shù)和數(shù)值運(yùn)算符組成,計(jì)算結(jié)果是字節(jié)/字整數(shù)數(shù)據(jù)的表達(dá)式。數(shù)字常數(shù)(立即數(shù)) : 常量直接給出2# /10# /16# 數(shù)、ASCII字符數(shù)值常量給常數(shù)起一個(gè)符號(hào)名的符號(hào)常數(shù)數(shù)值運(yùn)算符(運(yùn)算對(duì)象和結(jié)果是整數(shù)常數(shù)): P66, 表4.1 算術(shù)運(yùn)算符: +、*、/、MOD邏輯運(yùn)算符:NOT、AND、OR、XOR、SHL、SHR 關(guān)系運(yùn)算符: EQ、NE、GT、GE、LT、LE (真值為-1,即全1,假值為0) 數(shù)值表達(dá)式數(shù)值表達(dá)式:由常數(shù)和數(shù)值運(yùn)算符組成,計(jì)算結(jié)果是字地址表達(dá)式 地址表達(dá)式:由常量、變量、標(biāo)號(hào)、BP、BX、SI、DI,以及運(yùn)算符組成的,計(jì)算結(jié)果為內(nèi)存地址數(shù)值表達(dá)式。地址的屬性:段基址

5、、偏移址、類(lèi)型(BYTE、WORD、DWORD、NEAR,F(xiàn)AR)地址運(yùn)算符(常用): P67,表4.2地址算術(shù)運(yùn)算符:+ 、 ; 取偏移址的相對(duì)位移量屬性定義運(yùn)算符: :(段超越前綴)、 PTR(類(lèi)型運(yùn)算)分析運(yùn)算符:SEG(取段基址值)OFFSET(取偏移址值)TYPE(取地址類(lèi)型值,1/2/4/-1/-2)LENGTH(取變量單元數(shù))SIZE(取變量總字節(jié)數(shù))用運(yùn)算符TYPE、LENGTH和SIZE作用在變量名上,能分別得到變量的類(lèi)型、單元數(shù)和總字節(jié)數(shù)。SIZE = TYPE LENGTH地址表達(dá)式 地址表達(dá)式:由常量、變量、標(biāo)號(hào)、BP、B匯編運(yùn)算符的優(yōu)先級(jí)運(yùn)算符號(hào)優(yōu)先級(jí)LENGTH、S

6、IZE、( )、 、高低:、 PTR、 THIS、 SEG、OFFSET、TYPEHIGH、LOW*、/、MOD、SHL、SHR+、-EQ、NE、LT、LE、GT、GENOTANDOR、XORSHORT (短距離轉(zhuǎn)移)匯編運(yùn)算符的優(yōu)先級(jí)運(yùn)算符號(hào)優(yōu)先級(jí)LENGTH、SIZE、( 地址運(yùn)算符應(yīng)用例 ;P68,【例4.2】(設(shè)DATA段地址為2000H)DATA SEGMENTD1 DB 41H, 6DHD2 DW 803AH, 104FHD3 DD 12345678H, 0ABCDEF9HD4 DW 40 DUP (1) DATA ENDSMOV AX, SEG D1 ; AX=2000HMOV

7、BX, OFFSET D2 ; BX=2MOV DX, OFFSET D3 ; DX=6MOV DX, TYPE D3 ; DX=4MOV AX, LENGTH D4 ; AX=40MOV BX, SIZE D4 ; BX=80MOV AL, HIGH 1234H ; AL=12H地址運(yùn)算符應(yīng)用例 ;P68,【例4.2】(設(shè)DATA段地址為匯編語(yǔ)言程序的偽指令提供給匯編程序的指示匯編操作控制的指令語(yǔ)句, 稱(chēng)為偽指令。常用的偽指令分成五組:符號(hào)定義、內(nèi)存數(shù)據(jù)定義、段定義、過(guò)程定義和模塊定義。常用的偽指令語(yǔ)句:EQU 、 = (符號(hào)定義)DB、 DW 、 DD (變量定義)SEGMENT 、 EN

8、DS 、ASSUME(段定義)ORG (段內(nèi)偏移址指針$設(shè)置)PROC 、 ENDP (過(guò)程子程序定義)NAME 、END (模塊定義) 匯編語(yǔ)言程序的偽指令提供給匯編程序的指示匯編操作控制的指令1. 符號(hào)定義偽指令符號(hào)等值偽指令EQU格式: EQU 等號(hào)偽指令=格式: =與EQU的不同: = 只能是合法的匯編表達(dá)式。 = 的可以重復(fù)定義。1. 符號(hào)定義偽指令符號(hào)等值偽指令EQU符號(hào)定義偽指令例count EQU 9 b=20b=b+10 ;可以重新定義,b=30d=(count+4)*2;d=26 f EQU 123456H;正確,“123456H”為正文g=123456H;錯(cuò)誤,數(shù)值超范圍

9、(16位2#)例如: addr EQU es:bx+si如果,指令mov ax, addr;即為mov ax, es:bx+si符號(hào)定義偽指令例count EQU 9 b=202. 內(nèi)存變量定義偽指令內(nèi)存變量定義偽指令DB、DW 和 DD 格式: DB / DW / DD 功能:定義內(nèi)存變量和類(lèi)型,分配和初始化內(nèi)存單元數(shù)據(jù)。偽指令內(nèi)存單元類(lèi)型字節(jié)數(shù)數(shù)值范圍DBBYTE10255 / -128127DWWORD20 65535 / -3276832767DDDWORD42. 內(nèi)存變量定義偽指令內(nèi)存變量定義偽指令DB、DW 和 D內(nèi)存變量定義的數(shù)據(jù)表內(nèi)存變量定義的數(shù)據(jù)表,給出了順序存放在內(nèi)存單元的

10、數(shù)據(jù),多個(gè)數(shù)據(jù)之間用“ ,”分隔。數(shù)據(jù)表的數(shù)據(jù)項(xiàng)可以是:數(shù)值表達(dá)式DB(8位數(shù)值)DW(16位數(shù)值)DD(32位數(shù)值)地址表達(dá)式DW( 16位偏移址值)DD( 16位偏移址值, 16位段基址值)字符串:用單/雙引號(hào)界定的字符串(ASCII碼值)。 ?:分配內(nèi)存單元,不給出數(shù)據(jù)。 DUP : 數(shù)據(jù)重復(fù)定義子句(可嵌套使用)。格式: DUP ()內(nèi)存變量定義的數(shù)據(jù)表內(nèi)存變量定義的數(shù)據(jù)表,給出了順序存放在內(nèi)內(nèi)存變量定義例數(shù)組是若干個(gè)連續(xù)的同類(lèi)型的內(nèi)存單元數(shù)據(jù),具有唯一的名字。數(shù)組常用DUP偽操作表達(dá)式定義。例如: ARA DW 20 DUP(0) P71,圖4.2:DATA1 DB 0, 45H,

11、0FFH, ?DATA2 DB HELLO!DATA3 DB 10, 2 DUP (2 DUP (1, 2),3) P72,圖4.3: ARRAYW DW -1, 1234H, 2 DUP (-32768) ADDR DW ARRAYW+2STRING DW EH, LL,!0內(nèi)存變量定義例數(shù)組是若干個(gè)連續(xù)的同類(lèi)型的內(nèi)存單元數(shù)據(jù),具有3. 段定義偽指令段定義偽指令SEGMENT格式: SEGMENT 段結(jié)束偽指令ENDS格式: ENDS(SEGMENT語(yǔ)句與對(duì)應(yīng)的ENDS語(yǔ)句的段名必須一致。)段基址說(shuō)明偽指令 ASSUME 格式:ASSUME segreg:,. (segreg可以是CS、DS

12、、ES和SS,段名是已定義的。)偏移址指針$設(shè)置偽指令 ORG格式:ORG ; 數(shù)值0655353. 段定義偽指令段定義偽指令SEGMENT程序的代碼段結(jié)構(gòu): SEGMENT ;段開(kāi)始 ASSUME CS:, DS: ENDS;此段結(jié)束程序的數(shù)據(jù)段結(jié)構(gòu): SEGMENT ;段開(kāi)始 ENDS;此段結(jié)束程序的段結(jié)構(gòu)程序的代碼段結(jié)構(gòu):程序的段結(jié)構(gòu)4. 過(guò)程(子程序)定義偽指令過(guò)程定義偽指令 PROC格式: PROC NEAR/FAR(過(guò)程的類(lèi)型:NEAR 段內(nèi)過(guò)程,F(xiàn)AR 段間過(guò)程 。)過(guò)程結(jié)束偽指令ENDP格式: ENDP(PROC語(yǔ)句與對(duì)應(yīng)的ENDP語(yǔ)句的過(guò)程名必須一致。)4. 過(guò)程(子程序)定

13、義偽指令過(guò)程定義偽指令 PROC過(guò)程(子程序)結(jié)構(gòu)必須在代碼段結(jié)構(gòu)內(nèi)。 SEGMENT ;段開(kāi)始 ASSUME CS: , DS: CALL ;調(diào)用過(guò)程指令 PROC ;過(guò)程開(kāi)始 RET;過(guò)程返回指令 ENDP;過(guò)程結(jié)束 ENDS;段結(jié)束過(guò)程(子程序)的結(jié)構(gòu)過(guò)程(子程序)結(jié)構(gòu)必須在代碼段結(jié)構(gòu)內(nèi)。過(guò)程(子程序)的結(jié)構(gòu)5. 程序模塊定義偽指令程序模塊開(kāi)始偽指令NAME格式: NAME (程序模塊開(kāi)始于NAME偽指令 ,可省略。)程序模塊結(jié)束偽指令END格式: END (程序模塊結(jié)束于END偽指令 ,不可省略。)5. 程序模塊定義偽指令; P63, 【例4.1】NAME EXAMPLEDSEG SE

14、GMENT data1db 4 dup (1),10h,11,0ah,0,0bh sum db ? count egu 9DSEG ENDSSSEG SEGMENT STACKdw 100H dup (?)SSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART :MOV AX,DSEG MOV DS,AX ;設(shè)置DS MOV AX,4C00H ;返回DOSINT 21HCSEG ENDS END START匯編語(yǔ)言源程序結(jié)構(gòu)例; P63, 【例4.1】CSEG SEGMENT匯編語(yǔ)匯編語(yǔ)言程序設(shè)計(jì)的處理軟件匯編語(yǔ)言程序設(shè)計(jì)的系統(tǒng)軟件:

15、 編輯程序EDIT.EXE / 記事本匯編程序MASM.EXE / TASM.EXE連接程序LINK.EXE / TLINK.EXE 調(diào)試程序DEBUG.EXE / TD.EXE *上述系統(tǒng)軟件是在MS-DOS環(huán)境下使用!匯編語(yǔ)言程序設(shè)計(jì)的處理軟件匯編語(yǔ)言程序設(shè)計(jì)的系統(tǒng)軟件: 匯編語(yǔ)言程序設(shè)計(jì)過(guò)程源文件(例: EX1.ASM)執(zhí)行文件(例: EX1. EXE )目標(biāo)文件(例: EX1. OBJ)執(zhí) 行編輯程序匯編程序連接程序調(diào)試程序匯編語(yǔ)言程序設(shè)計(jì)過(guò)程源文件(例: EX1.ASM)執(zhí)行文件(4.4 根據(jù)以下數(shù)據(jù)段定義,執(zhí)行指令,給出相關(guān)寄存器內(nèi)容。(設(shè)DATA段地址為1000H)DATA SEGMENTD1 DB 61H, 52HD2 DW 3456H, 0123HD3 DB 20 dup (0)DATA ENDSMOV AX, SEG D2; AX=1000HMOV BX, OFFSET D3; BX= 6 MOV CX, TYPE D1; CX= 1MOV DH, SIZE D2; DH= 4習(xí)題4.44.4 根據(jù)以下數(shù)據(jù)段定義,

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論