匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、.匯編語(yǔ)言實(shí)驗(yàn)指導(dǎo)書(shū)目 錄實(shí)驗(yàn)一 DEBUG的啟動(dòng)及其基本命令的使用.2實(shí)驗(yàn)二 內(nèi)存操作數(shù)及尋址方法.6實(shí)驗(yàn)三 匯編語(yǔ)言程序的調(diào)試與運(yùn)行.8實(shí)驗(yàn)四 查表程序設(shè)計(jì)10實(shí)驗(yàn)五 系統(tǒng)功能調(diào)用12實(shí)驗(yàn)六 循環(huán)程序設(shè)計(jì)13實(shí)驗(yàn)七 分支程序設(shè)計(jì)15實(shí)驗(yàn)八 子程序設(shè)計(jì)18實(shí)驗(yàn)九 綜合程序設(shè)計(jì)20附錄 實(shí)驗(yàn)報(bào)告21實(shí)驗(yàn)一 DEBUG的啟動(dòng)及其基本命令的使用一實(shí)驗(yàn)?zāi)康模?掌握DEBUG 的基本命令及其功能二實(shí)驗(yàn)內(nèi)容:DEBUG是專門為匯編語(yǔ)言設(shè)計(jì)的一種調(diào)試工具,它通過(guò)步進(jìn),設(shè)置斷點(diǎn)等方式為匯編語(yǔ)言程序員提供了非常有效的調(diào)試手段。1、DEBUG程序的啟動(dòng)在DOS提示符下,可鍵入命令:CDEBUGd:path文件名

2、 參數(shù)1參數(shù)2其中文件名是被調(diào)試文件的名稱,它須是執(zhí)行文件(EXE),兩個(gè)參數(shù)是運(yùn)行被調(diào)試文件時(shí)所需要的命令參數(shù),在DEBUG程序調(diào)入后,出現(xiàn)提示符“-”,此時(shí),可鍵入所需的DEBUG命令。在啟動(dòng)DEBUG時(shí),如果輸入了文件名,則DEBUG程序把指定文件裝入內(nèi)存。用戶可以通過(guò)DEBUG的命令對(duì)指定文件進(jìn)行修改、顯示和執(zhí)行。如果沒(méi)有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令和裝入命令把需要的文件裝入內(nèi)存,然后再用DEBUG的命令進(jìn)行修改、顯示和執(zhí)行。2、DEBUG的主要命令(1) 匯編命令A(yù),格式為:-A地址該命令從指定地址開(kāi)始允許輸入?yún)R編語(yǔ)句,把它們匯編成機(jī)器代碼相繼存放在從指定地址開(kāi)始

3、的存儲(chǔ)器中。(2) 反匯編命令U,有兩種格式:1)-U地址該命令從指定地址開(kāi)始,反匯編32個(gè)字節(jié),若地址省略,則從上一個(gè)U命令的最后一條指令的下一個(gè)單元開(kāi)始顯示32個(gè)字節(jié)。2)-U范圍該命令對(duì)指定范圍的內(nèi)存單元進(jìn)行反匯編,例如:-U 04BA:0100 0108或 U 04BA:0100 L9此二命令是等效的。(3) 運(yùn)行命令G,格式為:-G =地址1地址2地址3。其中地址1規(guī)定了運(yùn)行起始地址,后面的若干地址均為斷點(diǎn)地址。(4) 追蹤命令T,有兩種格式:1)逐條指令追蹤:-T=地址該命令從指定地址起執(zhí)行一條指令后停下來(lái),顯示寄存器內(nèi)容和狀態(tài)值。2)多條指令追蹤:-T=地址值該命令從指定地址起執(zhí)

4、行n條命令后停下來(lái),n由值確定。(5) 顯示內(nèi)存單元內(nèi)容的命令D,格式為:-D地址或-D范圍(6) 修改內(nèi)存單元內(nèi)容的命令E,它有兩種格式:1)用給定的內(nèi)容代替指定范圍的單元內(nèi)容:-E地址 內(nèi)容表 例如:-E 2000:0100 F3 “XYZ” 8D其中F3,“X”“Y”“Z”和8D各占一個(gè)字節(jié),用這五個(gè)字節(jié)代替原內(nèi)存單元2000:0100到0104的內(nèi)容,“X”“Y”“Z”將分別按它們的ASCII碼值代入。2)逐個(gè)單元相繼地修改:-E地址例如:-E 100:18E4:0100 89.78此命令是將原100號(hào)單元的內(nèi)容89改為78。78是程序員鍵入的。(7) 檢查和修改寄存器內(nèi)容的命令R,它

5、有三種方式:1)顯示CPU內(nèi)部所有寄存器內(nèi)容和標(biāo)志位狀態(tài);格式為:-RR命令顯示中標(biāo)志位狀態(tài)的含義如下表所示:標(biāo) 志 名置 位復(fù) 位溢出Overflow(是/否)OVNV方向Direction(減量/增量)DNUP中斷Interrupt(允許/屏蔽)EIDI符號(hào)Sign(負(fù)/正)NGPL零Zero(是/否)ZRNZ輔助進(jìn)位Auxiliary Carry(是/否)ACNA奇偶Parity(偶/奇)PEPO進(jìn)位Carry(是/否)CYNC2)顯示和修改某個(gè)指定寄存器內(nèi)容,格式為:-R 寄存器名例如打入:-R AX系統(tǒng)將響應(yīng)如下:AX FIF4:表示AX當(dāng)前內(nèi)容為F1F4,此時(shí)若不對(duì)其作修改,可按E

6、NTER鍵,否則,打入修改后內(nèi)容,如:-R BXBX 0369:059F則BX內(nèi)容由0369改為059F3)顯示和修改標(biāo)志位狀態(tài),命令格式為:-RF系統(tǒng)將給出響應(yīng),如OV DN EI NG ZR AC PE CY-這時(shí)若不作修改可按ENTER鍵,否則在“-”號(hào)之后鍵入修改值,鍵入順序任意。如OV DN EI NG ZR AC PE CY-PONZDINV(8) 命名命令N,格式為:-N 文件名此命令將文件名格式化在CS:5CH的文件控制塊內(nèi),以便使用L或W命令把文件裝入內(nèi)存進(jìn)行調(diào)試或者存盤。(9) 裝入命令L,它有兩種功能:1)把磁盤上指定扇區(qū)的內(nèi)容裝入到內(nèi)存指定地址起始的單元中,格式為:-L

7、 地址 驅(qū)動(dòng)器 扇區(qū)號(hào) 扇區(qū)數(shù)2)裝入指定文件,格式為:-L 地址此命令裝入已在CS:5CH中格式化的文件控制塊所指定的文件。在用L命令前,BX和CX中應(yīng)包含所讀文件的字節(jié)數(shù)。(10)寫命令W,有兩種格式:1)把數(shù)據(jù)寫入磁盤的指定扇區(qū):-W 地址 驅(qū)動(dòng)器 扇區(qū)號(hào) 扇區(qū)數(shù)2)把數(shù)據(jù)寫入指定文件中:-W 地址此命令把指定內(nèi)存區(qū)域中的數(shù)據(jù)寫入由CS:5CH處的FCB所規(guī)定的文件中。在用W命令前,BX和CX中應(yīng)包含要寫入文件的字節(jié)數(shù)。(11)退出DEBUG命令Q,該命令格式為Q它退出DEBUG程序,返回DOS,但該命令本身并不把在內(nèi)存中的文件存盤,如需存盤,應(yīng)在執(zhí)行Q命令前先執(zhí)行寫命令W。三實(shí)驗(yàn)要求:

8、 用匯編語(yǔ)言編寫一個(gè)計(jì)算“3+5”的加法程序四實(shí)驗(yàn)報(bào)告:寫出在DEBUG狀態(tài)下編寫、運(yùn)行程序的過(guò)程以及調(diào)試所中遇到的問(wèn)題是如何解決的,并對(duì)調(diào)試過(guò)程中的問(wèn)題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。實(shí)驗(yàn)二 內(nèi)存操作數(shù)及尋址方法一實(shí)驗(yàn)?zāi)康模?、熟練掌握DEBUG的常用命令,學(xué)會(huì)用DEBUG調(diào)試程序。2、掌握數(shù)據(jù)在內(nèi)存中的存放方式和內(nèi)存操作數(shù)的幾種尋址方式。3、掌握簡(jiǎn)單指令的執(zhí)行過(guò)程。二實(shí)驗(yàn)內(nèi)容:1、設(shè)堆棧指針SP=2000H,AX=3000H,BX=5000H;請(qǐng)編一程序段將AX和BX的內(nèi)容進(jìn)行交換。請(qǐng)用堆棧作為兩寄存器交換內(nèi)容的中間存儲(chǔ)單元,用DEBUG調(diào)試程序進(jìn)行匯編與調(diào)試。2、設(shè)DS=當(dāng)前段地址,BX=

9、0300H,SI=0002H;請(qǐng)用DEBUG的命令將存儲(chǔ)器偏移地址300H304H連續(xù)單元順序裝入0AH,0BH,0CH,0DH,0EH。在DEBUG狀態(tài)下送入下面程序,并用單步執(zhí)行的方法,分析每條指令源地址的形成過(guò)程,當(dāng)數(shù)據(jù)傳送完畢時(shí),AX中的內(nèi)容是什么。程序清單如下:MOV AX,BXMOV AX,0304HMOV AX,0304HMOV AX,BXMOV AX,0001BXMOV AX,BXSIMOV AX,0001BXSIHLT三實(shí)驗(yàn)要求:1、實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析等。2、本實(shí)驗(yàn)只要求在DEBUG調(diào)試程序狀態(tài)下進(jìn)行,包括匯編程序

10、、調(diào)試程序和執(zhí)行程序。四實(shí)驗(yàn)報(bào)告:1、程序說(shuō)明。說(shuō)明程序的功能、結(jié)構(gòu)。2、調(diào)試說(shuō)明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問(wèn)題是如何解決的,并對(duì)調(diào)試過(guò)程中的問(wèn)題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和執(zhí)行結(jié)果。實(shí)驗(yàn)三 匯編語(yǔ)言程序的調(diào)試與運(yùn)行一實(shí)驗(yàn)?zāi)康?學(xué)習(xí)數(shù)據(jù)傳送和算術(shù)運(yùn)算指令的用法2熟悉在PC機(jī)上編輯、匯編、連接、調(diào)試和運(yùn)行匯編語(yǔ)言程序的過(guò)程。二實(shí)驗(yàn)內(nèi)容將兩個(gè)多位十進(jìn)制數(shù)相加,要求被加數(shù)和加數(shù)均以ASCII碼形式各自順序存放在DATA1和DATA2為首的5個(gè)內(nèi)存單元中,結(jié)果送回DATA1處。三程序框圖圖3.1 兩個(gè)多位十進(jìn)制相加程序流程圖四調(diào)試步驟1編輯源程序,建立一個(gè)以

11、后綴為 ASM的文件.2匯編源程序,檢查程序有否錯(cuò)誤,有錯(cuò)時(shí)回到編輯狀態(tài),修改程序中錯(cuò)誤行。無(wú)錯(cuò)時(shí)繼續(xù)第3步。3連接目標(biāo)程序,產(chǎn)生可執(zhí)行程序。4DEBUG調(diào)試可執(zhí)行程序,記錄數(shù)據(jù)段的內(nèi)容。 5在操作系統(tǒng)狀態(tài)下,運(yùn)行程序,并記錄屏幕顯示內(nèi)容。被 加 數(shù)加 數(shù)屏 幕 顯 示 內(nèi) 容127320681510732436916508717631五思考題1 將上述程序改為5位數(shù)相加,結(jié)果為6位數(shù)的加法程序。(需考慮進(jìn)位)2 簡(jiǎn)單敘述上機(jī)步驟,調(diào)試方法。實(shí)驗(yàn)四 查表程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?、熟練掌握編寫匯編語(yǔ)言原程序的基本方法和基本框架。2、掌握查表法和查表指令XLAT。3、熟練使用DEBUG調(diào)試程序。二實(shí)

12、驗(yàn)內(nèi)容:用查表的方法將一位十六進(jìn)制數(shù)轉(zhuǎn)換成與它相應(yīng)的ASCII碼,并將結(jié)果存放到ASCI單元中。三編程提示:既然指定用查表的方法,那么首先要建立一個(gè)表TABLE。我們?cè)诒碇邪凑帐M(jìn)制數(shù)從小到大的順序放入他們對(duì)應(yīng)的ASCII碼值。DATA SEGMENTTABLE DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46HHEX DB X ;X為待轉(zhuǎn)換的十六進(jìn)制數(shù)ASCI DB ?;存放轉(zhuǎn)換后的ASCII碼DATA ENDS四實(shí)驗(yàn)要求:實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析

13、等五實(shí)驗(yàn)報(bào)告: 1、程序說(shuō)明。說(shuō)明程序的功能、結(jié)構(gòu)。2、調(diào)試說(shuō)明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問(wèn)題是如何解決的,并對(duì)調(diào)試過(guò)程中的問(wèn)題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和執(zhí)行結(jié)果。 實(shí)驗(yàn)五 系統(tǒng)功能調(diào)用一實(shí)驗(yàn)?zāi)康模?、掌握接受鍵盤數(shù)據(jù)的方法,并了解將鍵盤數(shù)據(jù)顯示時(shí),須轉(zhuǎn)為ASCII碼的原理。2、掌握DOS功能調(diào)用的編程方法。二實(shí)驗(yàn)內(nèi)容:試編寫一個(gè)匯編語(yǔ)言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來(lái)。三編程提示:利用DOS功能調(diào)用INT21H的1號(hào)功能從鍵盤輸入字符和2號(hào)功能在顯示器上顯示一個(gè)字符。四實(shí)驗(yàn)要求:實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)

14、試方法,以及對(duì)程序結(jié)果的分析等。五實(shí)驗(yàn)報(bào)告:1、程序說(shuō)明。說(shuō)明程序的功能、結(jié)構(gòu)。2、調(diào)試說(shuō)明。包括上機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問(wèn)題是如何解決的,并對(duì)調(diào)試過(guò)程中的問(wèn)題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、寫出源程序清單和執(zhí)行結(jié)果。name turnd_seg segment paraa db please input(az):,$b db 0ah,0dh,$d_seg endss_seg segment stackdb 90h dup(?)s_seg endsc_seg segmentassume cs:c_seg,ds:d_seg,ss:s_segstart: mov ax,d_se

15、g mov ds,ax mov dx,offset a mov ah,09h int 21h mov ah,01h int 21h mov bl,al sub bl,20h mov dx,offset b mov ah,09h int 21h mov dl,bl mov ah,02 int 21h mov ah,4ch int 21hc_seg ends end start 實(shí)驗(yàn)六 分支程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康模?、掌握分支程序的結(jié)構(gòu)。2、掌握分支程序的設(shè)計(jì)、調(diào)試方法。二實(shí)驗(yàn)內(nèi)容:假設(shè)有一組數(shù)據(jù):5,-4,0,3,100,-51,請(qǐng)編一程序,判斷:每個(gè)數(shù)大于0,等于0,還是小于0;并輸出其判斷結(jié)果。

16、即: 1 當(dāng)x0y= 0 當(dāng)x=0 -1 當(dāng)x0三實(shí)驗(yàn)要求:實(shí)驗(yàn)前要做好充分準(zhǔn)備,包括匯編程序清單、調(diào)試步驟、調(diào)試方法,以及對(duì)程序結(jié)果的分析等。四編程提示:1、首先將原始數(shù)據(jù)裝入起始地址為XX的字節(jié)存儲(chǔ)單元中。2、將判斷結(jié)果以字符串的形式存放在數(shù)據(jù)區(qū)中,以便在顯示輸出時(shí)調(diào)用。3、其中判斷部分可采用CMP指令,得到一個(gè)分支結(jié)構(gòu),分別輸出“y=0”, “y=1”, “y=-1”。4、程序中存在一個(gè)循環(huán)結(jié)構(gòu),循環(huán)6次,調(diào)用6次分支結(jié)構(gòu)后結(jié)束。五思考題:程序中的原始數(shù)據(jù)是以怎樣的形式存放在數(shù)據(jù)區(qū)中的?請(qǐng)用DEBUG調(diào)試程序觀察并分析。六實(shí)驗(yàn)報(bào)告:1、程序說(shuō)明。說(shuō)明程序的功能、結(jié)構(gòu)。2、調(diào)試說(shuō)明。包括上

17、機(jī)調(diào)試的情況、上機(jī)調(diào)試步驟、調(diào)試所遇到的問(wèn)題是如何解決的,并對(duì)調(diào)試過(guò)程中的問(wèn)題進(jìn)行分析,對(duì)執(zhí)行結(jié)果進(jìn)行分析。3、畫(huà)出程序框圖。4、寫出源程序清單和執(zhí)行結(jié)果。5、回答思考題。實(shí)驗(yàn)七 循環(huán)程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康? 掌握循環(huán)程序設(shè)計(jì)的方法(兩重性循環(huán)結(jié)構(gòu))2 掌握正確分配與使用寄存器。二實(shí)驗(yàn)內(nèi)容與要求以GRADE為首地址的10個(gè)字的數(shù)組中保存有學(xué)生成績(jī)。建立一個(gè)10個(gè)字的RNAK 數(shù)組,并根據(jù)GRADE中的學(xué)生成績(jī)將學(xué)生名次填入RANK數(shù)組中(提示:一個(gè)學(xué)生的名次等于成績(jī)高于等于該學(xué)生的人數(shù)加1)。 寄存器分配情況說(shuō)明如下: AX 存放當(dāng)前被測(cè)學(xué)生的成績(jī) BX 存放當(dāng)前被測(cè)學(xué)生的相對(duì)地址指針 CX 內(nèi)循

18、環(huán)計(jì)數(shù)值 DX 存放當(dāng)前被測(cè)學(xué)生的名次計(jì)數(shù)值 SI 內(nèi)循環(huán)測(cè)試時(shí)的地址指針 DI 外循環(huán)計(jì)數(shù)值三程序框圖圖71 程序框圖四思考題1改為通過(guò)鍵盤輸入方式提供學(xué)生成績(jī)。2將成績(jī)與名次在屏幕上顯示。3指出控制循環(huán)程序的方法,并劃分該程序的四個(gè)組成部分實(shí)驗(yàn)八 子程序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康?掌握程序設(shè)計(jì)方法,合理劃分層次2掌握子程序的調(diào)用與返回的方法3了解子程序的嵌套與遞歸二實(shí)驗(yàn)內(nèi)容與要求編制一程序,要求鍵入一個(gè)班的學(xué)生成績(jī),并存放于50字的ERADE數(shù)組中,然后根據(jù)ERADE中的成績(jī),把學(xué)生名次填入50字的RANK數(shù)組中,再按學(xué)號(hào)順序把名次從終端上顯示出來(lái)。提示: 程序MAIN 功能:根據(jù)輸入的學(xué)生成績(jī),計(jì)算并顯示出學(xué)生名次。 程序INPUT 功能:接收一個(gè)班級(jí)學(xué)生的成績(jī),各成績(jī)之間用空格隔開(kāi)。 程序RANKP 功能:計(jì)算一個(gè)班級(jí)學(xué)生的名次。(可參照循環(huán)程序(一)中的

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論