




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章第1個(gè)程序一個(gè)源程序從寫(xiě)出到執(zhí)行的過(guò)程程序加載并運(yùn)行的原理程序執(zhí)行過(guò)程的跟蹤、調(diào)試一、一個(gè)源程序從寫(xiě)出到執(zhí)行的過(guò)程第一步:編寫(xiě)匯編源程序產(chǎn)生文本文件(.txt)第二步:對(duì)源程序編譯產(chǎn)生目標(biāo)文件(.obj)第三步:對(duì)目標(biāo)文件連接產(chǎn)生可執(zhí)行文件(.exe)第四步:執(zhí)行可執(zhí)行文件程序二、源程序
匯編源程序:用匯編語(yǔ)言寫(xiě)出的程序代碼ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADDAX,BX ADDAX,AX MOV AX,4C00H INT 21HCODESG ENDSEND匯編指令:告訴計(jì)算機(jī)如何處理數(shù)據(jù)的命令。例:MOVADDSUBJMPPUSHPOP注:每條匯編指令都有一一對(duì)應(yīng)的機(jī)器代碼,編譯后產(chǎn)生對(duì)應(yīng)的機(jī)器碼,最終被CPU執(zhí)行。1、偽指令:不要求CPU執(zhí)行具體操作,匯編時(shí)不產(chǎn)生機(jī)器碼,僅僅給匯編程序提供相應(yīng)的匯編信息。(程序中段的信息、堆棧的大小、調(diào)用的數(shù)據(jù)庫(kù))ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOV AX,4C00H INT 21HCODESG ENDSEND匯編指令偽指令標(biāo)號(hào)(1)段定義偽指令SEGMENT和ENDS
一個(gè)完整的源程序可由3個(gè)段組成:堆棧段、數(shù)據(jù)段、代碼段。其中堆棧段和數(shù)據(jù)段可以沒(méi)有,但代碼段是必須的。SEGMENT:定義一個(gè)段開(kāi)始。(注:一個(gè)段必須有一個(gè)名稱來(lái)標(biāo)識(shí)。)ENDS:說(shuō)明一個(gè)段的結(jié)束,和SEGMENT成對(duì)使用。格式:
段名SEGMENT段名ENDSASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOV AX,4C00H INT 21HCODESG ENDSEND代碼段(CODE)、數(shù)據(jù)段(DATA)、堆棧段(STACK)(2)匯編結(jié)束偽指令END格式:
END[標(biāo)號(hào)]功能:表示源程序到此結(jié)束。說(shuō)明:一個(gè)源程序必須有且只能有一個(gè)END語(yǔ)句,一般放在源程序的最后一行。ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOV
AX,4C00H INT21HCODESG ENDSEND(3)ASSUME段分配偽指令格式:
ASSUME段寄存器:段名[,段寄存器:段名,…] 用于說(shuō)明源程序中定義的段或組由哪個(gè)寄存器去尋址,即建立寄存器與段間的對(duì)應(yīng)關(guān)系。例:
ASSUMECS:CODE,DS:DATA,SS:STACKCODESEGMENT MOVAX,1234H MOVDS,AXCODE ENDS一般放在源程序首行或代碼段前ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOV
AX,4C00H INT21HCODESG ENDSEND2、源程序中的“程序”ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOVAX,4C00H INT 21HCODESG ENDSEND描述信息B82301BB560403C303C0B8004CCD21編譯連接MOVAX,0123HMOVBX,0456HADD
AX,BXADDAX,AXMOV AX,4C00HINT 21H3、標(biāo)號(hào):代表某一存儲(chǔ)單元地址的名字。字母:A~Z
數(shù)字:0~9特殊字符:?.@_$例:BINASC:MOVAX,BX S2:
MOVAX,BX BIG?:MOVAX,BX注意:數(shù)字不能作名稱的第一個(gè)字符。圓點(diǎn)只能用作第一個(gè)字符,標(biāo)號(hào)最長(zhǎng)為31個(gè)字符。ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX MOV
AX,4C00H INT21HCODESG ENDSEND4、匯編語(yǔ)言源程序的結(jié)構(gòu)
一般來(lái)說(shuō),一個(gè)完整的匯編源程序應(yīng)由三個(gè)程序段組成,即代碼段、數(shù)據(jù)段和堆棧段,每個(gè)段都以SEGMENT開(kāi)始,以ENDS結(jié)束,代碼段包含程序要執(zhí)行的指令;堆棧段用來(lái)在內(nèi)存中建立一個(gè)堆棧區(qū);數(shù)據(jù)段用來(lái)在內(nèi)存中建立一個(gè)適當(dāng)容量的工作區(qū),以存放程序中所需的數(shù)據(jù)。注意:一個(gè)源程序中,代碼段是必須的,而數(shù)據(jù)段和堆棧段可以沒(méi)有或有其中一個(gè)。段定義時(shí)一般最后定義代碼段。4、匯編語(yǔ)言源程序的結(jié)構(gòu)
一般來(lái)說(shuō),一個(gè)完整的匯編源程序應(yīng)由三個(gè)程序段組成,即代碼段、數(shù)據(jù)段和堆棧段,每個(gè)段都以SEGMENT開(kāi)始,以ENDS結(jié)束,代碼段包含程序要執(zhí)行的指令;堆棧段用來(lái)在內(nèi)存中建立一個(gè)堆棧區(qū);數(shù)據(jù)段用來(lái)在內(nèi)存中建立一個(gè)適當(dāng)容量的工作區(qū),以存放程序中所需的數(shù)據(jù)。注意:一個(gè)源程序中,代碼段是必須的,而數(shù)據(jù)段和堆棧段可以沒(méi)有或有其中一個(gè)。段定義時(shí)一般最后定義代碼段。ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTACK SEGMENT DB 500 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTMAIN: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX
CODE ENDS END MAIN定義堆棧段定義數(shù)據(jù)段定義代碼段SEGMENTENDSSEGMENTENDSSEGMENTENDSEND MAINASSUME段分配段結(jié)束例:編程運(yùn)算235、程序返回ASSUME CS:CODESGCODESG SEGMENTSTART: MOVAX,0123H MOVBX,0456H ADD
AX,BX ADDAX,AX
MOV
AX,4C00H INT21HCODESG ENDSEND6、語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤語(yǔ)法錯(cuò)誤:程序在編譯時(shí)被編譯器發(fā)現(xiàn)的錯(cuò)誤。邏輯錯(cuò)誤:源程序編譯后運(yùn)行時(shí)發(fā)生的錯(cuò)誤。一個(gè)源程序執(zhí)行的過(guò)程三、編寫(xiě)匯編源程序使用工具:可使用各種文本編輯工具(記事本、寫(xiě)字板、WORD等),我們使用DOS下的EDIT文本編輯器。功能:產(chǎn)生一個(gè)存儲(chǔ)源程序的文本文件。使用方法:在DOS下運(yùn)行EDIT.EXE程序。1、C:\EDIT2、輸入?yún)R編源程序并保存為.asm文件。四、對(duì)源程序進(jìn)行編譯使用工具:使用MASM5.0編譯器功能:使用編譯器對(duì)源程序文件進(jìn)行編譯,生成包含機(jī)器代碼的目標(biāo)文件(.obj)。使用方法:在DOS下運(yùn)行MASM.EXE程序。1、C:\MASM\MASM.EXE2、輸入要進(jìn)行編譯的源程序文件路徑及名稱。3、輸入進(jìn)行編譯后產(chǎn)生的目標(biāo)文件保存的路徑及名稱。4、輸入列表文件名:5、輸入交叉文件名:五、對(duì)目標(biāo)文件進(jìn)行連接使用工具:使用LINK.EXE連接器功能:對(duì)目標(biāo)文件進(jìn)行連接,從而得到一個(gè)可執(zhí)行文件.EXE。使用方法:在DOS下運(yùn)行LINK.EXE程序。1、C:\MASM\LINK.EXE2、輸入要進(jìn)行連接的目標(biāo)文件路徑及名稱。3、輸入進(jìn)行連接后產(chǎn)生的可執(zhí)行文件.Exe保存的路徑及名稱。4、輸入映像文件名:5、輸入庫(kù)文件名:連接的作用:當(dāng)源程序較大時(shí),編譯器會(huì)將源程序文件分成多個(gè)部分來(lái)編譯,每個(gè)源程序編譯成為目標(biāo)文件后,再用連接程序?qū)⑺鼈冞B接在一起,生成一個(gè)可執(zhí)行文件。程序中調(diào)用了某個(gè)庫(kù)文件中的內(nèi)容時(shí),需要將這個(gè)庫(kù)文件和該程序生成的目標(biāo)文件連接在一起。一個(gè)源程序編譯后,得到了存有機(jī)器碼的目標(biāo)文件,目標(biāo)文件中有的內(nèi)容不能直接生成可執(zhí)行文件,必須通過(guò)連接程序?qū)⑦@些內(nèi)容處理為最終可執(zhí)行的信息。六、以簡(jiǎn)化的方式進(jìn)行編譯和連接忽略中間文件,將產(chǎn)生的目標(biāo)文件和可執(zhí)行文件保存在當(dāng)前路徑下。C:\MASM\MASMXXX;C:\MASM\LINKXXX;七、可執(zhí)行文件.exe的執(zhí)行八、可執(zhí)行文件中的程序裝入內(nèi)存并運(yùn)行的原理CPU內(nèi)存硬盤(pán)DATASEGMENTDATAENDSCODESEGMENTCODEENDScommand操作系統(tǒng)的外殼操作系統(tǒng)是由多個(gè)功能模塊組成的龐大、復(fù)雜的軟件系統(tǒng)。任何通用的操作系統(tǒng),都要提供一個(gè)稱為外殼(shell)的程序,用戶使用這個(gè)程序來(lái)操作計(jì)算機(jī)系統(tǒng)進(jìn)行工作。DOS中有一個(gè)程序,在DOS中稱為命令解釋器,也就是DOS系統(tǒng)的外殼。DOS啟動(dòng)時(shí),先完成其他重要的初始化工作,然后運(yùn)行command,command運(yùn)行后,在屏幕上顯示出“C:\”,然后等待用戶的輸入。如果用戶要執(zhí)行一個(gè)程序,則輸入該程序的可執(zhí)行文件的名稱,command首先根據(jù)文件名找到可執(zhí)行文件,然后將這個(gè)可執(zhí)行文件中的程序加載入內(nèi)存,設(shè)置CS:IP指向程序的入口。此后,command暫停運(yùn)行,由CPU運(yùn)行程序。程序運(yùn)行結(jié)束后,返回到command中。九、程序執(zhí)行過(guò)程的跟蹤使用工具:Debug使用方法:在DOS下運(yùn)行DEBUG.EXE程序。1、C:\DEBUGxxx.EXE在DOS中可執(zhí)行文件.EXE中程序加載的過(guò)程內(nèi)存xxxx:0000PSPxxxx+10h:0000程序1、找到一段起始地址為xxxx:0000的容量足夠的空閑內(nèi)存區(qū)。2、在這段內(nèi)存區(qū)的前256個(gè)字節(jié)中,創(chuàng)建一個(gè)稱為程序段前綴(PSP)的數(shù)據(jù)區(qū),DOS要利用PSP來(lái)和被加載的程序進(jìn)行通信;3、從xxxx+10H:0開(kāi)始,將程序裝入,程序的地址被設(shè)為xxxx+10H:04、將該內(nèi)存區(qū)的段地址存入DS中,初始化其他相關(guān)寄存器后,設(shè)置CS:IP指向程序入口。注意:PSP區(qū)和程序區(qū)雖然物理地址連續(xù),但為更好的區(qū)分,DOS將它們劃分到不同的段中。程序加載后,ds=xxxx為程序加載的段地址。數(shù)據(jù)區(qū)堆棧區(qū)代碼區(qū)1、編程(保存在test.asm)assumecs:codedatasegmentdboffsetstartdataendscodesegmentstart:movax,data movds,ax movbx,[0] jmpbxcodeendsendstart示例一2、匯編Masm
test.asm——生成test.obj3、連接linktest——生成test.exe
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塔里木大學(xué)《數(shù)據(jù)可視化原理及應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 重慶工商大學(xué)派斯學(xué)院《體育教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 南京機(jī)電職業(yè)技術(shù)學(xué)院《細(xì)胞生物學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海城建職業(yè)學(xué)院《學(xué)前兒童家庭教育與社區(qū)教育》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川幼兒師范高等??茖W(xué)?!斗N子經(jīng)營(yíng)管理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西青年職業(yè)學(xué)院《數(shù)據(jù)結(jié)構(gòu)與算法分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北師范大學(xué)文理學(xué)院《電腦輔助設(shè)計(jì)(1)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陜西國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院《第二外語(yǔ)(韓語(yǔ))1》2023-2024學(xué)年第二學(xué)期期末試卷
- 貴州民用航空職業(yè)學(xué)院《混凝土工學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 大慶師范學(xué)院《建筑設(shè)計(jì)理論(三)》2023-2024學(xué)年第二學(xué)期期末試卷
- 智慧教育 云平臺(tái)建設(shè)方案
- 精雕JDPaint快捷鍵大全
- 燈泡貫流式機(jī)組基本知識(shí)培訓(xùn)ppt課件
- 小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)培優(yōu)補(bǔ)差記錄
- 人教版三年級(jí)下冊(cè)體育與健康教案(全冊(cè)教學(xué)設(shè)計(jì))
- DB61∕T 5006-2021 人民防空工程標(biāo)識(shí)標(biāo)準(zhǔn)
- 土壤學(xué)習(xí)題與答案
- 產(chǎn)品結(jié)構(gòu)設(shè)計(jì)(課堂PPT)
- 第九課_靜止的生命
- 尖尖的東西我不碰(課堂PPT)
- 工程勘察和設(shè)計(jì)承攬業(yè)務(wù)的范圍
評(píng)論
0/150
提交評(píng)論