版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第四章匯編語言程序格式主要內(nèi)容:匯編程序功能偽操作匯編語言程序格式匯編語言程序的上機(jī)過程匯編語言1.匯編程序功能編輯程序匯編程序program.asmprogram.obj連接程序program.exe匯編程序的主要功能: 檢查源程序,給出出錯(cuò)信息 產(chǎn)生目標(biāo)文件(.obj)和列表文件(.lst) 展開宏指令匯編語言2.偽操作(偽指令)是匯編程序?qū)υ闯绦蜻M(jìn)行匯編時(shí)處理的操作,完成 處理器選擇、存儲(chǔ)模式定義、數(shù)據(jù)定義、存儲(chǔ)器分配、指示程序開始結(jié)束等功能。 處理器選擇偽操作 段定義偽操作 程序開始和結(jié)束偽操作 數(shù)據(jù)定義及存儲(chǔ)器分配偽操作 表達(dá)式賦值偽操作 地址計(jì)數(shù)器與對準(zhǔn)偽操作 基數(shù)控制偽操作匯編語
2、言處理器選擇偽操作:選擇 8086 指令系統(tǒng)默認(rèn)選擇 80286 指令系統(tǒng)選擇保護(hù)模式下的 80286 指令系統(tǒng)選擇 80386 指令系統(tǒng)選擇保護(hù)模式下的 80386 指令系統(tǒng)選擇 80486 指令系統(tǒng)選擇保護(hù)模式下的 80486 指令系統(tǒng)選擇 Pentium 指令系統(tǒng)選擇保護(hù)模式下的 Pentium 指令系統(tǒng).8086.286.286P.386.386P.486.486P.586.586P匯編語言段定義偽操作:完整的段定義偽操作DS ESSS CS文件頭裝入模塊EXE 程序的內(nèi)存映象圖匯編語言PSPdatasegment; 定義數(shù)據(jù)段dataendsextrasegment; 定義附加段ex
3、traendscodesegment; 定義代碼段assume cs:code, ds:data, es:extrastart:movax, datamovds, ax; 段地址段寄存器codeendsendstart匯編源程序的其它形式:匯編語言codesegment mainprocfarassume start:movax,4c00h int21hmainendp codeendsendstartcodesegment mainprocfarassume start:pushdsmovax, 0pushaxret mainendp codeendsendstart帶堆棧段的匯編源程序:d
4、atasegment ends segment dwtos ends segment proc assumedatastack100labeldup (?)wordstack code mainfarcs:code, ds:data,ss:stackstart:mov mov mov push sub push mov mov ret endp ends endax,ss,sp, ds ax, ax ax,ds,stack ax offsettosDSESSSaxdata axCSmain code匯編語言startPSP堆棧段的情況:stacksegment dwtosends100labe
5、ldup (?)wordstackmov mov movax,ss,sp,stack ax offsettos100字push sub pushds ax, axaxtos 00C8H sp匯編語言datasegmentendsdatastack100labelstacksegment dwtosendsdup (?)wordstackcodestart:segmentpush sub push mov movretds ax, ax ax,ds,axDSESdata axSSCScodeends endstart匯編語言PSPint main()int ar0=0,1,2;int ar1=1
6、,2,3;int ar2=2,3,4;int *p=ar0,ar1,ar2;ar20012FF5C0012FF600012FF64ar10012FF680012FF50p0012FF6C0012FF540012FF700012FF58ar00012FF740012FF78匯編語言0012FF7C0120012FF740012FF680012FF5C123234完整段定義的格式:段名SEGMENT段名ENDS 定位類型 組合類型 使用類型 類別; 語句序列(1)定位類型 align_typePARABYTEWORDDWORDPAGE(2)組合類型 combine_typePRIVATEPUBLI
7、CCOMMONSTACKATexp(3)使用類型 use_typeUSE16USE32(4)類別class匯編語言例:; proadd1.asmextrndataproadd segment ary count sumends: farcommondw dwdw1,2,3,4,5,6,7,8,9,1010?datacode1mainsegment proc assume push sub push movmov call ret endp endsendfarcs:code1, dsds:datastart:ax, ax ax,ds,faraxdata axptr proaddmaincode
8、1匯編語言start; proadd2.asmpublicdataproadd segment ary count sumendscommondw dwdw1,2,3,4,5,6,7,8,9,1010?datacode2proaddsegment proc assume mov mov endp endsendfar cs:code2,ds:data ax, datads, axproaddcode2匯編語言存儲(chǔ)模式與簡化段定義偽操作(1)MODEL 偽操作. MODEL 存儲(chǔ)模式 ,語言類型 ,操作系統(tǒng)類型 ,堆棧選項(xiàng) 存儲(chǔ)模式:tinysmallmediumcompactlargehuge
9、flat(2)簡化的段定義偽操作.code name.data.data?.fardata name.fardata? name.const.stack size匯編語言.modelsmall.stack100H.data.code.startup.exit 0 end匯編語言.model small.data.code.startup.exit 0 end.model small.data.codestart: movax, datamovds, axmovax, 4c00h int21h.model smallendstart.const.data.codestart: movax, DG
10、ROUPmovds, axmovax, 4c00h int21hendstart匯編語言.model small.data.code.startup.exit 0 end段組定義偽操作匯編語言dseg1segmentwordpublicdatadseg1endsdseg2segmentwordpublicdatadseg2endsdatagroupgroupdseg1, dseg2csegsegmentparapubliccodeassumecs:cseg, ds:datagroupstart:movax, datagroup movds, axmovax, 4c00h int21hcsege
11、ndsendstartstart:mov movmov movmov mov movworddwdata1segment const1 endsax, datagroup ds, axax, const1 var1, ax100data1worddwdata2segment var1 ends?bx, offset var1 bx, offset data1 bx, offset data2; (bx) = 2; (bx) = 2; (bx) = 4data2datagroupgroupdata1, data2assumeds:data2movax, data2codesegmentassum
12、ecs:code, ds:datagroupmov mov movmovds, ax ax, var1bx, offset var1ax, 4c00h; (bx) = 2int21h匯編語言codeendsend startstart:movmovmov movmov mov movdata1segment const1 endsax, datagroupds, axax, const1 var1, axbx, offset var1 bx, offset data1 bx, offset data2dw100data1data2segment var1 endsdw?; (bx) = 0;
13、(bx) = 2; (bx) = 2data2datagroupgroupdata1, data2assumeds:data2 movax, data2 movds, axmovax, var1movbx, offset var1movax, 4c00hcodesegmentassumecs:code, ds:datagroup; (bx) = 0int21h codeendsend start匯編語言程序開始和結(jié)束偽操作:TITLE NAMEENDtext module_name label . STARTUP. EXIT return_value 匯編語言數(shù)據(jù)定義及存儲(chǔ)器分配偽操作:操作數(shù)
14、 , 操作數(shù) , ; 注釋 變量助記符助記符:DBDWDDDFDQDTDATA_BYTE DATA_WORD DATA_BYTEDATA_WORDDBDW10,4, 10H,?100, 100H, -5,?匯編語言0AH04H10H-64H00H00H01HFBHFFH-ARRAY ARRAYDB DBDWHELLO ABABPAR1PAR2 ADDR_TABLEDWDW DW100,200300,400PAR1,PAR2VARDBDB100 DUP (?)2 DUP (0,2 DUP(1,2),3)匯編語言48H45H4CH4CH4FH41H42H42H41HOPER1OPER2DB DWM
15、OV MOV?,?,?;字節(jié)指令;字指令OPER1,OPER2,00OPER1OPER2DB DWMOV MOV1, 21234H, 5678HOPER1OPER2AX,AL,OPER1+1OPER2類型不匹配WORD PTRBYTE PTRMOVMOVAX,AL,OPER1+1OPER2(AX)=3402H(AL)=34H匯編語言01H02H34H12H78H56HLABEL 偽操作:nameLABEL typeBYTE_ARRAY WORD_ARRAYBYTE_ARRAY WORD_ARRAYtosLABEL DW 50LABELBYTE DUP (?)WORD50字tos0064H匯編語
16、言表達(dá)式賦值偽操作:EQU表達(dá)式名表達(dá)式B ALPHABETAEQU EQUEQUBP+8 9ALPHA+18“ = ” 偽操作 (允許重復(fù)定義)EMPEMP= 7= EMP+ 1匯編語言地址計(jì)數(shù)器與對準(zhǔn)偽操作:地址計(jì)數(shù)器 $ :保存當(dāng)前正在匯編的指令的地址; 跳過 8 個(gè)字節(jié)的存儲(chǔ)區(qū); 轉(zhuǎn)向地址是 JNE 的首址 + 6ORGJNE$+8$+60074ARRAY 0078$ 用在偽操作的參數(shù)字段:表示地址計(jì)數(shù)器的當(dāng)前值A(chǔ)RRAYDW1,2,$+4,3,4,$+4007E匯編語言01H00H02H00H7CH00H03H00H04H00H82H00HORG 偽操作:SEG1SEGMENTORG
17、 VAR1 ORG VAR2 ORG VAR3ENDS10DW 20 DW$+8DW1234H5678H1357HSEG1匯編語言O(shè)RG100HSTART:BUFFERDB8 DUP (?)BUFFERLABELBYTEORG$+8;使下一地址從偶地址開始EVENADBEVEN DWmorningB2DUP(?)ALIGNboundaryALIGNALIGN42; EVEN匯編語言基數(shù)控制偽操作:; 規(guī)定無標(biāo)記數(shù)的基數(shù). RADIX表達(dá)式匯編語言.RADIX16 MOVBX, 0FFMOVBX, 178DMOVBX, 0FFH MOVBX, 1783.匯編語言程序格式源程序的每條語句可表示為:
18、 名 字 操 作操作數(shù); 注釋標(biāo)號變量指 令 偽指令宏指令寄存器標(biāo)號變量說明程序或語句的功能常數(shù)表達(dá)式標(biāo)號/變量:段值、偏移量、類型三種屬性表達(dá)式:數(shù)字表達(dá)式地址表達(dá)式匯編語言表達(dá)式操作符:(1) 算術(shù)操作符: + 、 - 、 *、 、 modMOVDX, BLOCK+(6-1)*2ARRAYARYENDDW DWMOV1,2,3,4,5,6,7?CX,(ARYEND-ARRAY)/2; 符號地址常數(shù)有意義;*時(shí)意義不明確;ADDAX, BLOCK+2MOVAX, BX+1匯編語言(2) 邏輯和移位操作符: AND、OR、XOR、NOT、SHL、SHROPR1OPR2EQUEQU AND257
19、AX, OPR1 ANDOPR2; AND AX, 1MOVAX,0FFFFHSHL2;MOVAX,0FFFCHINOUTAL,PORT_VALPORT_VAL AND 0FEH,AL匯編語言(3) 關(guān)系操作符: EQ、NE、LT、LE、GT、GE計(jì)算結(jié)果為邏輯值:真假0FFFFH0000HMOVFID,(OFFSETY-OFFSETX)LE128若 128 (真)若 128 (假)匯編結(jié)果:MOV匯編結(jié)果:MOVFID, -1FID, 0匯編語言X:Y:(4) 數(shù)值回送操作符: OFFSET、SEG、TYPE、LENGTH、SIZEOFFSET / SEG變量 / 標(biāo)號功能:回送變量或標(biāo)號的
20、偏址 / 段址變量 / 標(biāo)號 / 常數(shù)TYPE常數(shù)0DB DW DD DF DQ DTNEAR FAR1246810-1-2變量LENGTH功能:回送由 DUP 定義的變量的單元數(shù),其它情況回送1變量SIZE功能:LENGTH * TYPE匯編語言ARRAYTABLEDWDB100DUP(?)ABCDADD ADD MOV MOV MOVMOVSI SI CX CX CXCX,TYPE TYPE LENGTH LENGTH SIZESIZEARRAY TABLE ARRAY TABLE ARRAYTABLE;ADDSI,2;ADDSI,1;MOVCX,100;MOVCX,1;MOVCX,200
21、;MOVCX,1匯編語言(5) 屬性操作符: PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD類型PTR 表達(dá)式MOV MOVJMPWORD PTR BX, 5 ES:BX, ALSHORT NEXT段操作符SHORT 標(biāo)號THIS類型TANEXTEQUEQUTHISTHISBYTEFARCONS MOVMOVEQU AH,AL,1234H HIGHLOWCONSCONS匯編語言4.匯編語言程序的上機(jī)過程用 MASM 6.11 和 CodeView 匯編和調(diào)試匯編語言程序在 MASM6.11 中,Microsoft 公司提供了程序員工作平臺(tái)PWB(pr
22、ogrammers work bench),這是一個(gè)集成化開發(fā)環(huán)境, 程序員可以方便地完成匯編語言源程序的編輯、匯編、連接調(diào)試和執(zhí)行等工作。MASM6 提供的調(diào)試工具是 CodeView,CodeView 是一個(gè)源碼級調(diào)試工具,能支持 16 位和 32 位指令的調(diào)試。其用戶界面是多窗口全屏幕的,用戶可方便地使用菜單和鼠標(biāo)來調(diào)試程序。匯編語言上機(jī)步驟:1設(shè)置環(huán)境變量在MASM611BINR 的目錄下,執(zhí)行new-vars.bat 即可建立環(huán)境參數(shù)和搜索路徑,然后執(zhí)行pwb.exe 即可進(jìn)入PWB 的主窗口。用其文件File 菜單中的Exit 命令可退出PWB。匯編語言23用 File 菜單下的有
23、關(guān)命令建立 asm 文件用 Project 和Options 菜單下的某些命令建立匯編語言程序運(yùn)行環(huán)境建立工程文件,設(shè)置所建立的可執(zhí)行文件類型的Build Options,設(shè)置編譯器選項(xiàng)的Language Options,設(shè)置連接器選項(xiàng)的Link Options,設(shè)置調(diào)試器選項(xiàng)的CodeView Options 等。由于用戶使用時(shí)大部分選項(xiàng)都可采用PWB 提供的默認(rèn)值,因而不必作任何修改。但對于匯編語言程序,還有必要對MASM的選項(xiàng)作出某些選擇。4用 Project 菜單下的有關(guān)命令對源文件進(jìn)行匯編和連接Compile FileBuild Build All編譯(匯編)當(dāng)前的源文件,生成目標(biāo)文
24、件連接目標(biāo)文件,生成可執(zhí)行文件匯編當(dāng)前源文件,連接工程中的所有目標(biāo)文件,生成可執(zhí)行文件56用 Run 菜單下的有關(guān)命令執(zhí)行程序用 CodeView 調(diào)試程序匯編語言匯編語言datasegment string1 string2 mass1 mass2endsmatch.asmdb db dbdbthamks youthanks youmatch., 13, 10, $no match!, 13, 10,$datacodemainsegment procassumefarcs:code,ds:data,es:datastart:push subpushds ax,axaxmov movmovax
25、,ds,es,data axaxlea lea cldmovsi,di,string1string2匯編語言cx,10repzcmpsbatchleadx, mass2 jmpshortdispmatch: leadx, mass1 disp:movah, 09int21hretmainendpcodeendsendstart匯編語言匯編語言匯編語言匯編語言match.lst(1)match.lst(2)匯編語言匯編語言match.lst(3)match1.asmdatasegment string1 mass1 mass2endsdb dbdbthamks youmatch., 13, 10
26、, $no match!,13,10,$dataextrasegment string2endsdbthanks youextracodemainsegmentproc assumefarcs:code, ds:data,es:extrastart:mov movax,ds,dataaxmov movends endax,es,extraaxcode匯編語言start匯編語言match2.asm.modelsmall.datastring1 string2 mass1mass2db db dbdbthamks youthanks you match., 13, 10, $nomatch!,13,10,$.code mainstart:procfarmov mov movendp endax,ds,es,dataax axmainstart匯編語言匯編語言例:.model.code org jmptiny100hmainbegin:;*num1 num2sumdw dwdw1199H1166H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年廣西醫(yī)科大學(xué)公開招聘項(xiàng)目聘用制工作人員備考題庫(七)及答案詳解一套
- 2026年四川天府新區(qū)華陽社區(qū)衛(wèi)生服務(wù)中心(第四次)編外人員招聘的備考題庫及一套完整答案詳解
- 2026年天津市共航城市建設(shè)發(fā)展有限公司面向社會(huì)公開招聘備考題庫完整答案詳解
- 2026年關(guān)于公開招聘專職人民調(diào)解員的備考題庫參考答案詳解
- 2026年云南省紅河州和信公證處招聘備考題庫及答案詳解參考
- 2026年中央國家機(jī)關(guān)某部委所屬事業(yè)單位招聘高校畢業(yè)生備考題庫及參考答案詳解一套
- 2026年廣安市中醫(yī)醫(yī)院招聘8人備考題庫含答案詳解
- 疾控采購內(nèi)控制度
- 醫(yī)保報(bào)銷內(nèi)控制度
- 內(nèi)控控制制度手冊
- 2025年公安部交管局三力測試題庫及答案
- 西工大工程材料金屬材料
- 化妝造型基礎(chǔ)知到章節(jié)答案智慧樹2023年四川音樂學(xué)院
- 2023年承德醫(yī)學(xué)院解剖學(xué)試題庫
- GB/T 2449.1-2021工業(yè)硫磺第1部分:固體產(chǎn)品
- FZ/T 10004-2018棉及化纖純紡、混紡本色布檢驗(yàn)規(guī)則
- 出血性腦梗死的護(hù)理查房課件
- 高三班會(huì)課件學(xué)狀元方法得考試高分
- 新人教版一至二年級體育《第九套廣播體操》公開課課件-25
- 大體積混凝土保供方案1
- 自治區(qū)煙花爆竹實(shí)施細(xì)則
評論
0/150
提交評論