匯編程序功能_第1頁
匯編程序功能_第2頁
匯編程序功能_第3頁
匯編程序功能_第4頁
匯編程序功能_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 匯編程序功能匯編程序功能 偽操作偽操作 匯編語言程序格式匯編語言程序格式 匯編語言程序的上機過程匯編語言程序的上機過程第第4章章 匯編語言程序格式匯編語言程序格式1. 程序運行步驟及生成的文件程序運行步驟及生成的文件myfile.asm編輯程序編輯程序匯編程序匯編程序連接程序連接程序myfile.crfotherfiles.objmyfile.lstmyfile.objmyfile.mapmyfile.exe建立建立, , 運行匯編語言程序運行匯編語言程序CEDIT MYFILE . ASMCMASM MYFILE . ASM Microsoft (R) Macro Assembler Ve

2、rsion 5.10 Copyright (C) Microsoft Corp 1981,1988.All rights reserved. Object filename MYFILE.OBJ: Source listing NUL.LST: MYFILE.LST Cross-reference NUL.CRF: 47962 + 413345Bytes symbol space free 0 Warning Errors 0 Severe ErrorsCLINK MYFILE . OBJ Microsoft (R) Overlay Linker Version 3.64 Copyright

3、(C) Microsoft Corp 1983-1988. All rights reserved. Run File MYFILE.EXE: List File NUL.MAP: Libraries .LIB: LINK : warning L4021: no stack segment CMYFILE2. 匯編程序功能匯編程序功能匯編程序的主要功能:匯編程序的主要功能: 檢查源程序,給出出錯信息。檢查源程序,給出出錯信息。 產(chǎn)生目標文件產(chǎn)生目標文件( (.obj.obj) )和列表文件和列表文件( (.lst.lst) )。 展開宏指令。展開宏指令。3. 偽操作(偽指令)偽操作(偽指令)

4、偽操作是匯編程序?qū)υ闯绦蜻M行匯編時處理的偽操作是匯編程序?qū)υ闯绦蜻M行匯編時處理的操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、存儲器分配、指示程序開始結(jié)束等功能。存儲器分配、指示程序開始結(jié)束等功能。 處理器選擇偽操作處理器選擇偽操作 段定義偽操作段定義偽操作 程序開始和結(jié)束偽操作程序開始和結(jié)束偽操作 數(shù)據(jù)定義及存儲器分配偽操作數(shù)據(jù)定義及存儲器分配偽操作 表達式賦值偽操作表達式賦值偽操作 地址計數(shù)器與對準偽操作地址計數(shù)器與對準偽操作 基數(shù)控制偽操作基數(shù)控制偽操作Directives.8086 選擇選擇 8086 指令系統(tǒng)指令系統(tǒng).286 選擇選擇 8

5、0286 指令系統(tǒng)指令系統(tǒng).286P 選擇保護模式下的選擇保護模式下的 80286 指令系統(tǒng)指令系統(tǒng).386 選擇選擇 80386 指令系統(tǒng)指令系統(tǒng).386P 選擇保護模式下的選擇保護模式下的 80386 指令系統(tǒng)指令系統(tǒng).486 選擇選擇 80486 指令系統(tǒng)指令系統(tǒng).486P 選擇保護模式下的選擇保護模式下的 80486 指令系統(tǒng)指令系統(tǒng).586 選擇選擇 Pentium 指令系統(tǒng)指令系統(tǒng).586P 選擇保護模式下的選擇保護模式下的 Pentium 指令系統(tǒng)指令系統(tǒng) 處理器選擇偽操作:處理器選擇偽操作: 段定義偽操作:段定義偽操作:完整的段定義格式完整的段定義格式 data segment

6、 data segment ; 定義數(shù)據(jù)段定義數(shù)據(jù)段 data endsdata ends;-;-extra segment extra segment ; 定義附加段定義附加段 extra endsextra ends;-;-code segment code segment ; 定義代碼段定義代碼段 assume cs:code, ds:data, es:extraassume cs:code, ds:data, es:extrastart: start: mov mov ax, data ax, data mov ds mov ds, ax , ax ; 段地址段地址 段寄存器段寄存器

7、code endscode ends end start end startcode segmentmain proc far assume start: push ds mov ax, 0 push ax retmain endpcode ends end startcode segmentmain proc far assume start: mov ax,4c00h int 21hmain endpcode ends end start段名段名 SEGMENT 定位類型定位類型 組合類型組合類型 使用類型使用類型 類別類別 ; 語句序列語句序列段名段名 ENDS(1) 定位類型 alig

8、n_type (p120) PARA BYTE WORD DWORD PAGEPARA BYTE WORD DWORD PAGE(2) 組合類型 combine_type PRIVATE PUBLIC COMMON STACK PRIVATE PUBLIC COMMON STACK AT expAT exp(3) 使用類型 use_type USE16 USE32USE16 USE32(4) 類別 class存儲模式與簡化段定義偽操作存儲模式與簡化段定義偽操作(1) MODEL 偽操作偽操作(p121) .MODEL 存儲模式存儲模式 ,語言類型語言類型 ,操作系統(tǒng)類型操作系統(tǒng)類型 ,堆棧選項

9、堆棧選項 存儲模式:存儲模式:tiny small medium compact largetiny small medium compact large huge flat huge flat.model small.model small.stack 100H.stack 100H.data.data .code.code.startup.startup .exit 0.exit 0endend(2) 簡化的段定義偽操作簡化的段定義偽操作(p122).code name.code name.data.data.data?.data?.fardata.fardata name name.fa

10、rdata.fardata? name? name.const.const.stack size.stack size.model small.model small.data.data.code.code.startup(P127).startup(P127) .exit 0(P127).exit 0(P127)end end .model small.model small .data .data .code .codestart: movstart: mov ax, data ax, data mov ds mov ds, ax, ax mov mov ax, 4c00h ax, 4c0

11、0h int int 21h 21h end start end start .model small .model small .const .const .data .data .code .codestart: movstart: mov ax, DGROUP ax, DGROUP mov ds mov ds, ax, ax mov mov ax, 4c00h ax, 4c00h int int 21h 21h end start end start段組定義偽操作段組定義偽操作(p126)dseg1 segment word public data dseg1 ends dseg2 se

12、gment word public data dseg2 ends datagroupdatagroup group dseg1, dseg2 group dseg1, dseg2cseg segment para public code assume cs:cseg, ds:datagroupstart: mov ax, datagroup mov ds, ax mov ax, 4c00h int 21hcseg ends end startdata1 segment data1 segment wordword const1 dw const1 dw 100 100data1 endsda

13、ta1 ends data2 segment data2 segment wordword var1 dw var1 dw ? ?data2 endsdata2 endsdatagroupdatagroup group data1,data2 group data1,data2code segment code segment assume cs:code, ds:datagroupassume cs:code, ds:datagroup mov ax, datagroupmov ax, datagroup mov ds mov ds, ax, ax mov mov ax, const1 ax

14、, const1 mov mov var1, ax var1, ax mov mov ax, 4c00h ax, 4c00h int int 21h 21hcode endscode ends end start end startTITLE textNAME module_nameEND label . STARTUP. EXIT return_value 程序開始和結(jié)束偽操作程序開始和結(jié)束偽操作(p126) 數(shù)據(jù)定義及存儲器分配偽操作:數(shù)據(jù)定義及存儲器分配偽操作:變量變量 助記符助記符 操作數(shù)操作數(shù) , 操作數(shù)操作數(shù) , ; 注釋注釋 助記符:助記符:DB DW DD DF DQ DTDB

15、 DW DD DF DQ DTDATA_BYTE DB 10,4,10H,?DATA_WORD DW 100,100H,-5,? - - 0AH0AH 04H04H 10H10H - - 64H64H 00H00H 00H00H 01H01H FBHFBH FFHFFH - -DATA_BYTE DATA_BYTE DATA_WORD DATA_WORD 例:ARRAY DB HELLO DB AB DW AB 48H48H 45H45H 4CH4CH 4CH4CH 4FH4FH 41H41H 42H42H 42H42H 41H 41H ARRAY ARRAY PAR1 DW 100,200

16、PAR2 DW 300,400ADDR_TABLE DW PAR1,PAR2VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3)OPER1 DB ?, ?OPER1 DB ?, ?OPER2 DW ?, ?OPER2 DW ?, ? MOV OPER1, 0 MOV OPER1, 0 ; ;字節(jié)指令字節(jié)指令 MOV OPER2, 0 MOV OPER2, 0 ; ;字指令字指令OPER1 DB 1, 2OPER1 DB 1, 2OPER2 DW 1234H, 5678HOPER2 DW 1234H, 5678H MOV AX, OPER1+1 MOV AX,

17、 OPER1+1 MOV AL, OPER2 MOV AL, OPER2 類型不匹配類型不匹配 MOV AX, MOV AX, WORD PTRWORD PTR OPER1+1 OPER1+1 MOV AL, MOV AL, BYTE PTRBYTE PTR OPER2 OPER2(AX)=3402H (AL)=34H(AX)=3402H (AL)=34HBYTE_ARRAY LABEL BYTEWORD_ARRAY DW 50 DUP (?) tos LABEL WORDLABEL 偽操作:偽操作: name LABEL typename LABEL type BYTE_ARRAY BYTE

18、_ARRAY WORD_ARRAY WORD_ARRAY tostos 50字0064H0064H 表達式賦值偽操作:表達式賦值偽操作:表達式名表達式名 EQU 表達式表達式ALPHA EQU 9BETA EQU ALPHA+18BB EQU BP+8 “ = ” 偽操作偽操作 (允許重復(fù)定義允許重復(fù)定義)EMP = 7EMP = EMP+1 地址計數(shù)器與對準偽操作:地址計數(shù)器與對準偽操作:地址計數(shù)器地址計數(shù)器 $ :保存當前正在匯編的指令的地址保存當前正在匯編的指令的地址 ORG $+8 ; 跳過8個字節(jié)的存儲區(qū) JNE $+6 ; 轉(zhuǎn)向地址是 JNE 的首址 +6 JMP $+2 ;轉(zhuǎn)向下

19、一條指令$ 用在偽操作的參數(shù)字段:用在偽操作的參數(shù)字段:表示地址計數(shù)器的當前值表示地址計數(shù)器的當前值 ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4 00H00H 01H 00H 02H 00H 7CH7CH 00H00H 03H 00H 04H 00H 82H82H ARRAY ARRAY 007E007E0078007800740074ORG 偽操作:設(shè)置當前地址計數(shù)器的值偽操作:設(shè)置當前地址計數(shù)器的值SEG1 SEGMENT ORG 10 VAR1 DW 1234H ORG 20 VAR2 DW 5678H ORG $+8 VAR3 DW 1357HSEG1 ENDS

20、BUFFER LABEL BYTE ORG $+8 BUFFER DB 8 DUP (?) ORG 100HSTART: B DW 2 DUP (?) ALIGN boundary:使下一地址從指定的boundary倍數(shù)開始) ALIGN 4 ALIGN 2 ; EVENEVEN: 使下一地址從偶地址開始使下一地址從偶地址開始A DB morningEVEN 基數(shù)控制偽操作:基數(shù)控制偽操作:. RADIX 表達式表達式 ; 規(guī)定無標記數(shù)的數(shù)制MOV BX, 0FFHMOV BX, 178.RADIX 16MOV BX, 0FFMOV BX, 178D3. 匯編語言程序格式匯編語言程序格式標號標

21、號 指令指令 寄存器寄存器 說明程序或語句說明程序或語句變量變量 偽指令偽指令 標號標號 的功能的功能 宏指令宏指令 變量變量 常數(shù)常數(shù) 表達式表達式源程序的每條語句可表示為:源程序的每條語句可表示為: 名字名字 操作操作 操作數(shù)操作數(shù) ; 注釋注釋 標號標號/ /變量:變量:段值、偏移量、類型三種屬性段值、偏移量、類型三種屬性 表達式:表達式:數(shù)字表達式數(shù)字表達式 地址表達式地址表達式表達式操作符:表達式操作符:(1) 算術(shù)操作符:算術(shù)操作符: 、 、 、 、ModVIDEO_BUF DB 25*80*2 DUP(?)ARRAY DW 1,2,3,4,5,6,7ARYEND DW ? MOV

22、 CX, (ARYEND-ARRAY)/2ADD AX, BLOCK+2 ; 符號地址常數(shù) 有意義 ; 時意義不明確MOV AX, BX+1 ; MOV AX, BX+1 ; 寄存器間接尋址OPR1 EQU 25 ;00011001BOPR2 EQU 7 ;00000111BAND AX, OPR1 AND OPR2(2) 邏輯和移位操作符:邏輯和移位操作符: AND、OR、XOR、NOT、SHL、SHR; AND AX,1IN AL, PORT_VAL ;61HOUT PORT_VAL AND 0FEH, AL ;60HMOV AX, 0FFFFH SHL 2; MOV AX,0FFFCH(

23、3) 關(guān)系操作符:關(guān)系操作符: EQ、NE、LT、LE、GT、GE計算結(jié)果為計算結(jié)果為邏輯值邏輯值:真真 0FFFFH0FFFFH 假假 0000H0000HX: Y: 若若 128 (真真) 匯編結(jié)果:匯編結(jié)果: MOV FID, -1若若 128 (假假) 匯編結(jié)果:匯編結(jié)果: MOV FID, 0MOV FID, (OFFSET Y - OFFSET X) LE 128(4) 數(shù)值回送操作符:數(shù)值回送操作符: OFFSET、SEG、TYPE、 LENGTH、SIZE SIZE SIZE 變量變量功能:功能:LENGTH LENGTH * * TYPE TYPEOFFSETOFFSET /

24、 SEGSEG 變量變量 / 標號標號功能:回送變量或標號的偏址功能:回送變量或標號的偏址 / / 段址段址TYPETYPE 變量變量 / 標號標號 / 常數(shù)常數(shù) DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR FAR 常數(shù)常數(shù) 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0LENGTH LENGTH 變量變量功能:回送由功能:回送由DUP定義的定義的變量的單元數(shù),其它情況回送變量的單元數(shù),其它情況回送1 1ARRAY DW 100 DUP (?)TABLE DB ABCD ADD SI, TYPE ARRA

25、Y ; ADD SI, 2ADD SI, TYPE TABLE ; ADD SI, 1MOV CX, LENGTH ARRAY ; MOV CX, 100MOV CX, LENGTH TABLE ; MOV CX, 1MOV CX, SIZE ARRAY ; MOV CX, 200MOV CX, SIZE TABLE ; MOV CX, 1(5) 屬性操作符:屬性操作符: PTR、段操作符、段操作符、SHORT、 THIS、HIGH、LOW、HIGHWORD、LOWWORDHIGH和LOW CONS EQU 1234H MOV AH, HIGHHIGH CONS MOV AL, LOWLOW CONS 類型類型 PTR PTR 表達式表達式 MOV WORD PTRPTR BX, 5段操作符段操作符 MOV ES:ES: BX, ALSHORT

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論