




版權(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)生目標(biāo)文件產(chǎn)生目標(biāo)文件( (.obj.obj) )和列表文件和列表文件( (.lst.lst) )。 展開宏指令。展開宏指令。3. 偽操作(偽指令)偽操作(偽指令)
4、偽操作是匯編程序?qū)υ闯绦蜻M行匯編時處理的偽操作是匯編程序?qū)υ闯绦蜻M行匯編時處理的操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、存儲器分配、指示程序開始結(jié)束等功能。存儲器分配、指示程序開始結(jié)束等功能。 處理器選擇偽操作處理器選擇偽操作 段定義偽操作段定義偽操作 程序開始和結(jié)束偽操作程序開始和結(jié)束偽操作 數(shù)據(jù)定義及存儲器分配偽操作數(shù)據(jù)定義及存儲器分配偽操作 表達式賦值偽操作表達式賦值偽操作 地址計數(shù)器與對準(zhǔn)偽操作地址計數(shù)器與對準(zhǔn)偽操作 基數(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 ax, data mov ax, data mov ds, ax mov ds, ax ; 段地址段地址 段寄存器段寄存器 c
7、ode endscode ends end start end startPSPPSPDSDSESESSSSSCSCSEXE程序的內(nèi)存映象圖裝入模塊文件頭code 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 定位類型定位類型 組合類型組合類型 使用類型使用類
8、型 類別類別 ; 語句序列段名段名 ENDS定位類型 align_type PARA BYTE WORD DWORD PAGEPARA BYTE WORD DWORD PAGE組合類型 combine_type PRIVATE PUBLIC COMMON STACK AT PRIVATE PUBLIC COMMON STACK AT expexp使用類型 use_type USE16 USE32USE16 USE32(4) 類別 class存儲模式與簡化段定義偽操作存儲模式與簡化段定義偽操作(1) MODEL 偽操作偽操作 .MODEL 存儲模式存儲模式 ,語言類型語言類型 ,操作系統(tǒng)類型操作
9、系統(tǒng)類型 ,堆棧選項堆棧選項 存儲模式:存儲模式: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) 簡化的段定義偽操作簡化的段定義偽操作.code name.code name.data.data.data?.data?.fardata name.fardata nam
10、e.fardata? name.fardata? name.const.const.stack size.stack size.model small.model small.data.data.code.code.startup.startup .exit 0.exit 0end end .model small .model small .data .data .code .codestart: mov ax, datastart: mov ax, data mov ds, ax mov ds, ax mov ax, 4c00h mov ax, 4c00h int 21h int 21h
11、end start end start .model small .model small .const .const .data .data .code .codestart: mov ax, DGROUPstart: mov ax, DGROUP mov ds, ax mov ds, ax mov ax, 4c00h mov ax, 4c00h int 21h int 21h end start end start段組定義偽操作段組定義偽操作dseg1 segment word public data dseg1 ends dseg2 segment word public data ds
12、eg2 ends datagroup group dseg1, dseg2datagroup 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 100 const1 dw 100data1 endsdata1 ends data2 segment da
13、ta2 segment wordword var1 dw ? var1 dw ?data2 endsdata2 endsdatagroup group data1,data2datagroup group data1,data2code segment code segment assume cs:code, ds:datagroupassume cs:code, ds:datagroup mov ax, datagroup mov ax, datagroup mov ds, ax mov ds, ax mov ax, const1 mov ax, const1 mov var1, ax mo
14、v var1, ax mov ax, 4c00h mov ax, 4c00h int 21h int 21hcode endscode ends end start end startTITLE textNAME module_nameEND label . STARTUP. EXIT return_value 程序開始和結(jié)束偽操作:程序開始和結(jié)束偽操作: 數(shù)據(jù)定義及存儲器分配偽操作:數(shù)據(jù)定義及存儲器分配偽操作:變量變量 助記符助記符 操作數(shù)操作數(shù) , 操作數(shù)操作數(shù) , ; 注釋注釋 助記符:助記符:DB DW DD DF DQ DTDB DW DD DF DQ DTDATA_BYTE DB
15、10,4,10H,?DATA_WORD DW 100,100H,-5,? - - 0AH0AH 04H04H 10H10H - - 64H64H 00H00H 00H00H 01H 01H 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 PAR2 DW 300,400ADDR_TABLE D
16、W PAR1,PAR2VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3)OPER1 DB ?, ?OPER2 DW ?, ? MOV OPER1, 0 ;字節(jié)指令 MOV OPER2, 0 ;字指令OPER1 DB 1, 2OPER2 DW 1234H, 5678H MOV AX, OPER1+1 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)=34
17、HBYTE_ARRAY LABEL BYTEWORD_ARRAY DW 50 DUP (?) tos LABEL WORDLABEL 偽操作:偽操作: name LABEL typename LABEL type BYTE_ARRAY BYTE_ARRAY WORD_ARRAY WORD_ARRAY tos tos 50字0064H0064H 表達式賦值偽操作:表達式賦值偽操作:表達式名表達式名 EQU 表達式表達式ALPHA EQU 9BETA EQU ALPHA+18BB EQU BP+8 “ = ” 偽操作偽操作 (允許重復(fù)定義允許重復(fù)定義)EMP = 7EMP = EMP+1 地址計數(shù)
18、器與對準(zhǔn)偽操作:地址計數(shù)器與對準(zhǔn)偽操作:地址計數(shù)器地址計數(shù)器 $ :保存當(dāng)前正在匯編的指令的地址保存當(dāng)前正在匯編的指令的地址 ORG $+8 ; 跳過8個字節(jié)的存儲區(qū) JNE $+6 ; 轉(zhuǎn)向地址是 JNE 的首址 +6 JMP $+2 ;轉(zhuǎn)向下一條指令$ 用在偽操作的參數(shù)字段:用在偽操作的參數(shù)字段:表示地址計數(shù)器的當(dāng)前值表示地址計數(shù)器的當(dāng)前值 ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4 00H00H 01H 00H 02H 00H 7CH7CH 00H00H 03H 00H 04H 00H 82H82H ARRAY ARRAY 007E007E007800780074
19、0074ORG 偽操作:偽操作:SEG1 SEGMENT ORG 10 VAR1 DW 1234H ORG 20 VAR2 DW 5678H ORG $+8 VAR3 DW 1357HSEG1 ENDSBUFFER LABEL BYTE ORG $+8 BUFFER DB 8 DUP (?) ORG 100HSTART: B DW 2 DUP (?) ALIGN boundary ALIGN 4 ALIGN 2 ; EVENEVEN ; ;使下一地址從偶地址開始使下一地址從偶地址開始A DB morningEVEN 基數(shù)控制偽操作:基數(shù)控制偽操作:. RADIX 表達式表達式 ; 規(guī)定無標(biāo)記數(shù)
20、的基數(shù)MOV BX, 0FFHMOV BX, 178.RADIX 16MOV BX, 0FFMOV BX, 178D3. 匯編語言程序格式匯編語言程序格式標(biāo)號標(biāo)號 指令指令 寄存器寄存器 說明程序或語句說明程序或語句變量變量 偽指令偽指令 標(biāo)號標(biāo)號 的功能的功能 宏指令宏指令 變量變量 常數(shù)常數(shù) 表達式表達式源程序的每條語句可表示為:源程序的每條語句可表示為: 名字名字 操作操作 操作數(shù)操作數(shù) ; 注釋注釋 標(biāo)號標(biāo)號/ /變量:變量:段值、偏移量、類型三種屬性段值、偏移量、類型三種屬性 表達式:表達式:數(shù)字表達式數(shù)字表達式 地址表達式地址表達式表達式操作符:表達式操作符:(1) 算術(shù)操作符:算
21、術(shù)操作符: 、 、 、 、ModVIDEO_BUF DB 25*80*2 DUP(?)ARRAY DW 1,2,3,4,5,6,7ARYEND DW ? MOV 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,
22、 PORT_VAL ;61HOUT PORT_VAL AND 0FEH, AL ;60HMOV AX, 0FFFFH SHL 2; MOV AX,0FFFCH(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
23、、TYPE、 LENGTH、SIZE SIZE SIZE 變量變量功能:功能:LENGTH LENGTH * * TYPE TYPEOFFSETOFFSET / SEGSEG 變量變量 / 標(biāo)號標(biāo)號功能:回送變量或標(biāo)號的偏址功能:回送變量或標(biāo)號的偏址 / / 段址段址TYPETYPE 變量變量 / 標(biāo)號標(biāo)號 / 常數(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定義的定義的
24、變量的單元數(shù),其它情況回送變量的單元數(shù),其它情況回送1 1ARRAY DW 100 DUP (?)TABLE DB ABCD ADD SI, TYPE ARRAY ; 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、L
25、OW、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 SHORT 標(biāo)號標(biāo)號 JMP SHORTSHORT NEXTTHIS THIS 類型類型 TA EQU THISTHIS BYTE TD DW 1234H NEXT EQU THISTHIS FAR MOV AX,2第4章 匯編語言程序格式匯編語言程序?qū)崿F(xiàn)開始完成編輯源程序工具:任意
26、字處理軟件輸出:純文本的.asm文件匯 編工具:匯編程序MASM輸入:.asm文件輸出:.obj文件、.lst文件、 .crf文件連 接工具:連接程序LINK輸入:.obj文件輸出:.exe文件、.lib文件、.map文件調(diào) 試工具:DEBUG4. 匯編語言程序的上機過程匯編語言程序的上機過程 .model tiny .code org 100hbeginbegin: jmp mainmain;*num1 dw 1199Hnum2 dw 1166Hsum dw ?;*mainmain proc nearnear mov ax, num1 add ax, num2 mov sum, ax mov ax, 4c00h int 21hmain endp end beginbegincode segment code assume cs:code,ds:code,ss:code,es:code org 100Hbegin: jmp mainnum1 dw 1199Hnum2 dw 1166Hsum dw ? main proc near mov ax, num1 add a
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國廢包裝膜行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 三只小豬課件導(dǎo)讀
- 小兒靜脈輸液課件
- 深度解讀技術(shù)管理面試題庫:洞察職場前沿技術(shù)
- 大班健康能干的小腳丫教案
- 大學(xué)生辯論賽流程方案策劃書
- 職場達人必看:高級面試常見問題及答案精 編
- 期貨從業(yè)資格之《期貨法律法規(guī)》強化訓(xùn)練??季砗鸢冈斀猓ㄅ鄡?yōu)b卷)
- 大三學(xué)生實習(xí)個人情況總結(jié)
- 在慶祝教師節(jié)暨總結(jié)表彰大會上的發(fā)言稿
- 礦山用電安全培訓(xùn)課件
- 寧德新能源verify測試題庫
- 鄉(xiāng)鎮(zhèn)道路清掃合同范例
- 治安管理處罰法課件
- 2024年全國職業(yè)院校技能大賽中職組(母嬰照護賽項)考試題庫(含答案)
- 住友變頻器說明書-翻譯
- 2024品牌服務(wù)合同范本
- 常見職業(yè)病危害和預(yù)防基礎(chǔ)知識
- 2025年九省聯(lián)考新高考 物理試卷(含答案解析)
- 辦公耗材項目驗收方案
- 2025屆廣州市高三年級階段訓(xùn)練(8月市調(diào)研摸底) 數(shù)學(xué)試卷(含答案)
評論
0/150
提交評論