




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)二 第一個(gè)匯編語言源程序 補(bǔ)充材料補(bǔ)充材料匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言源程序 用匯編語言編寫的程序稱為用匯編語言編寫的程序稱為匯編源程序匯編源程序。 匯編語言源程序比匯編語言源程序比機(jī)器語言程序容易理解和掌握,也容易調(diào)試和維護(hù)。但是,機(jī)器語言程序容易理解和掌握,也容易調(diào)試和維護(hù)。但是,計(jì)算機(jī)能讀懂的只有機(jī)器指令,必須使用編譯器將匯編語言計(jì)算機(jī)能讀懂的只有機(jī)器指令,必須使用編譯器將匯編語言源程序翻譯成機(jī)器語言程序才可以由計(jì)算機(jī)執(zhí)行。這個(gè)翻譯源程序翻譯成機(jī)器語言程序才可以
2、由計(jì)算機(jī)執(zhí)行。這個(gè)翻譯的過程稱為的過程稱為“匯編匯編”,目前,常用的匯編程序(編譯器)有:,目前,常用的匯編程序(編譯器)有:masm、tasm和和debug等。本教材采用的是等。本教材采用的是masm 5.0宏宏匯編。匯編。用匯編語言編寫程序的工作過程用匯編語言編寫程序的工作過程匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)masm 5.0我們用匯編語言編程,要用到我們用匯編語言編程,要用到 :編輯器(:編輯器(edit)、編譯器)、編譯器(masm)、連接器()、連接器(link)、調(diào)試工具()、調(diào)試工具(debug)等所有)等所有工具,而這些工具都是在操作系統(tǒng)之
3、上運(yùn)行的程序,所以工具,而這些工具都是在操作系統(tǒng)之上運(yùn)行的程序,所以我們的學(xué)習(xí)過程必須在操作系統(tǒng)的環(huán)境中進(jìn)行。我們的學(xué)習(xí)過程必須在操作系統(tǒng)的環(huán)境中進(jìn)行。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)1、編輯源程序、編輯源程序打開記事本或進(jìn)入打開記事本或進(jìn)入dos方式,運(yùn)行方式,運(yùn)行edit,在其中編輯程序,保,在其中編輯程序,保存文件(存文件(*.asm)。如下圖所示:)。如下圖所示:匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)2、 編譯編譯進(jìn)入進(jìn)入dos方式,進(jìn)入方式,進(jìn)入 c:masm 目錄,運(yùn)行目錄,運(yùn)行masm.exe。在輸入源程序
4、文件名的時(shí)候一定要指明它所在的路徑。如在輸入源程序文件名的時(shí)候一定要指明它所在的路徑。如果文件就在當(dāng)前路徑下,只輸入文件名就可以。然后一路果文件就在當(dāng)前路徑下,只輸入文件名就可以。然后一路回車,產(chǎn)生的目標(biāo)文件名(回車,產(chǎn)生的目標(biāo)文件名(.obj)默認(rèn)與源文件名一致)默認(rèn)與源文件名一致.編譯結(jié)束,編譯器輸出的最后兩行告訴我們這個(gè)源程序有編譯結(jié)束,編譯器輸出的最后兩行告訴我們這個(gè)源程序有沒有警告錯(cuò)誤和必須要改正的致命錯(cuò)誤。沒有警告錯(cuò)誤和必須要改正的致命錯(cuò)誤。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)以簡(jiǎn)化的方式進(jìn)行編譯以簡(jiǎn)化的方式進(jìn)行編譯編譯:編譯:匯編語言程序設(shè)計(jì)匯
5、編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)3、 連接連接在對(duì)源程序(在對(duì)源程序(*.asm)進(jìn)行編譯得到目標(biāo)文件()進(jìn)行編譯得到目標(biāo)文件(*.obj)后,)后,我們需要對(duì)目標(biāo)文件進(jìn)行連接,從而得到可執(zhí)行文件我們需要對(duì)目標(biāo)文件進(jìn)行連接,從而得到可執(zhí)行文件(*.exe)。)。連接程序默認(rèn)要輸出的可執(zhí)行文件名為連接程序默認(rèn)要輸出的可執(zhí)行文件名為 1.exe ,所以不必再,所以不必再另行指定文件名。我們直接按另行指定文件名。我們直接按 enter 鍵。鍵。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)以簡(jiǎn)化的方式進(jìn)行連接以簡(jiǎn)化的方式進(jìn)行連接連接:連接:匯編語言程序
6、設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)連接的作用有以下幾個(gè):連接的作用有以下幾個(gè):當(dāng)源程序很大時(shí),可以將它分為多個(gè)源程序文件來編譯,每當(dāng)源程序很大時(shí),可以將它分為多個(gè)源程序文件來編譯,每個(gè)源程序編譯成為目標(biāo)文件后,再用連接程序?qū)⑺鼈冞B接到個(gè)源程序編譯成為目標(biāo)文件后,再用連接程序?qū)⑺鼈冞B接到一起,生成一個(gè)可執(zhí)行文件;一起,生成一個(gè)可執(zhí)行文件;程序中調(diào)用了某個(gè)庫文件中的子程序,需要將這個(gè)庫文件和程序中調(diào)用了某個(gè)庫文件中的子程序,需要將這個(gè)庫文件和該程序生成的目標(biāo)文件連接到一起,生成一個(gè)可執(zhí)行文件;該程序生成的目標(biāo)文件連接到一起,生成一個(gè)可執(zhí)行文件;一個(gè)源程序編譯后,得到了存有
7、機(jī)器碼的目標(biāo)文件,目標(biāo)文一個(gè)源程序編譯后,得到了存有機(jī)器碼的目標(biāo)文件,目標(biāo)文件中的有些內(nèi)容還不能直接用來生成可執(zhí)行文件,連接程序件中的有些內(nèi)容還不能直接用來生成可執(zhí)行文件,連接程序?qū)⑦@些內(nèi)容處理為最終的可執(zhí)行信息。將這些內(nèi)容處理為最終的可執(zhí)行信息。 所以,在只有一個(gè)源程序文件,而又不需要調(diào)用某個(gè)庫所以,在只有一個(gè)源程序文件,而又不需要調(diào)用某個(gè)庫中的子程序的情況下,也必須用連接程序?qū)δ繕?biāo)文件進(jìn)行處中的子程序的情況下,也必須用連接程序?qū)δ繕?biāo)文件進(jìn)行處理,生成可執(zhí)行文件。理,生成可執(zhí)行文件。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)4、 執(zhí)行執(zhí)行現(xiàn)在,終于將我們的第一個(gè)
8、匯編程序加工成了一個(gè)可在操作系統(tǒng)下執(zhí)現(xiàn)在,終于將我們的第一個(gè)匯編程序加工成了一個(gè)可在操作系統(tǒng)下執(zhí)行的程序文件。行的程序文件。1.exe的執(zhí)行情況:的執(zhí)行情況:程序到底運(yùn)行沒有?程序到底運(yùn)行沒有?程序當(dāng)然運(yùn)行了,只是從屏幕上不可能看到任何運(yùn)行結(jié)果。程序當(dāng)然運(yùn)行了,只是從屏幕上不可能看到任何運(yùn)行結(jié)果。我們的程序沒有像顯示器輸出任何信息。程序只是做了一些將數(shù)據(jù)送我們的程序沒有像顯示器輸出任何信息。程序只是做了一些將數(shù)據(jù)送入寄存器和加法的操作,而這些事情,我們不可能從顯示屏上看出來。入寄存器和加法的操作,而這些事情,我們不可能從顯示屏上看出來。程序執(zhí)行完成后返回,屏幕上再次出現(xiàn)操作系統(tǒng)的提示符。程序執(zhí)
9、行完成后返回,屏幕上再次出現(xiàn)操作系統(tǒng)的提示符。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)5、使用、使用debug調(diào)試和運(yùn)行可執(zhí)行文件調(diào)試和運(yùn)行可執(zhí)行文件 在初次使用在初次使用debugdebug時(shí),可參照下列步驟進(jìn)行時(shí),可參照下列步驟進(jìn)行: : 1、調(diào)用、調(diào)用debug,裝入用戶程序,裝入用戶程序2、u命令反匯編程序,記錄代碼段與數(shù)據(jù)段首地址命令反匯編程序,記錄代碼段與數(shù)據(jù)段首地址3、r觀察寄存器初始狀態(tài)觀察寄存器初始狀態(tài) 4、以單步工作方式、以單步工作方式t開始運(yùn)行程序開始運(yùn)行程序 5、d觀察用戶程序數(shù)據(jù)段初始內(nèi)容觀察用戶程序數(shù)據(jù)段初始內(nèi)容6、繼續(xù)以單步工作方式
10、運(yùn)行程序、繼續(xù)以單步工作方式運(yùn)行程序 7g連續(xù)工作方式運(yùn)行程序連續(xù)工作方式運(yùn)行程序 8e或或a修改程序和數(shù)據(jù)修改程序和數(shù)據(jù) 9運(yùn)用斷點(diǎn)調(diào)試程序運(yùn)用斷點(diǎn)調(diào)試程序 g匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)6、源程序、源程序匯編指令:匯編指令:有對(duì)應(yīng)的機(jī)器碼,有對(duì)應(yīng)的機(jī)器碼,可被機(jī)器執(zhí)行的指令??杀粰C(jī)器執(zhí)行的指令。偽指令:偽指令:沒有對(duì)應(yīng)機(jī)器碼,沒有對(duì)應(yīng)機(jī)器碼,有編譯器執(zhí)行的指令。有編譯器執(zhí)行的指令。 xxx segment xxx ends end assume匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)定義一個(gè)段定義一個(gè)段 segme
11、nt和和ends是一對(duì)成對(duì)使用的偽指令,這是在寫可被是一對(duì)成對(duì)使用的偽指令,這是在寫可被編譯器編譯的匯編程序時(shí),必須要用到的一對(duì)偽指令。編譯器編譯的匯編程序時(shí),必須要用到的一對(duì)偽指令。功能功能:定義一個(gè)段,:定義一個(gè)段,segment說明一個(gè)段開始,說明一個(gè)段開始,ends 說明說明一個(gè)段結(jié)束。一個(gè)段必須有一個(gè)名稱來標(biāo)識(shí),使用格式為:一個(gè)段結(jié)束。一個(gè)段必須有一個(gè)名稱來標(biāo)識(shí),使用格式為: 段名段名 segment 段名段名 ends一個(gè)匯編程序是由多個(gè)段組成的,這些段被用來存放代碼、一個(gè)匯編程序是由多個(gè)段組成的,這些段被用來存放代碼、數(shù)據(jù)或當(dāng)作??臻g來使用。一個(gè)有意義的匯編程序中至少數(shù)據(jù)或當(dāng)作棧
12、空間來使用。一個(gè)有意義的匯編程序中至少要有一個(gè)段,這個(gè)段用來存放代碼。(要有一個(gè)段,這個(gè)段用來存放代碼。(匯編語言源程序至匯編語言源程序至少要有一個(gè)代碼段少要有一個(gè)代碼段)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序結(jié)束標(biāo)記程序結(jié)束標(biāo)記end 是一個(gè)匯編程序的結(jié)束標(biāo)記,編譯器在編譯匯編程是一個(gè)匯編程序的結(jié)束標(biāo)記,編譯器在編譯匯編程序的過程中,如果碰到了偽指令序的過程中,如果碰到了偽指令 end,就結(jié)束對(duì)源程序,就結(jié)束對(duì)源程序的編譯。的編譯。如果程序?qū)懲炅?,要在結(jié)尾處加上偽指令如果程序?qū)懲炅?,要在結(jié)尾處加上偽指令end 。否則,。否則,編譯器在編譯程序時(shí),無法知道
13、程序在何處結(jié)束。編譯器在編譯程序時(shí),無法知道程序在何處結(jié)束。注意:不要搞混了注意:不要搞混了end和和ends。通知編譯器程序通知編譯器程序結(jié)束結(jié)束通知編譯器一個(gè)通知編譯器一個(gè)段結(jié)束段結(jié)束匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)寄存器與段的關(guān)聯(lián)假設(shè)寄存器與段的關(guān)聯(lián)假設(shè)assume:含義為:含義為“假設(shè)假設(shè)”。它假設(shè)某一段寄存器和程序中的某一個(gè)用它假設(shè)某一段寄存器和程序中的某一個(gè)用 segment ends 定義的段相關(guān)聯(lián)。定義的段相關(guān)聯(lián)。通過通過assume說明這種關(guān)聯(lián),在需要的情況下說明這種關(guān)聯(lián),在需要的情況下 ,編譯程序可以將段寄存器和某一個(gè)具體的段編譯程序
14、可以將段寄存器和某一個(gè)具體的段相聯(lián)系。相聯(lián)系。格式格式 段寄存器:段名段寄存器:段名 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)標(biāo)號(hào)標(biāo)號(hào) 一個(gè)標(biāo)號(hào)指代了一個(gè)地址。一個(gè)標(biāo)號(hào)指代了一個(gè)地址。 codesg:放在:放在segment的前面,作為一個(gè)段的前面,作為一個(gè)段的名稱,這個(gè)段的名稱最終將被編譯、連的名稱,這個(gè)段的名稱最終將被編譯、連接程序處理為一個(gè)段的段地址。接程序處理為一個(gè)段的段地址。 start: 放在程序的開始,是程序的入口,放在程序的開始,是程序的入口,編譯時(shí)被處理為該條指令的偏移地址。編譯時(shí)被處理為該條指令的偏移地址。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編
15、語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序返回程序返回這兩條指令所實(shí)現(xiàn)的功能是程序返回。這兩條指令所實(shí)現(xiàn)的功能是程序返回。我們知道,我們知道,一個(gè)程序結(jié)束后,將一個(gè)程序結(jié)束后,將cpu的控制權(quán)交還給使它得以的控制權(quán)交還給使它得以運(yùn)行的程序,我們稱這個(gè)過程為:程序返回。運(yùn)行的程序,我們稱這個(gè)過程為:程序返回。 dos中的程序運(yùn)行:中的程序運(yùn)行: dos是一個(gè)單任務(wù)操作系統(tǒng)。是一個(gè)單任務(wù)操作系統(tǒng)。一個(gè)程序一個(gè)程序p2在可執(zhí)行文件中,則必須有一個(gè)正在運(yùn)行在可執(zhí)行文件中,則必須有一個(gè)正在運(yùn)行的程序的程序p1,將,將p2從可執(zhí)行文件中加載入內(nèi)存后,將從可執(zhí)行文件中加載入內(nèi)存后,將cpu的控制權(quán)交給的控制權(quán)
16、交給p2,p2才能得以運(yùn)行。才能得以運(yùn)行。p2開始運(yùn)行開始運(yùn)行后,后,p1暫停運(yùn)行。而當(dāng)暫停運(yùn)行。而當(dāng)p2運(yùn)行完畢后,應(yīng)該將運(yùn)行完畢后,應(yīng)該將cpu的的控制權(quán)交還給使它得以運(yùn)行的程序控制權(quán)交還給使它得以運(yùn)行的程序p1,此后,此后,p1繼續(xù)繼續(xù)運(yùn)行。運(yùn)行。 mov ax,4c00h int 21h匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)編寫源程序編寫源程序 任務(wù):編程運(yùn)算任務(wù):編程運(yùn)算 23。 定義一個(gè)段定義一個(gè)段 實(shí)現(xiàn)處理任務(wù)實(shí)現(xiàn)處理任務(wù) 程序返回程序返回 程序結(jié)束程序結(jié)束 段與段寄存器關(guān)聯(lián)段與段寄存器關(guān)聯(lián) 匯編程序匯編程序 assume cs:code cod
17、e segment mov ax, 2 add ax,ax add ax,ax mov ax,4c00h int 21h code ends end 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)語法錯(cuò)誤和邏輯錯(cuò)誤語法錯(cuò)誤和邏輯錯(cuò)誤 語法錯(cuò)誤語法錯(cuò)誤 程序在編譯時(shí)被編譯器發(fā)現(xiàn)的錯(cuò)誤;程序在編譯時(shí)被編譯器發(fā)現(xiàn)的錯(cuò)誤; 容易發(fā)現(xiàn)。容易發(fā)現(xiàn)。 aume cs:abc abc segment mov ax,2 add ax,ax add ax,ax end匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)語法錯(cuò)誤和邏輯錯(cuò)誤語法錯(cuò)誤和邏輯錯(cuò)誤 邏輯錯(cuò)誤邏輯
18、錯(cuò)誤 程序在編譯時(shí)不能表現(xiàn)出來的、在運(yùn)行時(shí)發(fā)程序在編譯時(shí)不能表現(xiàn)出來的、在運(yùn)行時(shí)發(fā)生的錯(cuò)誤;生的錯(cuò)誤; 不容易發(fā)現(xiàn)。不容易發(fā)現(xiàn)。 assume cs:abc abc segment mov ax,2 add ax,ax add ax,ax mov ax,4c00h int 21h abc ends end 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序經(jīng)編譯連接后變?yōu)闄C(jī)器碼程序經(jīng)編譯連接后變?yōu)闄C(jī)器碼操作系統(tǒng)依照可執(zhí)行文件中的描述信操作系統(tǒng)依照可執(zhí)行文件中的描述信息,將可執(zhí)行文件中的機(jī)器碼和數(shù)據(jù)息,將可執(zhí)行文件中的機(jī)器碼和數(shù)據(jù)加載入內(nèi)存,并進(jìn)行相關(guān)的初始化加載入內(nèi)存
19、,并進(jìn)行相關(guān)的初始化(比如:設(shè)置(比如:設(shè)置cs:ip指向第一條要執(zhí)行指向第一條要執(zhí)行的指令),然后由的指令),然后由cpu執(zhí)行程序。執(zhí)行程序。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序執(zhí)行過程的跟蹤程序執(zhí)行過程的跟蹤為了觀察程序的運(yùn)行過程為了觀察程序的運(yùn)行過程 ,我們可以使用,我們可以使用debug。debug 可以將程序加載入內(nèi)存,并設(shè)置可以將程序加載入內(nèi)存,并設(shè)置cs:ip指向指向程序的入口,但程序的入口,但debug并不放棄對(duì)并不放棄對(duì)cpu 的控制,的控制,這樣,我們就可以使用這樣,我們就可以使用debug 的相關(guān)命令來單步的相關(guān)命令來單步執(zhí)行程序執(zhí)
20、行程序 ,查看每條指令的執(zhí)行結(jié)果。,查看每條指令的執(zhí)行結(jié)果。現(xiàn)在現(xiàn)在debug已將已將 1.exe 中的程序裝入內(nèi)存,接下來中的程序裝入內(nèi)存,接下來我們查看一下它的內(nèi)容,可是我們查看哪里的內(nèi)我們查看一下它的內(nèi)容,可是我們查看哪里的內(nèi)容呢?容呢?程序又被裝入內(nèi)存的什么地方?程序又被裝入內(nèi)存的什么地方?匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序執(zhí)行過程的跟蹤程序執(zhí)行過程的跟蹤首先用首先用r命令看一下各個(gè)寄存器的設(shè)置情況:命令看一下各個(gè)寄存器的設(shè)置情況:可以看到,可以看到,debug將程序從可執(zhí)行文件加載入內(nèi)存后,將程序從可執(zhí)行文件加載入內(nèi)存后,cx中存放的是程序的
21、長度。中存放的是程序的長度。1.exe 中程序的機(jī)器碼共有中程序的機(jī)器碼共有15個(gè)字節(jié)。個(gè)字節(jié)。在在dos系統(tǒng)中系統(tǒng)中.exe文件中的程序的加載過程如下:文件中的程序的加載過程如下:匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)exe文件中的程序的加載過程文件中的程序的加載過程總結(jié):總結(jié):程序加載后,程序加載后,ds中存放著程序所在內(nèi)存區(qū)的段地址,這個(gè)內(nèi)中存放著程序所在內(nèi)存區(qū)的段地址,這個(gè)內(nèi)存區(qū)的偏移地址為存區(qū)的偏移地址為 0 ,則程序所在的內(nèi)存區(qū)的地址為:,則程序所在的內(nèi)存區(qū)的地址為:ds:0;這個(gè)內(nèi)存區(qū)的前這個(gè)內(nèi)存區(qū)的前256 (100h) 個(gè)字節(jié)中存放的是個(gè)字節(jié)
22、中存放的是psp,dos用來和程序進(jìn)行通信。從用來和程序進(jìn)行通信。從 256字節(jié)處向后的空間存放的是程序,字節(jié)處向后的空間存放的是程序,所以程序的物理地址是:所以程序的物理地址是: sa16+0+256= sa16+1616=(sa+16)16+0 可用段地址和偏移地址表示為:可用段地址和偏移地址表示為:sa+10:0 即即cs=ds+10h,ip=0。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)用用u命令查看程序指令:命令查看程序指令:匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)用用t命令單步執(zhí)行程序中的每一條指令,并觀察每條指令命令單
23、步執(zhí)行程序中的每一條指令,并觀察每條指令的執(zhí)行結(jié)果,到了的執(zhí)行結(jié)果,到了 int 21,我們要用,我們要用p命令執(zhí)行:命令執(zhí)行:int 21 執(zhí)行后,顯示執(zhí)行后,顯示“program terminated normally”,返,返回到回到debug中。表示程序正常結(jié)束。中。表示程序正常結(jié)束。那程序返回到哪里呢?那程序返回到哪里呢?匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)程序執(zhí)行過程的跟蹤程序執(zhí)行過程的跟蹤注意:我們?cè)谧⒁猓何覀冊(cè)?dos中用中用 “debug 1.exe” 運(yùn)行運(yùn)行debug對(duì)對(duì)1.exe進(jìn)行跟蹤時(shí),程序加載的順序是:進(jìn)行跟蹤時(shí),程序加載的順序
24、是:command加載加載debug,debug加載加載1.exe。返回的順序是:從返回的順序是:從1.exe中的程序返回到中的程序返回到debug,從,從debug返返回到回到command。使用。使用q命令退出命令退出debug,則返回到,則返回到command中,因?yàn)橹?,因?yàn)閐ebug是由是由command加載運(yùn)行的。加載運(yùn)行的。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)標(biāo)志寄存器標(biāo)志寄存器(psw) 8086cpu中有一個(gè)很重要的中有一個(gè)很重要的16位標(biāo)志寄存器,位標(biāo)志寄存器,它包含它包含9個(gè)標(biāo)志位,由個(gè)標(biāo)志位,由6位條件碼標(biāo)志位條件碼標(biāo)志(flag)和和
25、3位控位控制標(biāo)志構(gòu)成。主要用于保存一條指令執(zhí)行后,制標(biāo)志構(gòu)成。主要用于保存一條指令執(zhí)行后,cpu所處狀態(tài)信息及運(yùn)算結(jié)果的特征。所處狀態(tài)信息及運(yùn)算結(jié)果的特征。 1條件標(biāo)志條件標(biāo)志 :用來反映用來反映eu執(zhí)行算術(shù)和邏輯運(yùn)執(zhí)行算術(shù)和邏輯運(yùn)算以后的結(jié)果特征。算以后的結(jié)果特征。 2狀態(tài)控制標(biāo)志狀態(tài)控制標(biāo)志 :用來控制用來控制cpu的工作方式的工作方式或工作狀態(tài)或工作狀態(tài) 。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 01)條件標(biāo)志)條件標(biāo)志(1)of溢出標(biāo)志:溢出標(biāo)志:溢出時(shí)溢出時(shí)of=1,否則,否則of
26、= 0。(2)sf符號(hào)標(biāo)志:符號(hào)標(biāo)志:結(jié)果為負(fù)時(shí)結(jié)果為負(fù)時(shí)sf=1,否則否則sf=0。(3)zf零標(biāo)志:零標(biāo)志:結(jié)果為結(jié)果為0時(shí)時(shí)zf=1,否則,否則zf=0。(4)cf進(jìn)位標(biāo)志:記錄運(yùn)算時(shí)從最高有效位產(chǎn)生的進(jìn)位或借進(jìn)位標(biāo)志:記錄運(yùn)算時(shí)從最高有效位產(chǎn)生的進(jìn)位或借位值。位值。當(dāng)最高有效位有進(jìn)位或借位時(shí)當(dāng)最高有效位有進(jìn)位或借位時(shí)cf=1,否則置否則置cf=0。(5)af輔助進(jìn)位標(biāo)志:記錄運(yùn)算時(shí)第輔助進(jìn)位標(biāo)志:記錄運(yùn)算時(shí)第3位位(字節(jié)運(yùn)算字節(jié)運(yùn)算)或第或第7位位(字運(yùn)算)產(chǎn)生的進(jìn)位或借位值(字運(yùn)算)產(chǎn)生的進(jìn)位或借位值。例如,執(zhí)行加法指令時(shí)第例如,執(zhí)行加法指令時(shí)第3位有進(jìn)位位有進(jìn)位時(shí)時(shí)af=1,否則否
27、則af=0。 ofdfiftfsfzfafpfcf匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn) (6)pf奇偶標(biāo)志:用來檢驗(yàn)機(jī)器傳送信息時(shí)可能產(chǎn)生的代碼出錯(cuò)奇偶標(biāo)志:用來檢驗(yàn)機(jī)器傳送信息時(shí)可能產(chǎn)生的代碼出錯(cuò)情況。情況。當(dāng)結(jié)果操作數(shù)中當(dāng)結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)的個(gè)數(shù)為偶數(shù)時(shí)pf=l,否則否則pf=0。2)控制標(biāo)志)控制標(biāo)志 (1)df方向標(biāo)志,方向標(biāo)志,當(dāng)當(dāng)df位為位為1時(shí),每次操作后使變址寄存器時(shí),每次操作后使變址寄存器si和和di減量;當(dāng)減量;當(dāng)df為為0時(shí),則使時(shí),則使si和和di增量。增量。 (2)if中斷標(biāo)志,中斷標(biāo)志,if為為l時(shí),開中斷,否則關(guān)中斷。
28、時(shí),開中斷,否則關(guān)中斷。 (3)tf陷阱標(biāo)志,陷阱標(biāo)志,tf=1時(shí),每條指令執(zhí)行完后產(chǎn)生陷井,時(shí),每條指令執(zhí)行完后產(chǎn)生陷井,tf=0時(shí),時(shí),cpu正常工作不產(chǎn)生陷開。正常工作不產(chǎn)生陷開。 其中控制標(biāo)志是系統(tǒng)程序或用戶程序根據(jù)需要用指令設(shè)置的。而其中控制標(biāo)志是系統(tǒng)程序或用戶程序根據(jù)需要用指令設(shè)置的。而狀態(tài)信息是由中央處理機(jī)根據(jù)計(jì)算結(jié)果自動(dòng)設(shè)置的。狀態(tài)信息是由中央處理機(jī)根據(jù)計(jì)算結(jié)果自動(dòng)設(shè)置的。 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)3)標(biāo)志位舉例)標(biāo)志位舉例【例例1 1】執(zhí)行以下兩數(shù)的加法操作,判斷各標(biāo)志位的狀態(tài)。執(zhí)行以下兩數(shù)的加法操作,判斷各標(biāo)志位的狀態(tài)。 00
29、10 0011 0100 0101 + 0011 0010 0001 1001 0101 0101 0101 1110執(zhí)行以上操作后,各條件標(biāo)志位的狀態(tài)應(yīng)為:執(zhí)行以上操作后,各條件標(biāo)志位的狀態(tài)應(yīng)為: of=0(nv) sf=0(pl) zf=0(nz) af=0(na) pf=0(po) cf=0(nv) 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)debug中標(biāo)志位的符號(hào)表示中標(biāo)志位的符號(hào)表示標(biāo)志標(biāo)志 1 0of ov nvdf dn upif ei disf ng plzf zr nz af ac napf pe pocf cy nc 匯編語言程序設(shè)計(jì)匯編語言程
30、序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)【例例2】 執(zhí)行加法操作。執(zhí)行加法操作。 1010 1011 0000 0000 + 1111 1111 1111 1111 1010 1010 1111 1111 執(zhí)行操作后,各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)為:執(zhí)行操作后,各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)為: cf pf af zf= sf= of=【例例3】 執(zhí)行加法操作。執(zhí)行加法操作。 0110 0100 0000 0000 + 0110 0100 0000 0000 1100 1000 0000 0000執(zhí)行以上加法操作后,各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)為:執(zhí)行以上加法操作后,各狀態(tài)標(biāo)志位的狀態(tài)應(yīng)為: cf= pf= af
31、= zf sf= of=110010000011匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)sf、cf、of標(biāo)志標(biāo)志sf符號(hào)標(biāo)志位:主要是記錄符號(hào)標(biāo)志位:主要是記錄有符號(hào)數(shù)運(yùn)算有符號(hào)數(shù)運(yùn)算的結(jié)的結(jié)果符號(hào),對(duì)于無符號(hào)數(shù)運(yùn)算,該標(biāo)志位沒有意果符號(hào),對(duì)于無符號(hào)數(shù)運(yùn)算,該標(biāo)志位沒有意義。它記錄指令執(zhí)行后,義。它記錄指令執(zhí)行后, 結(jié)果為負(fù),sf = 1; 結(jié)果為正,sf = 0。有符號(hào)數(shù)與補(bǔ)碼有符號(hào)數(shù)與補(bǔ)碼計(jì)算機(jī)中通常用補(bǔ)碼來表示有符號(hào)數(shù)據(jù)。計(jì)算機(jī)中的一計(jì)算機(jī)中通常用補(bǔ)碼來表示有符號(hào)數(shù)據(jù)。計(jì)算機(jī)中的一個(gè)數(shù)據(jù)可以看作是有符號(hào)數(shù),也可以看成是無符號(hào)數(shù)。個(gè)數(shù)據(jù)可以看作是有符號(hào)數(shù),也
32、可以看成是無符號(hào)數(shù)。關(guān)鍵看程序員需要的是什么數(shù)。關(guān)鍵看程序員需要的是什么數(shù)。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)有符號(hào)數(shù)與補(bǔ)碼有符號(hào)數(shù)與補(bǔ)碼比如:比如: 00000001b ,可以看作為無符號(hào)數(shù) 1 ,或有符號(hào)數(shù)1; 10000001b ,可以看作為無符號(hào)數(shù)129,也可以看作有符號(hào)數(shù)-127。 示例 mov al,10000001b add al,1 結(jié)果: (al)=10000010b,sf=1當(dāng)作無符號(hào)數(shù)運(yùn)算,那么當(dāng)作無符號(hào)數(shù)運(yùn)算,那么add指令相當(dāng)于指令相當(dāng)于計(jì)算計(jì)算129+1,結(jié)果為,結(jié)果為130(10000010b););當(dāng)作有符號(hào)數(shù)運(yùn)算,那么當(dāng)作
33、有符號(hào)數(shù)運(yùn)算,那么add計(jì)算計(jì)算-127+1,結(jié)果為,結(jié)果為-126(10000010b)。)。不管我們?nèi)绾慰创?,不管我們?nèi)绾慰创?,cpu 在執(zhí)行在執(zhí)行add等指等指令的時(shí)候,就已經(jīng)包含了兩種含義,也將令的時(shí)候,就已經(jīng)包含了兩種含義,也將得到用同一種信息來記錄的兩種結(jié)果。關(guān)得到用同一種信息來記錄的兩種結(jié)果。關(guān)鍵在于我們的程序需要哪一種結(jié)果。鍵在于我們的程序需要哪一種結(jié)果。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)sf、cf、of標(biāo)志標(biāo)志of溢出標(biāo)志溢出標(biāo)志:記錄有符號(hào)數(shù)運(yùn)算結(jié)果是否正確。:記錄有符號(hào)數(shù)運(yùn)算結(jié)果是否正確。 在進(jìn)行有符號(hào)數(shù)運(yùn)算的時(shí)候,如結(jié)果超過了機(jī)器所
34、能表示的在進(jìn)行有符號(hào)數(shù)運(yùn)算的時(shí)候,如結(jié)果超過了機(jī)器所能表示的范圍稱為范圍稱為溢出,溢出,發(fā)生溢出,結(jié)果不正確。發(fā)生溢出,結(jié)果不正確。機(jī)器所能表示的范圍是多少呢?機(jī)器所能表示的范圍是多少呢?-2n-1 +2n-1-1比如:比如:add al,3 ,那么對(duì)于,那么對(duì)于 8 位的有符號(hào)數(shù)據(jù),機(jī)器所能表位的有符號(hào)數(shù)據(jù),機(jī)器所能表示的范圍就是示的范圍就是-128127。 add ax,3 ,對(duì)于,對(duì)于16 位有符號(hào)數(shù),機(jī)器所能表示的范圍是位有符號(hào)數(shù),機(jī)器所能表示的范圍是-3276832767。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)of標(biāo)志標(biāo)志注意注意,這里所講的溢出,只
35、是對(duì)有符號(hào)數(shù)運(yùn)算而言,這里所講的溢出,只是對(duì)有符號(hào)數(shù)運(yùn)算而言,對(duì)無符號(hào)對(duì)無符號(hào)數(shù)沒有意義數(shù)沒有意義比如比如 mov al,98 add al,99執(zhí)行后將產(chǎn)生溢出執(zhí)行后將產(chǎn)生溢出of=1。因?yàn)榻Y(jié)果。因?yàn)榻Y(jié)果197超出了機(jī)器所能表示超出了機(jī)器所能表示的的8位有符號(hào)數(shù)的范圍:位有符號(hào)數(shù)的范圍:-128127指令:指令: mov al,0f0h ;0f0h,為有符號(hào)數(shù),為有符號(hào)數(shù)-16的補(bǔ)碼的補(bǔ)碼 add al,88h ;88h,為有符號(hào)數(shù),為有符號(hào)數(shù)-120的補(bǔ)碼的補(bǔ)碼 執(zhí)行后將產(chǎn)生溢出執(zhí)行后將產(chǎn)生溢出,結(jié)果錯(cuò)誤。結(jié)果錯(cuò)誤。 (al)=78h(120),),of=1。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)
36、計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)sf、cf、of標(biāo)志標(biāo)志cf進(jìn)位標(biāo)志位進(jìn)位標(biāo)志位,記錄在進(jìn)行無符號(hào)數(shù)運(yùn)算的時(shí)候,記錄在進(jìn)行無符號(hào)數(shù)運(yùn)算的時(shí)候,運(yùn)算結(jié)果的最高有效位向更高位有無進(jìn)位值,或從運(yùn)算結(jié)果的最高有效位向更高位有無進(jìn)位值,或從更高位有無借位值。更高位有無借位值。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)cf和和of的區(qū)別的區(qū)別一定要注意一定要注意cf和和of的區(qū)別:的區(qū)別: cf是對(duì)無符號(hào)數(shù)運(yùn)算有意義的標(biāo)志位;是對(duì)無符號(hào)數(shù)運(yùn)算有意義的標(biāo)志位; 而而of和和sf是對(duì)有符號(hào)數(shù)運(yùn)算有意義的標(biāo)志位。是對(duì)有符號(hào)數(shù)運(yùn)算有意義的標(biāo)志位。 比如:比如: mov al
37、,0f0h add al,88h add指令執(zhí)行后:指令執(zhí)行后:cf=1,of=1。 對(duì)于無符號(hào)數(shù)運(yùn)算,對(duì)于無符號(hào)數(shù)運(yùn)算,0f0h(240)+88h(136)有進(jìn)位,)有進(jìn)位,cf=1; 對(duì)于有符號(hào)數(shù)運(yùn)算,對(duì)于有符號(hào)數(shù)運(yùn)算,0f0h(-16)+88h(-120)發(fā)生溢出,)發(fā)生溢出,of=1。那是不是有進(jìn)位那是不是有進(jìn)位cf=1就一定產(chǎn)生溢出就一定產(chǎn)生溢出of=1呢呢 ?匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)cf和和of的區(qū)別的區(qū)別再比如:再比如:mov al,0f0h (-16) add al,78h (120)add指令執(zhí)行后:指令執(zhí)行后:cf=1,of=
38、0。 對(duì)于無符號(hào)運(yùn)算,對(duì)于無符號(hào)運(yùn)算,0f0h(240)+78h(120)有進(jìn)位,)有進(jìn)位,cf=1; 對(duì)于有符號(hào)數(shù)運(yùn)算,對(duì)于有符號(hào)數(shù)運(yùn)算,0f0h +78h不發(fā)生溢出,不發(fā)生溢出,of=0。結(jié)果正確(結(jié)果正確(al)=68h(104)可以看出,可以看出,cf 和和of 所表示的進(jìn)位和溢出,是分別對(duì)無符所表示的進(jìn)位和溢出,是分別對(duì)無符號(hào)數(shù)和有符號(hào)數(shù)運(yùn)算而言的,它們之間沒有任何關(guān)系。號(hào)數(shù)和有符號(hào)數(shù)運(yùn)算而言的,它們之間沒有任何關(guān)系。cf表示無符號(hào)數(shù)的溢出,表示無符號(hào)數(shù)的溢出,of表示有符號(hào)數(shù)的溢出。表示有符號(hào)數(shù)的溢出。匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)如何判斷有符號(hào)數(shù)運(yùn)算的溢出如何判斷有符號(hào)數(shù)運(yùn)算的溢出設(shè)微型計(jì)算機(jī)字長為設(shè)微型計(jì)算機(jī)字長為n,則兩個(gè)帶符號(hào)數(shù)的絕對(duì)值都應(yīng)當(dāng),則兩個(gè)帶符號(hào)數(shù)的絕對(duì)值都應(yīng)當(dāng)小于小于2n-1,因而只有當(dāng)兩個(gè)數(shù)同為,因而只有當(dāng)兩個(gè)數(shù)同為正或同為負(fù),并且和的絕對(duì)值又大于正或同為負(fù),并且和的絕對(duì)值又大于2n-1時(shí),才會(huì)發(fā)生溢時(shí),才會(huì)發(fā)生溢出。出。兩個(gè)正數(shù)相加,若數(shù)值部分之和大于兩個(gè)正數(shù)相加,若數(shù)值部分之和大于2n-1,則數(shù)值部分必,則數(shù)值部分必有進(jìn)位有進(jìn)位c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級(jí)上冊(cè)數(shù)學(xué)教案- 1.6圓的面積(一) 北師大版
- 合同制消防員報(bào)名表(2025年版)
- 一年級(jí)上冊(cè)數(shù)學(xué)教案-小雞吃食 10的加減法-北師大版
- 統(tǒng)編版語文一年級(jí)下冊(cè)第一單元1春夏秋冬 公開課一等獎(jiǎng)創(chuàng)新教案(2課時(shí))
- 2025年??诮?jīng)濟(jì)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫及參考答案
- 2024年液位傳感器項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2025年湖南省株洲市單招職業(yè)適應(yīng)性測(cè)試題庫帶答案
- 2025年度學(xué)校代課教師教學(xué)資源共享平臺(tái)建設(shè)合同
- 2025年度客戶信息保密外包服務(wù)合同
- 2025年度電信服務(wù)合同單方違約解除賠償倍數(shù)計(jì)算標(biāo)準(zhǔn)合同
- 羽毛球課件教學(xué)課件
- 多重耐藥菌的預(yù)防及護(hù)理課件
- 抽水蓄能電站課件
- GB/T 25052-2024連續(xù)熱浸鍍層鋼板和鋼帶尺寸、外形、重量及允許偏差
- 河北科大項(xiàng)目實(shí)施計(jì)劃書
- 消防設(shè)施操作和維護(hù)保養(yǎng)規(guī)程
- -精益與智能工廠三年規(guī)劃
- 中醫(yī)基礎(chǔ)理論(一)
- 中小學(xué)校園安全教育主題班會(huì)課件:筑牢安全紅線、守護(hù)校園平安
- 高空作業(yè)考試題(帶答案)
- 北師大版數(shù)學(xué)八年級(jí)上冊(cè)1.1探索勾股定理 同步練習(xí)【基礎(chǔ)版】(附答案解析)
評(píng)論
0/150
提交評(píng)論