微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_20151020_第1頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_20151020_第2頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_20151020_第3頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_20151020_第4頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_20151020_第5頁(yè)
已閱讀5頁(yè),還剩43頁(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、微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)韓 宇 龍 武夢(mèng)龍 編電子信息工程系2015年實(shí) 驗(yàn) 要 求一預(yù)習(xí)認(rèn)真預(yù)習(xí)實(shí)驗(yàn)內(nèi)容和相關(guān)理論知識(shí),編寫(xiě)實(shí)驗(yàn)內(nèi)容所要求的源程序,按要求寫(xiě)好預(yù)習(xí)報(bào)告,無(wú)預(yù)習(xí)報(bào)告或預(yù)習(xí)不合格者不得進(jìn)行實(shí)驗(yàn)。二預(yù)習(xí)報(bào)告1基本內(nèi)容:程序:程序功能、程序框圖及源程序清單;主要調(diào)試步驟及程序功能測(cè)試方案。硬件:原理線路與實(shí)際接線圖;主要調(diào)試步驟與測(cè)試方案。2實(shí)驗(yàn)指導(dǎo)書(shū)中提到的其它內(nèi)容。三實(shí)驗(yàn)1按規(guī)定時(shí)間到實(shí)驗(yàn)室,遵守實(shí)驗(yàn)室相關(guān)的規(guī)章制度。2實(shí)驗(yàn)過(guò)程中,不允許帶電操作:接線、更改線路和拆除線路必須先切斷電源。3出現(xiàn)硬件故障立即切斷電源并報(bào)告老師。4實(shí)驗(yàn)完成后,須經(jīng)老師檢查、簽字后方可拆線。5將實(shí)驗(yàn)

2、設(shè)備拆線、整理好并關(guān)掉計(jì)算機(jī)再離開(kāi)實(shí)驗(yàn)室。四實(shí)驗(yàn)報(bào)告1使用學(xué)校專門的實(shí)驗(yàn)報(bào)告紙撰寫(xiě)報(bào)告,主體內(nèi)容需要手工書(shū)寫(xiě)。要求字跡工整,條理清楚,簡(jiǎn)明扼要,裝訂整齊,要有單獨(dú)的封面頁(yè)。實(shí)驗(yàn)報(bào)告封面頁(yè)需依次注明以下信息:課程名稱:微機(jī)原理與接口技術(shù)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)序號(hào)及實(shí)驗(yàn)名稱,如:實(shí)驗(yàn)一 軟件基礎(chǔ)。班級(jí)、姓名、學(xué)號(hào)及實(shí)驗(yàn)時(shí)間和地點(diǎn)。指導(dǎo)教師: 。實(shí)驗(yàn)成績(jī): 。2基本內(nèi)容設(shè)計(jì)說(shuō)明:軟件:程序名,功能,算法說(shuō)明,程序框圖。硬件:原理線路、接口芯片工作方式及公式等說(shuō)明,實(shí)際接線圖。附教師簽字的源程序清單。源程序清單需加中文注釋。調(diào)試說(shuō)明:實(shí)驗(yàn)中遇到的主要問(wèn)題,解決方法及分析說(shuō)明。 實(shí)際軟、硬件測(cè)試結(jié)果說(shuō)明3每個(gè)實(shí)

3、驗(yàn)中要求的其它具體內(nèi)容。實(shí)驗(yàn)一 軟件基礎(chǔ) 課內(nèi)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí) 一實(shí)驗(yàn)?zāi)康?1學(xué)習(xí)使用CodeView調(diào)試環(huán)境。2學(xué)習(xí)如何建立和執(zhí)行匯編語(yǔ)言程序。 3學(xué)習(xí)指令代碼及其分段結(jié)構(gòu)與尋址方式。 4學(xué)習(xí)數(shù)據(jù)傳送指令。5學(xué)習(xí)宏匯編的基本語(yǔ)法。二實(shí)驗(yàn)儀器及設(shè)備 1一套MASM6.11宏匯編軟件。 2一臺(tái)微型計(jì)算機(jī)。三實(shí)驗(yàn)內(nèi)容 1在CodeView的Command窗口中,用A命令匯編上機(jī)調(diào)試習(xí)題1的指令,直接在顯示窗口中觀察各條指令的反匯編結(jié)果并作記錄。 2用A命令匯編上機(jī)調(diào)試習(xí)題2的指令,用T命令跟蹤每一條指令,觀察每條指令的執(zhí)行情況并作記錄。 3調(diào)試上機(jī)調(diào)試習(xí)題3的程序。 提示:操作開(kāi)始前,先用N命令設(shè)

4、置調(diào)試命令所用參數(shù)的缺省數(shù)制。4調(diào)試上機(jī)調(diào)試習(xí)題4的程序。四軟件基本用法簡(jiǎn)介1.設(shè)計(jì)說(shuō)明程序名: DISP。程序功能:在屏幕上分別顯示數(shù)字3和4對(duì)應(yīng)的阿拉伯符號(hào)。算法說(shuō)明:用兩次02號(hào)系統(tǒng)功能調(diào)用,預(yù)先將3和4送入DL。程序框圖:如圖1所示。源程序:DISP:MOV DL,33H MOV AH,02H INT 21H MOV DL,34H MOV AH,02H INT 21H調(diào)試說(shuō)明:系統(tǒng)功能調(diào)用指令I(lǐng)NT 21H(包括INT 20H)不能用T命令跟蹤,可以用G命令加上地址范圍的方式執(zhí)行。2.CodeView調(diào)試程序使用介紹(1)進(jìn)入CodeView調(diào)試環(huán)境方法一:點(diǎn)擊操作系統(tǒng)桌面的PWB快捷

5、圖標(biāo)進(jìn)入PWB主界面,在菜單File下選中Dos Shell項(xiàng)進(jìn)入Dos環(huán)境;在目錄MASM611BIN>下鍵入指令: CV *.EXE(該目錄下任何一個(gè)EXE文件均可),啟動(dòng)CodeView,在該環(huán)境下對(duì)所調(diào)入的EXE文件進(jìn)行修改與調(diào)試。 方法二:從桌面的開(kāi)始菜單進(jìn)入Dos環(huán)境,轉(zhuǎn)入MASM611BIN>目錄下;鍵入指令: CV *.EXE,啟動(dòng)CodeView。 圖2是CodeView的窗口調(diào)試界面的圖例:圖2 CodeView的窗口調(diào)試界面(2)以下各操作命令均在CodeView調(diào)試界面的Command窗口中以命令行的方式鍵入,用來(lái)對(duì)EXE文件進(jìn)行修改與調(diào)試。g 設(shè)置基數(shù)&g

6、t;n16 說(shuō)明:N為基數(shù)設(shè)置命令,用來(lái)設(shè)置調(diào)試命令所用參數(shù)的缺省數(shù)制(但N命令不會(huì)改變數(shù)據(jù)的顯示方式)。g 輸入新的指令>a 說(shuō)明:A為匯編命令,將用戶輸入的符號(hào)指令匯編為機(jī)器代碼,存入指定地址開(kāi)始的內(nèi)存單元。194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int 21194E:0006 mov dl,34194E:0008 mov ah,2194E:000A int 21194E:000C nop194E:000D g 連續(xù)運(yùn)行前三條指令>g 6 說(shuō)明:G為運(yùn)行命令,從當(dāng)前CS:IP所指的指令(即mov dl,33)開(kāi)始,一直執(zhí)行到

7、指定地址(即194E:0006)。g 查看前三條指令的執(zhí)行結(jié)果按F4在Dos界面下可以看到程序的執(zhí)行結(jié)果,按Esc鍵返回調(diào)試界面g 單步執(zhí)行第4條指令>t 說(shuō)明:T為跟蹤命令,從當(dāng)前CS:IP所指指令開(kāi)始單步執(zhí)行,若遇到CALL或INT指令(DOS系統(tǒng)調(diào)用INT21H和INT20H除外),則會(huì)跟蹤進(jìn)入相應(yīng)過(guò)程或中斷服務(wù)程序的內(nèi)部。T命令為順序跟蹤,改變順序時(shí)應(yīng)輸入起始地址。g 觀察寄存器中的內(nèi)容>r 說(shuō)明:R命令用以顯示和修改寄存器的值,還可以顯示8個(gè)標(biāo)志位的值。如果只顯示某一個(gè)寄存器內(nèi)容,則在R后面加寄存器名,例如:>r dxDX 0034:g 單步執(zhí)行第5條指令>t

8、g 觀察寄存器AH中的內(nèi)容>r ahAH 02:g 連續(xù)運(yùn)行至前6條指令結(jié)束(INT 20返回)>g cg 查看執(zhí)行結(jié)果同樣,按F4可以看到程序的執(zhí)行結(jié)果,按Esc鍵返回調(diào)試界面。1 以下是在顯示窗口看到的反匯編信息(指令地址) (機(jī)器碼) ( 助 記 符 )194E:0000 B233MOVDL,33 194E:0002 B402MOVAH,02 194E:0004 CD21INT21 194E:0006 B234MOVDL,34 194E:0008 B402MOVAH,02 194E:000A CD21INT21 194E:000C 90NOP 194E:000D1 以下是在寄

9、存器窗口看到的內(nèi)容AX=0234BX=0000CX=0000DX=0034SP=0000BP=0000SI=0000DI=0000DS=193DES=193DSS=194DCS=194EIP=000EFL=3202NV UP EI PLNZ NA PO NC>L說(shuō)明:L命令使由CV *.EXE命令調(diào)入的程序重新開(kāi)始執(zhí)行,之前對(duì)代碼或數(shù)據(jù)所做的任何修改均將丟失。g 重新鍵入4條指令>a194E:0000 mov dl,33194E:0002 mov ah,2194E:0004 int 21194E:0006 nop194E:0007 g 內(nèi)存單元的顯示與修改>md cs:0 c

10、s:6 說(shuō)明:MD為內(nèi)存顯示命令,用來(lái)顯示指定內(nèi)存單元的值。194E:0000 B2 33 B4 02 CD 21 90 .3.!. .>me cs:1 說(shuō)明:ME為內(nèi)存修改命令,用來(lái)設(shè)置指定內(nèi)存單元的值。194E:0001 33 3. 36>g 6>md cs:0 cs:6194E:0000 B2 36 B4 02 CD 21 90 .6.!. .注:對(duì)比修改前后內(nèi)存單元CS:0001中數(shù)值,可以看到已經(jīng)把33H修改為36H。3.匯編語(yǔ)言程序的建立與運(yùn)行方法介紹(1)進(jìn)入PWB開(kāi)發(fā)環(huán)境在目錄C:MASM611BIN>下鍵入命令PWB exa4s.asm或者直接雙擊桌面

11、上的PWB快捷方式圖標(biāo)即可進(jìn)入PWB集成開(kāi)發(fā)環(huán)境,如圖3所示:圖3 PWB集成開(kāi)發(fā)環(huán)境(2)編輯、保存源文件PWB 中編輯器的基本操作與許多文本編輯器類似,例如建立新文件、保存文件、另存為、光標(biāo)移動(dòng)、塊操作、插人刪除操作、恢復(fù)操作、查找替換操作、設(shè)置編輯器的功能鍵和各類顏色等。要編輯一個(gè)匯編語(yǔ)言源程序,首先用鼠標(biāo)或 Alt + F 鍵選擇 File 下拉菜單,然后選擇 New 建立一個(gè)新文件或者選擇 Open 打開(kāi)一個(gè)已有的源程序。完成編輯任務(wù)后,用 File 菜單的 Save 或 Save AS 命令保存。請(qǐng)注意:保存源文件時(shí)一定要加上擴(kuò)展名 .ASM;指令各部分之間的間隔用制表鍵(Tab

12、)定位,這樣打印的清單整齊規(guī)格。datasegmentstring1db'move the cursor backward.'string2db'move the cursor backward.'mess1db'match.',13,10,'$'mess2db'no match!',13,10,'$'dataendscodesegment codeassumecs:code,ds:data,es:datastart: movax,datamovds,axmoves,axleasi,string1l

13、eadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshort dispmatch:leadx,mess1disp: movah,09hint21hmov ax,4c00hint 21hcodeendsendstart(3)匯編和鏈接源程序編輯完成并保存后,可以開(kāi)始匯編和鏈接任務(wù)。在集成環(huán)境下,程序的匯編和鏈接可以分別完成也可一次性完成,采用何種方式由Project菜單決定。如果選擇Compile File選項(xiàng),則只完成匯編任務(wù)。如果沒(méi)有匯編源程序,Build選項(xiàng)首先進(jìn)行匯編,匯編結(jié)束并且沒(méi)有發(fā)現(xiàn)任何錯(cuò)誤時(shí)進(jìn)行鏈接;如果源程序有錯(cuò),顯示所有

14、錯(cuò)誤位置和原因,不進(jìn)行鏈接。Project菜單中的Next Project,Previous Error和Goto Error命令用于定位程序中的錯(cuò)誤。如果源程序已經(jīng)匯編,則Build選項(xiàng)只進(jìn)行目標(biāo)文件的鏈接。這里選擇 Build 選項(xiàng),匯編、鏈接成功后,彈出如下圖4所示的對(duì)話框。圖4 匯編鏈接成功后彈出的對(duì)話框從對(duì)話框可知,程序無(wú)任何語(yǔ)法錯(cuò)誤,正確生成EXE文件。對(duì)話框最下面一行的提示作用如下:View Results:用于查看匯編鏈接的結(jié)果,如果有錯(cuò)將提示具體的錯(cuò)誤信息。 Run Program:運(yùn)行程序。Debug Program:直接進(jìn)入Code View調(diào)試環(huán)境。Cancel:為取消

15、對(duì)話框。Help:獲得在線幫助。有時(shí)系統(tǒng)在該對(duì)話框中會(huì)出現(xiàn)一個(gè)關(guān)于堆棧的警告性錯(cuò)誤,當(dāng)程序使用的堆棧較小時(shí),可以忽略該錯(cuò)誤。(4)運(yùn)行程序除了通過(guò)匯編鏈接后彈出的對(duì)話框運(yùn)行程序外,還可通過(guò) Run菜單運(yùn)行程序,方法是選擇Run菜單中的Execute命令或Run Dos Command命令。運(yùn)行示例程序出現(xiàn)如圖5所示的窗口。圖5 運(yùn)行示例程序出現(xiàn)的窗口程序運(yùn)行結(jié)束后按任意鍵返回到PWB環(huán)境。 (5)調(diào)試 程序通過(guò)匯編和鏈接只說(shuō)明程序中沒(méi)有語(yǔ)法錯(cuò)誤。匯編程序不能發(fā)現(xiàn)程序設(shè)計(jì)中的錯(cuò)誤。實(shí)際上編寫(xiě)程序很難一次成功,這時(shí)就需要通過(guò)調(diào)試來(lái)發(fā)現(xiàn)錯(cuò)誤,然后重新編輯(修改)、匯編、鏈接、執(zhí)行。反復(fù)進(jìn)行以上過(guò)程,

16、直至成功。在CodeView下調(diào)試EXE文件的方法如實(shí)驗(yàn)二所示。五上機(jī)調(diào)試的習(xí)題1分別以二進(jìn)制數(shù)形式和十六進(jìn)制數(shù)形式寫(xiě)出以下指令的機(jī)器碼,并在二進(jìn)制數(shù)表示的機(jī)器碼中標(biāo)明其各個(gè)組成部分及其含義。 MOV AX,DX ADD CX,BX+8 SUB BX+SI,SI MOV AL,DL ADD CX,BX SBB DI,AL 2已知從2000H:7358H開(kāi)始的4個(gè) MOV AX,2000H 存儲(chǔ)單元的內(nèi)容順序?yàn)椋?MOV DS,AX 36H 85H 43H 21H MOV DI,7348H e2000:7358 a int 7 寫(xiě)出題中各指令的尋址方式及各指令的 MOV AL,10H DI 執(zhí)行

17、結(jié)果。 MOV SS,DI+10H LEA BX,DI+10H LES CX,10H+DI 3已知DS=2000H,欲將2000H:7348H與2000H:735AH的內(nèi)容互換。寫(xiě)出三個(gè)不同的程序段,分別用通用數(shù)據(jù)傳送指令,交換指令及堆棧操作指令完成互換操作。 提示:題中的已知條件可用CodeView的MF命令、R命令直接寫(xiě)入相應(yīng)的內(nèi)存單元或寄存器。4寫(xiě)出下面程序段中每一條指令的執(zhí)行結(jié)果,以及各程序段所實(shí)現(xiàn)的操作。(1) SGWS: MOV AX,8514H MOV BX,3692H MOV CH,AH SUB AL,BL DAS XCHG AL,CH SBB AL,BH DAS MOV AH

18、,AL MOV AL,CH (2) STMU: MOV CX,7A8FH MOV AX,6BC5H MOV BX,1000H MUL BX PUSH DX PUSH AX MOV AX,CX MUL BX POP CX MOV 3000H,CX POP CX ADD AX,CX MOV 3002H,AX ADC DX,00H MOV 3004H,DX六預(yù)習(xí)要求1熟悉CodeView調(diào)試環(huán)境和常用的調(diào)試命令。 2預(yù)習(xí)報(bào)告: CPU內(nèi)部寄存器的名稱及其作用。 各種尋址方式,指令代碼的分段結(jié)構(gòu)。 數(shù)據(jù)傳送指令。 分析上機(jī)調(diào)試習(xí)題4的程序,說(shuō)明每一段程序的算法及所實(shí)現(xiàn)的操作。按實(shí)驗(yàn)報(bào)告要求,設(shè)計(jì)調(diào)試方

19、案。七實(shí)驗(yàn)報(bào)告 1分析上機(jī)調(diào)試習(xí)題1中每一條指令的字段結(jié)構(gòu)與尋址方式。例如: 89D0 MOV AX,DX 100010 0 1 11 010 000 源寄存器尋址 D W MOD R R/M 字 源 目的 目的寄存器尋址 2分析上機(jī)調(diào)試習(xí)題2中每一條指令應(yīng)該完成的操作及實(shí)際結(jié)果。例如:MOV AX,2000 指令操作: 立即數(shù)送入AX 執(zhí)行結(jié)果: AX=2000 3上機(jī)調(diào)試習(xí)題3的主要內(nèi)容。 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案和測(cè)試結(jié)果。4上機(jī)調(diào)試習(xí)題4第一個(gè)程序段(1)填表以下指令之后AH AL BH BL CH CL CF(標(biāo)志)SUB AL,B

20、LDASSBB AL,BHDASMOV AL,CH(2)能否省去XCHG AL,CH指令,直接用SBB CH,BH對(duì)兩個(gè)高位字節(jié)相減?(3)如果將SUB AL,BL 換為SBB AL,BL ,程序還應(yīng)作哪些修改?(4)能否直接用16位數(shù)相減指令?為什么?5上機(jī)調(diào)試習(xí)題4第二個(gè)程序段(1)討論程序中進(jìn)行的堆棧操作。(2)畫(huà)圖表示本段程序執(zhí)行后堆棧指針、堆棧區(qū)及有關(guān)存儲(chǔ)區(qū)的內(nèi)容。實(shí)驗(yàn)二 指令系統(tǒng) 課內(nèi)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí) 一實(shí)驗(yàn)?zāi)康?使用CodeView命令進(jìn)行程序調(diào)試。2學(xué)習(xí)移位、轉(zhuǎn)移、子程序調(diào)用與返回、堆棧操作指令。3學(xué)習(xí)狀態(tài)標(biāo)志與條件轉(zhuǎn)移指令。4學(xué)習(xí)系統(tǒng)功能調(diào)用。5熟悉ASCII碼表及振鈴、回車

21、、換行符的使用。二實(shí)驗(yàn)儀器及設(shè)備 1一套MASM6.11宏匯編軟件。 2一臺(tái)微型計(jì)算機(jī)。三實(shí)驗(yàn)內(nèi)容C:MASM611BIN>CV exa2.exe調(diào)試EXA2.EXE程序1 運(yùn)行程序EXEA2.EXE,記錄運(yùn)行時(shí)的鍵操作與對(duì)應(yīng)的屏幕顯示。2 從程序開(kāi)始處運(yùn)行至第一個(gè)09號(hào)系統(tǒng)功能調(diào)用后,記錄顯示的字符及DS:0000開(kāi)始的數(shù)據(jù)區(qū)的內(nèi)容。3繼續(xù)執(zhí)行至第一個(gè)02號(hào)系統(tǒng)功能調(diào)用后,記錄顯示的字符。 思考:為什么09號(hào)系統(tǒng)功能調(diào)用不能顯示$字符?4 將001B處的指令改為MOV DL,07H,重復(fù)2、3步驟,記錄程序執(zhí)行情況。5 繼續(xù)執(zhí)行至第一個(gè)01號(hào)系統(tǒng)功能調(diào)用后,鍵入8,記錄AX的內(nèi)容。6

22、用T命令逐條跟蹤,直至轉(zhuǎn)移到0029處(MOV AH,01),記錄每次比較所產(chǎn)生的Z標(biāo)志與C標(biāo)志,以及轉(zhuǎn)移方向。例如:比較指令ZC條件轉(zhuǎn)移后的指令地址:002D CMP AL,24NZNC0031(不轉(zhuǎn)移):0031 CMP AL,0DNZNC003A (轉(zhuǎn)移).7分別鍵入X,回車符,$,重復(fù)6的步驟,并作記錄。8繼續(xù)運(yùn)行程序至005B處,跟蹤子程序調(diào)用、返回與堆棧操作指令,記錄SP、IP及堆棧區(qū)的內(nèi)容。執(zhí)行以下指令后SPIP堆棧1B40:0059 MOV AX,CX : CALL 0069 0040003E005B00691B3B:3E 5E00 :0069 PUSH BX : PUSH C

23、X : PUSH DX : PUSH AX :006F CALL 007A :0085 CALL 0091 :00A0 RET :008D CALL 0091 :00A0 RET :0090 RET :0072 POP AX :0073 CALL 007A :0090 RET :0075 POP DX : POP CX : POP BX : RET9 將00A1處子程序中輸出的回車符改為換行符,從開(kāi)始處運(yùn)行程序,記錄執(zhí)行情況。10同上,將換行符改為回車符。11跟蹤:0080 ROL DL,CL指令,記錄DL和CL的變化情況。四EXA2.EXE程序的反匯編清單1B40:0000 B8321B M

24、OV AX,1B321B40:0003 8ED8 MOV DS,AX1B40:0005 8EC0 MOV ES,AX1B40:0007 B83B1B MOV AX,1B3B1B40:000A 8EDO MOV SS,AX1B40:000C BC4000 MOV SP,00401B40:000F BB0000 MOV BX,00001B40:0012 B409 MOV AH,091B40:0014 BA0000 MOV DX,00001B40:0017 CD21 INT 211B40:0019 B402 MOV AH,021B40:001B B224 MOV DL,24 1B40:001D CD

25、21 INT 211B40:001F E87F00 CALL 00A11B40:0022 BE3700 MOV SI,00371B40:0025 33C9 XOR CX,CX1B40:0027 33DB XOR BX,BX1B40:0029 B401 MOV AH,011B40:002B CD21 INT 211B40:002D 3C24 CMP AL,241B40:002F 7419 JZ 004A1B40:0031 3C0D CMP AL,0D1B40:0033 7505 JNZ 003A1B40:0035 E86900 CALL 00A11B40:0038 EBEF JMP 00291B

26、40:003A 3C30 CMP AL,301B40:003C 7204 JB 00421B40:003E 3C39 CMP AL,391B40:0040 7603 JBE 00451B40:0042 41 INC CX1B40:0043 EBE4 JMP 00291B40:0045 88OO MOV BX+SI,AL1B40:0047 43 INC BX1B40:0048 EBDF JMP 00291B40:004A E85400 CALL 00A11B40:004D C60024 MOV BYTE PTR BX+SI,241B40:0050 8BD6 MOV DX,SI1B40:0052

27、B409 MOV AH,091B40:0054 CD21 INT 211B40:0056 E84800 CALL 00A11B40:0059 8BC1 MOV AX,CX1B40:005B E80B00 CALL 00691B40:005E B402 MOV AH,02 1B40:0060 B248 MOV DL,481B40:0062 CD21 INT 211B40:0064 B8004C MOV AX,4C001B40:0067 CD21 INT 211B40:0069 53 PUSH BX1B40:006A 51 PUSH CX1B40:006B 52 PUSH DX1B40:006C

28、50 PUSH AX1B40:006D 8AC4 MOV AL,AH1B40:006F E80800 CALL 007A1B40:0072 58 POP AX1B40:0073 E80400 CALL 007A1B40:0076 5A POP DX1B40:0077 59 POP CX1B40:0078 5B POP BX1B40:0079 C3 RET1B40:007A 8AD8 MOV BL,AL1B40:007C 8AD3 MOV DL,BL1B40:007E B104 MOV CL,041B40:0080 D2C2 ROL DL,CL1B40:0082 80E20F AND DL,0F

29、1B40:0085 E80900 CALL 00911B40:0088 8AD3 MOV DL,BL1B40:008A 80E20F AND DL,0F1B40:008D E80100 CALL 00911B40:0090 C3 RET1B40:0091 80C230 ADD DL,301B40:0094 80FA3A CMP DL,3A1B40:0097 7203 JB 009C1B40:0099 80C227 ADD DL,271B40:009C B402 MOV AH,021B40:009E CD21 INT 211B40:00A0 C3 RET1B40:00A1 B402 MOV AH

30、,021B40:00A3 B20D MOV DL,0D1B40:00A5 CD21 INT 211B40:00A7 B402 MOV AH,021B40:00A9 B20A MOV DL,0A1B40:00AB CD21 INT 211B40:00AD C3 RET五預(yù)習(xí)要求1分析EXA2.EXE程序。2熟悉系統(tǒng)功能調(diào)用表及ASCII碼表。復(fù)習(xí)轉(zhuǎn)移指令,掌握各種轉(zhuǎn)移條件及指令執(zhí)行情況。3 復(fù)習(xí)子程序調(diào)用與返回指令及堆棧操作指令,掌握指令的操作及執(zhí)行此類指令對(duì)SP及堆棧內(nèi)容的影響。4復(fù)習(xí)移位指令,掌握指令操作及其使用方法。六預(yù)習(xí)報(bào)告 EXA2.EXE的主程序及各子程序的流程圖及程序所實(shí)現(xiàn)的操作。

31、 各02號(hào)功能調(diào)用輸出的代碼及其作為ASCII碼所代表的字符。 CALL 0069處的子程序嵌套關(guān)系圖。 調(diào)試方案:寫(xiě)明每個(gè)調(diào)試步驟的鍵操作及預(yù)期的執(zhí)行情況。 例如:對(duì)于實(shí)驗(yàn)內(nèi)容4(修改001B處的指令后重新運(yùn)行): 用A命令(A 1b)從001B處輸入并匯編指令:MOV DL,07后,退出A命令; 用G命令(G 19)或菜單操作執(zhí)行程序至第一個(gè)09號(hào)功能調(diào)用后,屏幕上應(yīng)顯示字符串: INPUT STEING,THE END FLAG IS。 用G命令(G 1F)或菜單操作繼續(xù)執(zhí)行程序至第一個(gè)02號(hào)功能調(diào)用后,因?yàn)锳SCII碼的07H代表振鈴符,所以PC機(jī)應(yīng)響鈴一次。七實(shí)驗(yàn)報(bào)告(附實(shí)驗(yàn)記錄)

32、1EXA2.EXE程序的功能,運(yùn)行時(shí)的鍵操作及執(zhí)行情況(屏幕顯示的內(nèi)容)。2用程序的實(shí)例說(shuō)明以下問(wèn)題:01、02、09號(hào)功能調(diào)用的使用方法及其所實(shí)現(xiàn)的功能。振鈴、回車、換行符的ASCII碼及通過(guò)02功能調(diào)用輸出時(shí)的作用。3 根據(jù)實(shí)驗(yàn)記錄,畫(huà)圖表示CALL 0069處的子程序嵌套關(guān)系及堆棧區(qū)的變化情況。實(shí)驗(yàn)三 匯編語(yǔ)言程序設(shè)計(jì)(1) 課內(nèi)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí) 一實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言程序設(shè)計(jì)中,分支程序的設(shè)計(jì)方法及測(cè)試程序功能的方法。二實(shí)驗(yàn)儀器及設(shè)備1一套MASM6.11宏匯編軟件。2一臺(tái)微型計(jì)算機(jī)。三實(shí)驗(yàn)內(nèi)容1運(yùn)行示例程序EXA3T.ASM,測(cè)試其功能。2設(shè)計(jì)響鈴程序: 從鍵盤接收輸入的字符,如果

33、是數(shù)字N(09),則響鈴N次;如果不是數(shù)字,則不響鈴;當(dāng)鍵入空格鍵(Space)時(shí)退出程序。 提示:也可以將響鈴符(響鈴符的ASCII編碼值:07H)修改為別的符號(hào),比如:#,$等可見(jiàn)符號(hào)。 思考擴(kuò)展要求:如果輸入的數(shù)字N是一個(gè)大于、等于10的數(shù)字,程序又該怎么設(shè)計(jì)?(假設(shè)N最大不超過(guò)99以十進(jìn)制計(jì)算,輸出的符號(hào)每10個(gè)為一行進(jìn)行顯示)四示例程序清單 EXA3T.ASMCRLF MACROMOV DL,0DHMOV AH,02HINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATASEGMENTMESS1DB 'INPUT THE SEGMENT ADDR

34、:$ 'MESS2DB 'INPUT THE OFFSET ADDR:$'MESS3DB 'OK HAS FOUND!',0DH,0AH,'$'MESS4DB 'NO SPACE CHARACTER!',0DH,0AH,'$'ERRORDB 'INPUT ERROR!',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTADW 32 DUP(?)TOPDW ?STACKENDSCODESEGMENT CODEASSUMECS:CODE,DS:DATA,ES:D

35、ATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET MESS1INT 21HCALL GETNUMMOV ES,DXMOV AH,09HMOV DX,OFFSET MESS2INT 21HCALL GETNUMMOV DI,DXCLDMOV CX,0100HMOV AL,20HREPNZ SCASBJNZ NFUMOV AH,09HMOV DX,OFFSET MESS3INT 21HJMP BBBNFU:MOV AH,09HMOV DX,OFFSET MESS4INT 21HBBB:MOV AX,4C00

36、HINT 21HGETNUMPROC NEARPUSH CXXOR DX,DXGGG:MOV AH,01HINT 21HCMP AL,0DHJZ PPPCMP AL,20HJZ PPPSUB AL,30HJB KKKCMP AL,0AHJB GETSCMP AL,11HJB KKKSUB AL,07HCMP AL,0FHJBE GETSCMP AL,2AHJB KKKCMP AL,2FHJA KKKSUB AL ,20HGETS:MOV CL,04HSHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK:MOV AH,09HMOV DX,OFFSET ERRORINT 21

37、HJMP GGGPPP:PUSH DXCRLFPOP DXPOP CXRETGETNUMENDPCODEENDSENDSTART五預(yù)習(xí)要求1分析示例程序,說(shuō)明其功能。 2考慮如何測(cè)試示例程序的每一項(xiàng)功能。3參考圖6所示的流程圖編寫(xiě)響鈴程序。注:關(guān)于匯編語(yǔ)言程序的建立與運(yùn)行方法,請(qǐng)參考實(shí)驗(yàn)一中的第四部分第三節(jié)的內(nèi)容。六預(yù)習(xí)報(bào)告1示例程序:· 畫(huà)出主程序與子程序的流程圖,分別說(shuō)明其功能。· 寫(xiě)出測(cè)試示例程序功能的方案。2響鈴程序:編寫(xiě)響鈴程序,要求包括以下內(nèi)容: 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案。編程提示:為了區(qū)別兩次響鈴聲,在輸入前

38、一個(gè)響鈴符后,需延遲一段時(shí)間,再輸入下一個(gè)響鈴符??捎弥貜?fù)執(zhí)行500000次LOOP指令的方法產(chǎn)生足以區(qū)別兩次響鈴聲的延時(shí),例如: MOVBL,14H CC:MOV CX,6000H UU:LOOP UU DEC BL JNZ CC 編程時(shí),應(yīng)根據(jù)上述要求,自行確定另外兩個(gè)常數(shù)送入BL和CX。七實(shí)驗(yàn)報(bào)告1示例程序: 測(cè)試時(shí)的操作與結(jié)果。 整理和修改預(yù)習(xí)報(bào)告中示例程序部分的內(nèi)容。2響鈴程序:整理編寫(xiě)的響鈴程序,要求包括以下內(nèi)容: 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案和測(cè)試結(jié)果。 實(shí)驗(yàn)中遇到的主要問(wèn)題,解決方法及其分析說(shuō)明。 實(shí)驗(yàn)四 匯編語(yǔ)言程序設(shè)計(jì)(2)

39、課內(nèi)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí) 一實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言程序設(shè)計(jì)中,多重循環(huán)程序的設(shè)計(jì)方法并熟悉ASCII碼表。二實(shí)驗(yàn)儀器及設(shè)備 1一套MASM6.11宏匯編軟件。 2一臺(tái)微型計(jì)算機(jī)。三實(shí)驗(yàn)內(nèi)容ASCII碼顯示程序,用16×16表格形式顯示ASCII字符00HFFH。四編程提示1參考流程如圖7所示。2在輸出空格時(shí),要保護(hù)DL中原來(lái)的內(nèi)容。3如果使用堆棧,需注意恢復(fù)堆棧指針(整個(gè)程序中進(jìn)棧,出棧次數(shù)相同)。4 雙重循環(huán),建議用CX作內(nèi)層循環(huán)指針(使用LOOP指令),用BX作為外層循環(huán)計(jì)數(shù)器。5 為了輸出格式的清晰、整齊和好識(shí)別,每?jī)尚兄g加一個(gè)空行,每?jī)闪兄g加一個(gè)空格;當(dāng)輸出“回車符”、“換行

40、符”、“制表符”等格式符時(shí),統(tǒng)一替換為“#”或者“空格符”等符號(hào)。五預(yù)習(xí)要求編寫(xiě)循環(huán)程序,要求包括以下內(nèi)容: 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案。六實(shí)驗(yàn)報(bào)告整理編寫(xiě)的循環(huán)程序,要求包括以下內(nèi)容: 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案和測(cè)試結(jié)果。 實(shí)驗(yàn)中遇到的主要問(wèn)題,解決方法及其分析說(shuō)明。實(shí)驗(yàn)五 匯編語(yǔ)言程序設(shè)計(jì)(3) 課內(nèi)實(shí)驗(yàn)學(xué)時(shí):2學(xué)時(shí) 一實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言程序設(shè)計(jì)中,子程序的設(shè)計(jì)與使用的方法。2學(xué)習(xí)字符串搜索程序。二實(shí)驗(yàn)儀器及設(shè)備1一套MASM6.11宏匯編軟件。2一臺(tái)微型計(jì)算機(jī)。三實(shí)驗(yàn)內(nèi)容1運(yùn)行示例程

41、序EXA5S.EXE,測(cè)試其功能。2鍵盤輸入數(shù)據(jù)顯示程序。將從鍵盤接收到的最后4位十六進(jìn)制數(shù)(以回車或空格結(jié)束)轉(zhuǎn)換為二進(jìn)制數(shù),顯示在屏幕上。如果鍵入非十六進(jìn)制數(shù)的字符,則先顯示出錯(cuò)信息,再顯示二進(jìn)制數(shù)。鍵入78A9B65(CR)78AF9B6K顯示1001101101100101INPUTERROR!1111100110110110提示:輸入的十六進(jìn)制數(shù)不足4位的前面補(bǔ)零;最后顯示的二進(jìn)制數(shù),可以按每4比特為一組,中間加空格符或者逗號(hào)隔開(kāi),便于核實(shí)是否正確,二進(jìn)制數(shù)所在的行最后可以固定顯示字母“B”表示二進(jìn)制。 思考擴(kuò)展要求:如果從鍵盤上只可以輸入字母和數(shù)字(字母的大小寫(xiě)不作要求,字母和數(shù)字

42、輸入的先后次序沒(méi)有要求),當(dāng)輸入結(jié)束符后,要求將最后接收到的4個(gè)字母對(duì)應(yīng)的ASCII的編碼值以十六進(jìn)制的顯示顯示出來(lái),程序又該怎么設(shè)計(jì)?例如: 鍵入78A9B65eP6M93(CR)顯示BePM42H 65H 50H 4DH四編程提示·參考圖8所示的流程圖。·可參考實(shí)驗(yàn)三的示例程序EXA3T.ASM的GETNUM子程序,但由主程序顯示出錯(cuò)信息,子程序建立出錯(cuò)標(biāo)志(BX=1);擴(kuò)展要求部分,可參考實(shí)驗(yàn)二示例程序的有關(guān)編程思路。 ·INT 21H將改變DX的內(nèi)容,在顯示出錯(cuò)信息前應(yīng)保護(hù)DX的內(nèi)容。五示例程序從字符串中搜索字符串1,兩個(gè)字符串均從鍵盤輸入。C:MASM6

43、11bin>PWB EXA5S.ASMCRLFMACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDATASEGMENTMESS1DB 'MATCH',0DH,0AH,'$'MESS2DB 'NO MATCH',0DH,0AH,'$'MESS3DB 'INPUT STRING1:',0DH,0AH,'$'MESS4DB 'INPUT STRING2:',0DH,0AH,'$'MAXLEN1

44、 DB 81ACTLEN1 DB ?STRING1 DB 81 DUP(?)MAXLEN2 DB 81ACTLEN2 DB ?STRING2DB 81 DUP(?)DATAENDSSTACKSEGMENTSTADB 50 DUP(?)TOPEQU LENGTH STASTACKENDSCODESEGMENT CODEASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV AH,09HMOV DX,OFFSET MESS3INT 21H

45、MOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21HCRLFMOV AH,09HMOV DX,OFFSET MESS4INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21HCRLFMOV SI,OFFSET STRING1MOV BX,SIMOV CL,SI-1MOV CH,00HMOV DX,CX;CX=DX=串1長(zhǎng)MOV DI,OFFSET STRING2PUSH DIMOV AL,DI-1MOV AH,00H;AX=串2長(zhǎng)ADDAX,OFFSET ACTLEN2;AX=串2末地址SUB AX,CXCLDKKK: CMPDI,AX

46、 JA NK;串2剩余長(zhǎng)度小于串1長(zhǎng)度MOV SI,BXMOV CX,DXREPZCMPSBPOP DIJZ GGG;找到串1轉(zhuǎn)INC DI;從串2下一個(gè)字符開(kāi)始搜索PUSH DI JMPKKKNK:MOV AH,09HMOV DX,OFFSET MESS2INT21HJMPPPPGGG:MOV AH,09HMOVDX,OFFSET MESS1INT 21HPPP: POP DIMOVAX,4C00HINT21HCODEENDSENDSTART六預(yù)習(xí)要求1分析示例程序,掌握搜索字符串的方法。2確定測(cè)試示例程序功能的步驟。3編寫(xiě)鍵盤輸入數(shù)據(jù)顯示程序。七預(yù)習(xí)報(bào)告1示例程序 畫(huà)出程序流程圖,說(shuō)明程序功能。 寫(xiě)出測(cè)試示例程序的步驟。2鍵盤輸入數(shù)據(jù)顯示程序按要求編寫(xiě)程序,要求包括以下內(nèi)容: 程序采用的主要算法。 程序框圖及源程序清單。 主要調(diào)試步驟、程序功能測(cè)試方案。八實(shí)驗(yàn)報(bào)告1示例程序: 程序流程圖。 測(cè)試操作與結(jié)果分析。2鍵盤輸入數(shù)據(jù)顯示程序:整理編寫(xiě)好的程

溫馨提示

  • 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)論