1632位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
1632位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
1632位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
1632位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
1632位微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩87頁(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、第1章 匯編語(yǔ)言程序設(shè)計(jì)概述1.1 匯編語(yǔ)言開(kāi)發(fā)環(huán)境 實(shí)驗(yàn)設(shè)備硬件設(shè)備 PC機(jī)一臺(tái) 匯編語(yǔ)言開(kāi)發(fā)環(huán)境1、DOS環(huán)境在計(jì)算機(jī)的任一邏輯盤上建一目錄,把下面四個(gè)文件拷貝到該文件夾下。編輯軟件EDIT.exe匯編軟件MASM.exe連接程序LINK.exe調(diào)試程序DEBUG.exe例如在邏輯盤D下建一子目錄MASM,把上述文件拷貝到該目錄下。該目錄在后面的匯編語(yǔ)言上機(jī)詳細(xì)過(guò)程中還會(huì)用到。2、WINDOWS集成開(kāi)發(fā)環(huán)境具體操作見(jiàn)第二章的2.1。 匯編語(yǔ)言程序上機(jī)操作一般過(guò)程 首先要用編輯軟件建立匯編語(yǔ)言的源程序文件。用匯編語(yǔ)言編寫的源程序不能由計(jì)算機(jī)直接執(zhí)行。須通過(guò)具有“翻譯”功能的系統(tǒng)程序匯編程序(

2、Assembler)匯編產(chǎn)生相應(yīng)的目標(biāo)代碼文件,再通過(guò)連接程序生成可執(zhí)行文件,則可以用DEBUG上機(jī)調(diào)試或運(yùn)行程序。編輯、匯編、連接、調(diào)試過(guò)程如圖1-1所示。用匯編語(yǔ)言編寫的程序叫源程序,源程序經(jīng)匯編程序翻譯后所得的機(jī)器指令代碼稱為機(jī)器語(yǔ)言目標(biāo)程序,簡(jiǎn)稱目標(biāo)程序。圖1-1 匯編語(yǔ)言程序上機(jī)過(guò)程1、編寫匯編語(yǔ)言源程序?qū)⒁鉀Q的應(yīng)用問(wèn)題用匯編語(yǔ)言語(yǔ)句編寫成程序,并建立擴(kuò)展名為.asm的源程序文件??扇芜x一種編輯軟件,來(lái)輸入、建立或修改源程序。不要用格式控制符,要求編輯完成的文件擴(kuò)展名必須是.asm。編輯源程序文件可任選下列軟件的一款:WORD、寫字板、書(shū)寫器、EDIT.COM、WP、行編輯軟件ED

3、LIN.COM等。2、匯編將匯編語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言程序的過(guò)程,即將*.ASM匯編語(yǔ)言源文件轉(zhuǎn)換為*.obj文件。由系統(tǒng)軟件匯編程序完成此翻譯過(guò)程。匯編程序有ASM.EXE、宏匯編MASM.EXE及TASM等,一般使用宏匯編MASM.EXE,因它比ASM.EXE功能強(qiáng)。TASM適用于8086/8088至Pentium系列CPU指令系統(tǒng)所編寫的匯編語(yǔ)言程序,是比較先進(jìn)的匯編工具。3、連接將不可執(zhí)行的二進(jìn)制文件轉(zhuǎn)換為可執(zhí)行文件,即將*.obj文件轉(zhuǎn)換為*.EXE文件。完成連接的程序有LINK.EXE或TLINK.EXE,將匯編產(chǎn)生的機(jī)器代碼程序(即.OBJ文件)連接成可執(zhí)行程序文件(即.EXE

4、文件)。4、程序調(diào)試(DEBUG)進(jìn)行匯編語(yǔ)言程序調(diào)試和文件格式轉(zhuǎn)換。常用軟件調(diào)試工具有:動(dòng)態(tài)調(diào)試程序DEBUG.COM、文件格式轉(zhuǎn)換程序EXE2BIN.EXE、交叉引用程序CREF.EXE、動(dòng)態(tài)調(diào)試程序TD(turbo Debugger簡(jiǎn)稱),可在DOS和Windows環(huán)境下運(yùn)行,用戶界面友好。1.2 匯編語(yǔ)言實(shí)驗(yàn)過(guò)程詳細(xì)步驟 DOS環(huán)境實(shí)驗(yàn)過(guò)程詳細(xì)步驟1、建立源程序運(yùn)行任選一款編輯軟件,輸入源程序。保存源程序文件,且擴(kuò)展名為.ASM。2、匯編 用編輯軟件建立的源程序.ASM文件,必須經(jīng)過(guò)匯編才能產(chǎn)生.OBJ文件。在Windows環(huán)境下,點(diǎn)擊屏幕左下角的“開(kāi)始”“所有程序”“附件”“命令提示

5、符”, 鍵入D: 并回車,再鍵入cd masm并回車,則顯示如圖1-2所示:圖1-2 命令提示符窗口在D:masm>提示符下鍵入MASM并回車,則在屏幕上顯示: Microsoft(R) Macro assemble Version 5.00 Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedSource filename .ASM:輸入要匯編的匯編語(yǔ)言源程序文件名,并回車,則屏幕顯示:OBJ filename<file>.obj:直接鍵入回車,則生成中括號(hào)中指定文件名的.obj文件;也可以在上述輸入自

6、己的文件名后再鍵入回車,則生成自己指定文件名的.obj文件。然后屏幕顯示: Source listingnul.lst: 直接鍵入回車,則不生成.lst文件;若要生成.lst文件,則鍵入一個(gè)文件名后鍵入回車,屏幕顯示: Cross-referencenul.crf:直接鍵入回車,則不生成.crf文件;若要生成.crf文件,則鍵入一個(gè)文件名后鍵入回車,屏幕顯示: 49748 + 451356 Bytes symbol space free 0 Warning Errors 0 Severe ErrorsD:masm>說(shuō)明:通過(guò)上述匯編后生成以下幾個(gè)文件。(1).OBJ文件.OBJ文件是必須

7、生成的一個(gè)目標(biāo)代碼文件,當(dāng)源程序中無(wú)語(yǔ)法錯(cuò)誤時(shí),則在當(dāng)前工作盤上自動(dòng)存入一個(gè).OBJ文件,供下一步連接用。若源程序有語(yǔ)法錯(cuò)誤時(shí),會(huì)出現(xiàn)錯(cuò)誤信息提示:文件名.ASM(12): error A2009: Symbol not defined: AX1文件名.ASM(15): error A2009: Symbol not defined: BRANCH1 50824 + 450280 Bytes symbol space free 0 Warning Errors (警告錯(cuò)誤) 2 Severe Errors (嚴(yán)重錯(cuò)誤)D:masm>上述有兩行錯(cuò)誤信息,錯(cuò)誤信息格式是:源程序文件(行號(hào)):

8、 錯(cuò)誤信息代碼 : 錯(cuò)誤信息說(shuō)明若嚴(yán)重錯(cuò)誤總數(shù)不為0,則.OBJ文件沒(méi)有生成,需回到編輯狀態(tài)下修改匯編源程序,并重新匯編,如此往復(fù),直到無(wú)錯(cuò)誤為止。(2).LST文件(列表文件).LST文件對(duì)調(diào)試程序有幫助,它是將源程序中各語(yǔ)句及其對(duì)應(yīng)的目標(biāo)代碼和符號(hào)表以清單方式列出,如果需要,在屏幕顯示的第二個(gè)提問(wèn)的冒號(hào)后輸入文件名即可,如果不需要,直接按回車鍵。(3).CRF文件(交叉引用文件)交叉引用.CRF文件給出了源程序中定義的符號(hào)引用情況,按字母順序排列。.CRF文件不可顯示,須用CREF.EXE系統(tǒng)程序?qū)?CRF文件轉(zhuǎn)換成為.REF文件后方可顯示輸出。若按后一種格式輸入,系統(tǒng)會(huì)依次出現(xiàn)四個(gè)提示信

9、息,比第一種格式多了一項(xiàng)源程序文件名的輸入。應(yīng)答方式與第一種格式相同。3、連接目標(biāo)程序 匯編后生成的.OBJ文件,其目標(biāo)代碼中的所有地址都是浮動(dòng)的偏移地址,機(jī)器不能直接運(yùn)行。必須用連接程序(LINK.EXE)對(duì)其進(jìn)行連接裝配定位,產(chǎn)生.EXE可執(zhí)行文件,方可運(yùn)行。在系統(tǒng)提示符(D:masm>)下鍵入LINK <.obj的文件名> ,并回車,屏幕上出現(xiàn)以下提示信息: Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run Fi

10、le <file>.EXE:缺省情況下,生成以源程序文件名(即方括號(hào)中的默認(rèn)值)的可執(zhí)行文件。如果不修改可執(zhí)行文件的文件名,則直接鍵入回車;否則,鍵入可執(zhí)行文件的文件名,并回車,則生成的可執(zhí)行文件以該文件名為名字。屏幕顯示: List File NUL.MAP: Libraries .LIB:連續(xù)鍵入回車后,返回系統(tǒng)提示符。連接后,可生成兩種文件:.EXE和.MAP。(1).EXE文件(可執(zhí)行文件)若連接過(guò)程中無(wú)錯(cuò)誤,則自動(dòng)在當(dāng)前工作盤生成.EXE文件。若有錯(cuò)誤,則會(huì)給出錯(cuò)誤信息提示,這時(shí)必須重新修改源程序,再匯編、連接。(2).MAP(連接映像文件)是一個(gè)列表清單文件,一般不用生

11、成。(3).LIB庫(kù)文件連接程序詢問(wèn)是否使用某種庫(kù)文件,不需使用庫(kù)文件直接按回車鍵。(4)若要連接多個(gè)模塊目標(biāo)程序,可用“+”把它們連接起來(lái)。在系統(tǒng)提示符下鍵入下列LINK命令并回車:D:MASM>LINK files1+files2+files3屏幕顯示同LINK一個(gè)模塊目標(biāo)程序一樣。4、調(diào)試和運(yùn)行程序經(jīng)過(guò)匯編、連接后生成的.EXE文件,可在DOS系統(tǒng)直接運(yùn)行,只要鍵入可執(zhí)行文件的文件名,并回車即可。例如:D:MASM><文件名>DOS的COMMAND.COM模塊將該程序裝配到內(nèi)存,并設(shè)置和分配啟動(dòng)地址。也可在DEBUG調(diào)試程序下運(yùn)行。如何用DEBUG程序來(lái)運(yùn)行和調(diào)試

12、程序?qū)⒃贒EBUG調(diào)試程序中詳細(xì)討論。5、DEBUG調(diào)試程序 DEBUG.EXE程序是專門為開(kāi)發(fā)匯編語(yǔ)言程序而設(shè)計(jì)的一種調(diào)試工具,具有跟蹤程序執(zhí)行、觀察中間運(yùn)行結(jié)果、顯示和修改寄存器或存儲(chǔ)單元內(nèi)容等多種功能。它能使程序設(shè)計(jì)人員或用戶觸及到機(jī)器內(nèi)部,因此可以說(shuō)它是80X86CPU的心靈窗口,也是我們學(xué)習(xí)匯編語(yǔ)言必須掌握的調(diào)試工具。6、DEBUG程序使用在DOS系統(tǒng)提示符下鍵入命令并回車: D:masm>DEBUG 盤符:路徑文件名.EXE這時(shí)屏幕上出現(xiàn)DEBUG的提示符“-”,表示系統(tǒng)在DEBUG管理之下,此時(shí)可以用DEBUG進(jìn)行程序調(diào)試。若所有選項(xiàng)省略,僅把DEBUG裝入內(nèi)存,可對(duì)當(dāng)前內(nèi)

13、存中的內(nèi)容進(jìn)行調(diào)試,或者再用N和L命令,從指定盤上裝入要調(diào)試的程序;若命令行中有文件名,則DOS系統(tǒng)把DEBUG程序調(diào)入內(nèi)存后,再由DEBUG將指定可執(zhí)行文件裝入內(nèi)存。7、DEBUG常用命令簡(jiǎn)介(1)匯編命令 A格式:A 起始地址功能:將輸入源程序的指令匯編成目標(biāo)代碼并從指定地址單元開(kāi)始存放。若缺省起始地址,則從當(dāng)前CS:100地址開(kāi)始存放。A命令按行匯編,主要是用于小段程序的匯編或?qū)δ繕?biāo)程序的修改。(2)反匯編命令 U 格式1:U 起始地址 格式2:U 起始地址 結(jié)束地址 字節(jié)數(shù) 功能:格式1從指定起始地址處開(kāi)始將32個(gè)字節(jié)的目標(biāo)代碼轉(zhuǎn)換成匯編指令形式,缺省起始地址,則從當(dāng)前地址CS:IP開(kāi)

14、始。 格式2將指定范圍的內(nèi)存單元中的目標(biāo)代碼轉(zhuǎn)換成匯編指令。(3)顯示、修改寄存器命令 R格式:R 寄存器名功能:若給出寄存器名,則顯示該寄存器的內(nèi)容并可進(jìn)行修改。缺省寄存器名,則按以下格式顯示所有寄存器的內(nèi)容及當(dāng)前值(不能修改)。例如:-RAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0B03 ES=0B03 SS=0B03 CS=0B03 IP=0100 NV UP EI PL NZ NA PO NC -R AX ;輸入命令 AX 0000 ;顯示AX的內(nèi)容 : ;供修改,直接鍵入AX新值并回車;若不修改

15、,則直接鍵入回車。 若對(duì)標(biāo)志寄存器進(jìn)行修改,在DEBUG提示符下鍵入R F,并回車。例如:-R F NV UP DI PL NZ NA PO NC 屏幕顯示如上信息,分別表示OF、DF、IF、SF、ZF、AF、PF、CF的狀態(tài)。不修改按回車鍵。要修改,則個(gè)別輸入一個(gè)或多個(gè)此標(biāo)志的相反值,再按回車鍵。R命令只能顯示、修改16位寄存器。(4)顯示存儲(chǔ)單元命令 D格式1:D 起始地址格式2:D 起始地址 結(jié)束地址 字節(jié)數(shù)功能:格式1從起始地址開(kāi)始按十六進(jìn)制顯示80H個(gè)單元的內(nèi)容,每行16個(gè)單元,共8行,每行右邊顯示16個(gè)單元的ASCII碼,不可顯示的ASCII碼則顯示“·”。格式

16、2顯示指定范圍內(nèi)存儲(chǔ)單元的內(nèi)容,顯示方式與格式1一樣。如果不寫起始地址或地址范圍,則從當(dāng)前地址開(kāi)始按格式1顯示。例如,鍵入D 200并回車,屏幕顯示如下:-D 2000B03:0200 43 46 49 FE C4 8A 07 3C-20 74 01 AA 43 E2 BC C3 CFI.< t.C.0B03:0210 F6 46 04 02 75 43 8B D5-83 C2 05 57 B8 00 6C BB .F.uC.W.l.0B03:0220 40 00 33 C9 8B F2 BA 01-01 CD 21 5F 73 15 E8 8C .3.!_s.0B03:0230 DB

17、3D 02 00 74 23 3D 03-00 74 1E 3D 05 00 74 19 .=.t#=.t.=.t.0B03:0240 E9 AB D8 8B D8 B8 00 44-CD 21 B4 3E CD 21 F6 C2 .D.!.>.!.0B03:0250 80 75 53 F6 46 04 04 74-4D 8B 56 05 80 FA 00 74 .uS.F.tM.V.t0B03:0260 05 80 FE 3A 74 02 B2 40-80 CA 20 80 EA 60 E8 3C .:t. .<0B03:0270 E4 73 06 E8 47 DB E9 75-

18、D8 8B D5 83 C2 05 8A 7E .s.G.u.表示從DS:0200H開(kāi)始顯示128個(gè)單元內(nèi)容,其中DS值不同的計(jì)算機(jī)環(huán)境其值不同。-D 100 120;表示顯示DS:0100-DS:0120單元的內(nèi)容說(shuō)明:在DEBUG中,地址表示方式有如下形式: 段寄存器名:相對(duì)地址,如:DS:100段基值:偏移地址(相對(duì)地址),如:23A0:1500(5)修改存儲(chǔ)單元命令 E格式1:E 起始地址 內(nèi)容表格式2:E 地址功能:格式1按內(nèi)容表的內(nèi)容修改從起始地址開(kāi)始的多個(gè)存儲(chǔ)單元內(nèi)容,即用內(nèi)容表指定的內(nèi)容來(lái)代替存儲(chǔ)單元當(dāng)前內(nèi)容。例如:E DS:0100 'VAR' 12 34表示

19、從DS:0100 為起始單元的連續(xù)五個(gè)字節(jié)單元內(nèi)容依次被修改為'V'、'A'、'R'、12H、34H。格式2是逐個(gè)修改指定地址單元的當(dāng)前內(nèi)容。例如:E DS:0010156F:0010 41.5F其中156F:0010單元(注意:不同計(jì)算機(jī)環(huán)境DS值不一定是156F)原來(lái)的值是41H,5FH為輸入的修改值。若只修改一個(gè)單元內(nèi)容,這時(shí)按回車鍵即可;若還想繼續(xù)修改下一個(gè)單元內(nèi)容,則應(yīng)按空格鍵,就顯示下一個(gè)單元內(nèi)容,需修改就鍵入新內(nèi)容,不修改再按空格跳過(guò),如此重復(fù)直到修改完畢,按回車鍵返回DEBUG“-”提示符。如果在修改過(guò)程中,將空格鍵換成按“-”鍵

20、,則表示可以修改前一個(gè)單元內(nèi)容。(6)運(yùn)行命令 G格式:G=起始地址 第一斷點(diǎn)地址 第二斷點(diǎn)地址功能:CPU從指定起始地址開(kāi)始執(zhí)行,依次在第一、第二等斷點(diǎn)處中斷。若缺省起始地址,則從當(dāng)前CS:IP指示地址開(kāi)始執(zhí)行一條指令。最多可設(shè)置10個(gè)斷點(diǎn)。(7)跟蹤命令 T格式:T 起始地址 正整數(shù)功能:從指定地址開(kāi)始執(zhí)行正整數(shù)條指令,若缺省正整數(shù),表示執(zhí)行一條指令,若兩項(xiàng)都缺省,表示從當(dāng)前CS:IP指示地址開(kāi)始執(zhí)行一條指令。(8)指定文件命令 N格式:N <文件名或擴(kuò)展名>功能:指定即將調(diào)入內(nèi)存或從內(nèi)存寫入磁盤的文件名。該命令應(yīng)該用在L命令和W命令之前。(9)裝入命令 L格式1:L 起始地址

21、 盤符號(hào)扇區(qū)號(hào)扇區(qū)數(shù)格式2:L 起始地址功能:格式1根據(jù)盤符號(hào),將指定扇區(qū)的內(nèi)容裝入到指定起始地址的存儲(chǔ)區(qū)中。格式2將N命令指定的文件裝入到指定起始地址的存儲(chǔ)區(qū)中,若省略起始地址,則裝入到CS:100處或按原來(lái)文件定位約定裝入到相應(yīng)位置。(10)寫磁盤命令 W格式1:W <起始地址> 驅(qū)動(dòng)器號(hào)<起始扇區(qū)><扇區(qū)數(shù)>格式2:W 起始地址功能:格式1把指定地址開(kāi)始的內(nèi)容數(shù)據(jù)寫到磁盤上指定扇區(qū)中。格式2將起始地址的BX×10000H+CX個(gè)字節(jié)內(nèi)容存放到由N命令指定的文件中。在格式2的W命令之前,除用N命令指定存盤文件名外,還必須將要寫的字節(jié)數(shù)用R命令送

22、入BX和CX中。(11)退出命令 Q格式:Q功能:退出DEBUG,返回到操作系統(tǒng)。 其他Debug調(diào)試命令DEBUG調(diào)試的其他命令見(jiàn)表 1-1,請(qǐng)參考有關(guān)書(shū)籍。表1-1 DEBUG常用命令名稱含義命令格式A(Assemble)逐行匯編AaddressC(Compare)比較兩內(nèi)存塊C range addressD(Dump)顯示內(nèi)存單元(區(qū)域)內(nèi)容DaddressDrangeE(Enter)修改內(nèi)存單元(區(qū)域)內(nèi)容E address listF(Fill)填充內(nèi)存單元(區(qū)域)F range listG(GO)連續(xù)執(zhí)行程序G=address addressH(Hexarthmetic)兩參數(shù)進(jìn)行

23、十六進(jìn)制運(yùn)算H Value ValueI(Input)從指定端口地址讀取并顯示一個(gè)字節(jié)值I port addressL(Load)裝入某個(gè)文件或特定磁盤扇區(qū)的內(nèi)容到內(nèi)存LaddressM(Move)將內(nèi)存塊內(nèi)容復(fù)制到另一個(gè)內(nèi)存塊M range rangeN(Name)指定要調(diào)試的可執(zhí)行文件參數(shù)Nd:pathfilename.exeO(Output)將字節(jié)值發(fā)送到輸出端口O port address byteQ(Quit)退出DEBUGQR(Register)顯示或修改一個(gè)或多個(gè)寄存器內(nèi)容Rregister nameS(Search)在某個(gè)地址范圍搜索一個(gè)或多個(gè)字節(jié)值S range listT(

24、Trace)單步多步跟蹤T or TaddressValueU(Unassmble)反匯編并顯示相應(yīng)原語(yǔ)句Uaddress or UrangeW(Write)文件或數(shù)據(jù)寫入特定扇區(qū)Waddressdrive sector sector ?顯示幫助信息?第2章 80X86匯編語(yǔ)言實(shí)驗(yàn)內(nèi)容1.實(shí)驗(yàn)設(shè)備硬件:PC計(jì)算機(jī)一臺(tái);軟件,匯編軟件2.實(shí)驗(yàn)?zāi)康模?)熟悉匯編語(yǔ)言程序設(shè)計(jì)方法;(2)熟悉匯編程序調(diào)試過(guò)程;(3)掌握使用數(shù)據(jù)傳送、運(yùn)算類、轉(zhuǎn)移等指令編程及調(diào)試方法。(4)掌握順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序調(diào)用的編程方法。3.實(shí)驗(yàn)及實(shí)驗(yàn)報(bào)告要求(1)編程、調(diào)試、運(yùn)行、檢查結(jié)果,并記錄要求:對(duì)程序

25、反復(fù)輸入幾組數(shù)據(jù),并運(yùn)行程序,記錄結(jié)果。(2)實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告中應(yīng)包含實(shí)驗(yàn)內(nèi)容、源程序、實(shí)驗(yàn)步驟、運(yùn)行結(jié)果、結(jié)果分析是否正確及存在的問(wèn)題。2.1 系統(tǒng)認(rèn)識(shí)實(shí)驗(yàn)2.1.1 實(shí)驗(yàn)?zāi)康?掌握微型計(jì)算機(jī)匯編軟件調(diào)試匯編源程序的基本操作。熟悉傳送類指令、簡(jiǎn)單運(yùn)算類指令來(lái)編寫匯編語(yǔ)言源程序,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。 實(shí)驗(yàn)內(nèi)容 1、從3500H內(nèi)存單元開(kāi)始建立015共16個(gè)數(shù)據(jù)(建立的數(shù)據(jù)為00H,01H09H.0AH0FH)。并運(yùn)行之,檢查記錄結(jié)果。(1)分析3500H為偏移地址,對(duì)應(yīng)的段基址采用默認(rèn)的DS當(dāng)前值; 程序中,如果不涉及到堆棧,則堆棧段可省略。(2)實(shí)驗(yàn)程序DATA SEGMENT

26、ORG 3500H ;設(shè)定起始偏移地址,如果沒(méi)有該語(yǔ)句,默認(rèn)的偏移地址為0000HMEM1 DB 16 DUP(?)DATA ENDSCODE SEGMENT ;定義代碼段 ASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS,AXMOV DI,3500H ;程序開(kāi)始設(shè)數(shù)據(jù)區(qū)首址 MOV CX,0010H ;字節(jié)數(shù)送入CX中MOV AH, 00H ;SAHF ; 清標(biāo)志寄存器指令MOV AL, 00HA1:MOV DI,AL ;寫入一字節(jié)INC DI ;修改地址指針I(yè)NC AL ;修改數(shù)據(jù)LOOP A1;未填完轉(zhuǎn)移CODE ENDS ;代碼段結(jié)束 EN

27、D START ;程序結(jié)束2、如果1-1題建立的數(shù)據(jù)為BCD碼表示的十進(jìn)制數(shù)據(jù)(即建立的數(shù)據(jù)為00H,01H09H,10H15H),修改上述程序并調(diào)試運(yùn)行,檢查記錄結(jié)果。提示:BCD運(yùn)算,是二進(jìn)制編碼的十進(jìn)制運(yùn)算,使用指令A(yù)DD和DAA或INC和DAA共同完成,僅能使用AL進(jìn)行運(yùn)算。例如: 15+28進(jìn)行運(yùn)算,編程如下:MOV AL,15H ;15H是15的BCD碼表示ADD AL,28H ;28H是28的BCD碼表示,這里完成15H+28H=3DH運(yùn)算 DAA ;將AL中的結(jié)果3DH調(diào)整為BCD碼,結(jié)果為43H3、編程完成的求和運(yùn)算。調(diào)試運(yùn)行程序,并記錄運(yùn)算結(jié)果。4、將內(nèi)存3500H單元開(kāi)始

28、存放的09共10個(gè)字節(jié)數(shù)傳遞到3600H單元開(kāi)始的數(shù)據(jù)區(qū)中(可分同一段內(nèi)傳送和段間專送)。提示:該程序應(yīng)該編寫數(shù)據(jù)段,從3500H開(kāi)始存放09共10個(gè)數(shù);從3600定義10個(gè)字節(jié)單元,準(zhǔn)備接收數(shù)據(jù)。數(shù)據(jù)段定義如下:DATA SEGMENT ORG 3500HMEM1 DB 0,1,2,3,4,5,6,7,8,9 ORG 3600HMEM2 DB 10 DUP(?)DATA ENDS思考題:(1)如果上述數(shù)據(jù)段定義中沒(méi)有ORG語(yǔ)句,則從什么內(nèi)存地址開(kāi)始存放數(shù)據(jù)?(2)如果采用字?jǐn)?shù)據(jù)傳送,請(qǐng)修改程序,并調(diào)試運(yùn)行程序,記錄運(yùn)行結(jié)果。(3)如果采用串傳送指令(MOVSB,MOVSW),請(qǐng)修改程序,并調(diào)

29、試運(yùn)行程序,記錄運(yùn)行結(jié)果。提示:如果使用MOVSB,MOVSW指令,要將原始數(shù)據(jù)串的段基地址放入DS寄存器,接收數(shù)據(jù)的目的串段基地址放入ES寄存器,可以使DS與ES設(shè)置成同一個(gè)段基址(即邏輯段重疊);也可以設(shè)置成不同邏輯段,即數(shù)據(jù)段和附加數(shù)據(jù)段。4.1.3 實(shí)驗(yàn)步驟以實(shí)驗(yàn)內(nèi)容1為例實(shí)驗(yàn)步驟如下。實(shí)驗(yàn)內(nèi)容2、3、4請(qǐng)自行依照實(shí)驗(yàn)步驟完成調(diào)試并記錄實(shí)驗(yàn)結(jié)果。第1步 輸入源程序打開(kāi)WINDOWS環(huán)境下的匯編開(kāi)發(fā)環(huán)境,輸入源程序。在桌面上雙擊快捷方式圖標(biāo)“Masm for Windows 集成實(shí)驗(yàn)環(huán)境”。出現(xiàn)下面界面,其中右側(cè)是源程序模板,如圖2-1:按提示輸入編寫好的源程序。圖2-1 匯編源程序模板

30、圖2-1 說(shuō)明:在右側(cè)窗口給出了段結(jié)構(gòu)模板,根據(jù)模板輸入源程序。模板中的段名可以自己修改定義,沒(méi)有涉及到的段可省略不寫。輸入?yún)R編語(yǔ)言源程序后,保存程序(規(guī)定擴(kuò)展名為.ASM),使用ALT+X返回集成軟件環(huán)境。輸入源程序后,如圖2-2所示。圖2-2 輸入源程序后界面第2步:匯編 編譯/匯編成目標(biāo)文件,點(diǎn)擊運(yùn)行菜單下“編譯成目標(biāo)文件(OBJ)”,等待系統(tǒng)匯編,匯編成功后,匯編信息顯示于屏幕下面的窗口中,顯示編譯成功。如圖2-3所示。則可進(jìn)行第3步。如果顯示錯(cuò)誤提示信息,則返回第1步修改源程序后在匯編,直到無(wú)錯(cuò)誤為止。圖2-3 編譯/匯編命令第3步:連接連接生成可執(zhí)行文件。點(diǎn)擊運(yùn)行菜單下“生成可執(zhí)行

31、文件(EXE)”,等待系統(tǒng)對(duì)匯編生成的.obj文件進(jìn)行連接,連接成功后,生成相應(yīng)的可執(zhí)行文件(.EXE),信息顯示于屏幕下方的窗口上,如圖2-4所示。如果連接成功,顯示生成*.EXE文件成功,進(jìn)行下一步DEBUG調(diào)試。否則,返回第1步,修改源程序,再匯編、連接,直到無(wú)錯(cuò)誤信息為止。圖2-4 連接命令及連接成功后的信息顯示第4步:在DEBUG調(diào)試環(huán)境下進(jìn)行程序的調(diào)試過(guò)程通過(guò)DEBUG調(diào)試可以檢查程序每一條指令及程序執(zhí)行結(jié)果,以便查錯(cuò)和糾錯(cuò)。單擊運(yùn)行菜單下的“DEBUG調(diào)試”命令,則進(jìn)入DEBUG調(diào)試環(huán)境,并將上述生成的可執(zhí)行文件自動(dòng)裝入內(nèi)存。如圖2-5所示。圖 2-5 debug 調(diào)試環(huán)境窗口(

32、1)反匯編首先要確定你裝入的程序在內(nèi)存的位置,可通過(guò)反匯編來(lái)確定。反匯編是顯示裝入內(nèi)存的匯編語(yǔ)言程序及其機(jī)器指令在內(nèi)存的情況,在DEBUG命令提示符“-”下鍵入U(xiǎn)并回車,操作過(guò)程如下。-U 回車 ;從當(dāng)前IP指令指針開(kāi)始反匯編。即剛裝入內(nèi)存的指令開(kāi)始反匯編;或者-U 0000回車;從起始偏移地址0000H開(kāi)始反匯編,即剛裝入內(nèi)存的指令開(kāi)始反匯編。上述兩種格式的命令功能一樣,反匯編結(jié)果如圖2-6所示。-u0EB2:0000 B8610B MOV AX,0B610EB2:0003 8ED8 MOV DS,AX0EB2:0005 BF0035 MOV DI,35000EB2:0008 B91000

33、MOV CX,00100EB2:000B B400 MOV AH,000EB2:000D 9E SAHF0EB2:000E B000 MOV AL,000EB2:0010 8805 MOV DI,AL0EB2:0012 47 INC DI0EB2:0013 FEC0 INC AL0EB2:0015 E2F9 LOOP 00100EB2:0017 B44C MOV AH,4C0EB2:0019 CD21 INT 210EB2:001B 67 DB 670EB2:001C 7261 JB 007F0EB2:001E 6D DB 6D0EB2:001F 2E CS:0EB2:0020 0D0A0D

34、OR AX,0D0A-圖2-6 反匯編結(jié)果圖2-6說(shuō)明:v 鍵入U(xiǎn)命令后,屏幕顯示剛裝入的匯編程序;v 當(dāng)源程序較長(zhǎng)時(shí),再次鍵入 U并回車,繼續(xù)顯示后面的程序,直到屏幕上出現(xiàn)該調(diào)試程序的結(jié)尾語(yǔ)句,例如上述的INT 21,其后的語(yǔ)句不是本程序的;v 在反匯編出來(lái)的程序中,符號(hào)地址已經(jīng)用當(dāng)前內(nèi)存的實(shí)際地址表示,段寄存器已經(jīng)裝入了具體的段基址;v 數(shù)據(jù)和地址全部用十六進(jìn)制表示,省略H不顯示;v 第1、2列,為程序裝入內(nèi)存所在的物理地址,用邏輯地址形式表示,即 段基地址:偏移地址。注意:不同計(jì)算機(jī)的軟硬件環(huán)境不同,裝入內(nèi)存的物理地址可能會(huì)不同;v 第3列,為匯編語(yǔ)言指令語(yǔ)句對(duì)應(yīng)的機(jī)器代碼,4、5列為其

35、助記符指令,但所有的符號(hào)都用實(shí)際地址或值表示;v 第110行為你所編寫的程序。注意:你自己程序的結(jié)束語(yǔ)句:1B3C:0017 B44C MOV AH,4C1B3C:0019 CD21 INT 21該指令之后的指令,為內(nèi)存駐留的其他內(nèi)容,與你的程序沒(méi)有關(guān)系。(2)運(yùn)行程序 確定你的程序在內(nèi)存中的位置后,就可以運(yùn)行程序了。運(yùn)行程序可以用三種方式:?jiǎn)尾竭\(yùn)行、設(shè)斷點(diǎn)運(yùn)行、連續(xù)運(yùn)行等方式,具體操作如下。a.單步運(yùn)行單步運(yùn)行是每運(yùn)行一條指令后顯示當(dāng)前所有寄存器的內(nèi)容及下一條待執(zhí)行指令。在“-”提示符下鍵入T=0000并回車,表示從偏移地址0000H開(kāi)始執(zhí)行一條語(yǔ)句。屏幕顯示CPU所有寄存器的內(nèi)容,你僅查看

36、與你程序有關(guān)寄存器的結(jié)果,在這里,第一條指令的結(jié)果為:AX=0B61H,屏幕顯示結(jié)果如圖2-7所示。繼續(xù)執(zhí)行下一條指令,在“-”提示符下鍵入 T 并回車,再執(zhí)行一條指令;反復(fù)鍵入T命令,就可一步一步地運(yùn)行,直至程序最后一條語(yǔ)句為止。如圖2-8所示。-t=0000AX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B51 ES=0B51 SS=0B61 CS=0EB2 IP=0003 NV UP EI PL NZ NA PO NC0EB2:0003 8ED8 MOV DS,AX-圖 2-7單步調(diào)試-t=0000AX

37、=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B51 ES=0B51 SS=0B61 CS=0EB2 IP=0003 NV UP EI PL NZ NA PO NC0EB2:0003 8ED8 MOV DS,AX-tAX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0005 NV UP EI PL NZ NA PO NC0EB2:0005 BF0035 MOV DI,

38、3500-tAX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=3500DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0008 NV UP EI PL NZ NA PO NC0EB2:0008 B91000 MOV CX,0010-tAX=0B61 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=3500DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=000B NV UP EI PL NZ NA PO NC0EB2:000B B4

39、00 MOV AH,00-圖 2-8反復(fù)單步調(diào)試b連續(xù)運(yùn)行在“-”提示符下鍵入G=0000V0017并回車(系統(tǒng)默認(rèn)段基址CS情況下,可不寫段基址),該命令表示從偏移地址0000開(kāi)始連續(xù)執(zhí)行到0017結(jié)束。屏幕顯示如圖2-9所示。 -g=0000 0017AX=0010 BX=0000 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=3510DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0017 NV UP EI PL NZ AC PO NC0EB2:0017 B44C MOV AH,4C-圖 2-9連續(xù)執(zhí)行一段程序圖2-9顯示了執(zhí)

40、行到0016H,停止在0017H時(shí)CPU各寄存器的值,最后一行顯示暫停執(zhí)行的語(yǔ)句。(3)內(nèi)存單元內(nèi)容顯示 程序結(jié)束后,使用D命令可以查看某內(nèi)存區(qū)域的內(nèi)容。在DEBUG系統(tǒng)提示符“-”下鍵入D DS:3500并回車可查看0B61 :3500H單元開(kāi)始的內(nèi)存單元數(shù)據(jù)。其中0B61是DS的內(nèi)容,在命令中也可以直接輸入數(shù)據(jù)段基址值,3500是DI的內(nèi)容。內(nèi)存內(nèi)容顯示時(shí),每行16個(gè)字節(jié),用16進(jìn)制表示,前8個(gè)字節(jié)和后8個(gè)字節(jié)用“-”區(qū)分。圖 2-10所示,其中0B61:3500350F是本程序運(yùn)行結(jié)果。-d ds:35000B61:3500 00 01 02 03 04 05 06 07-08 09 0

41、A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .a.5.0B61:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO label.0B61:3540 0D 0A 8A 20 20 6C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 6

42、3 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 72 69 6E 67 20 75 73 65-64 20 69 6E 20 74 68 65 ring used in the0B61:3570 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-圖 2-10 內(nèi)存單元顯示(4)內(nèi)存單元內(nèi)容的修改 若要修改內(nèi)存單元內(nèi)容,使用E命令??蛇M(jìn)行如下操作,例如,將內(nèi)存35003507單元的內(nèi)容修改為FFH,在DEBUG系統(tǒng)提示符“

43、-”下鍵入E DS:3500并回車,如圖2-11所示。修改過(guò)程:首先顯示3500單元原來(lái)內(nèi)容00.,鍵入新內(nèi)容FF,按空格鍵顯示下一單元(3501單元)內(nèi)容00.,鍵入新內(nèi)容FF,如此往復(fù)。若要推出修改,按回車鍵。用D命令查看已修改內(nèi)存單元內(nèi)容,看看內(nèi)容是否已有變化。屏幕顯示如圖2-11所示。-d ds:35000B61:3500 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .a.5.0B61:3520 88 05 47 FE

44、 C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO label.0B61:3540 0D 0A 8A 20 20 6C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 63 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 72 69 6E 67 20 75 73 65-64 20

45、 69 6E 20 74 68 65 ring used in the0B61:3570 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-e ds:35000B61:3500 00.FF 01.FF 02.FF 03.FF 04.FF 05.FF 06.FF 07.FF-d ds:35000B61:3500 FF FF FF FF FF FF FF FF-08 09 0A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 0

46、0 .a.5.0B61:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO label.0B61:3540 0D 0A 8A 20 20 6C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 63 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 7

47、2 69 6E 67 20 75 73 65-64 20 69 6E 20 74 68 65 ring used in the0B61:3570 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-圖 2-11 E命令修改內(nèi)存單元內(nèi)容(5)程序運(yùn)行結(jié)束,請(qǐng)分析和記錄運(yùn)行結(jié)果。2.2 順序程序設(shè)計(jì)實(shí)驗(yàn)2.2.1 實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言順序結(jié)構(gòu)源程序的編寫,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。2.2.2 實(shí)驗(yàn)內(nèi)容 1、自內(nèi)存TABLE開(kāi)始連續(xù)16個(gè)單元中存放著015的平方值(即平方表),查表求任意數(shù)X(0£ X 

48、3;15)的平方值,并存入內(nèi)存RESULT單元。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。2、編程完成表達(dá)式計(jì)算 Z=3x+4y-4,其中x、y為字節(jié)單元,z為字單元。調(diào)試運(yùn)行程序并記錄結(jié)果。(1)提示:如果用字節(jié)乘法指令,例如可定義數(shù)據(jù)段及乘法語(yǔ)句如下:DATA SEGMENTX DB 4Y DB 5Z DW ?DATA ENDS.MOV AL,XMOV BL,3MUL BL;結(jié)果為:AX=AL*BL,AX存放結(jié)果(2)如果x、y為字單元,z為雙字單元,,請(qǐng)修改程序,調(diào)試運(yùn)行程序并記錄結(jié)果。3、現(xiàn)有兩個(gè)多字節(jié)壓縮BCD碼數(shù)9876543219H和1234567891H,它們分別按低位字節(jié)在前高位字

49、節(jié)在后存放在內(nèi)存A1和A2開(kāi)始的單元中,分別計(jì)算它們的和與差,并將結(jié)果分別存放在內(nèi)存SUM和DEF開(kāi)始的單元中。2.2.3 實(shí)驗(yàn)步驟1、根據(jù)實(shí)驗(yàn)內(nèi)容,編寫匯編語(yǔ)言源程序;2、上機(jī)調(diào)試和運(yùn)行程序;3、分析并記錄運(yùn)行結(jié)果。2.3 分支程序設(shè)計(jì)實(shí)驗(yàn)2.3.1 實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言分支結(jié)構(gòu)源程序的編寫,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。2.3.2 實(shí)驗(yàn)內(nèi)容 1、編寫程序,計(jì)算下面函數(shù)的值。調(diào)試運(yùn)行程序并記錄運(yùn)行結(jié)果。2、在在內(nèi)存DATA1開(kāi)始連續(xù)100個(gè)單元中存放100位同學(xué)某門課的考試成績(jī)(0100),請(qǐng)編寫程序統(tǒng)計(jì)大于等于90,8089分,7079分,6069分,小于60分的各分?jǐn)?shù)段學(xué)生人數(shù),分別存放

50、在內(nèi)存同一數(shù)據(jù)段從DATA2開(kāi)始的5個(gè)單元中。調(diào)試運(yùn)行程序并記錄運(yùn)行結(jié)果。提示:先建一個(gè)數(shù)據(jù)段存放100位學(xué)生的考試成績(jī),并預(yù)留5個(gè)單元用來(lái)存放各分?jǐn)?shù)段學(xué)生人數(shù);取每位學(xué)生成績(jī)放入AL并依次與90、80、70、60進(jìn)行比較。因是無(wú)符號(hào)數(shù),所以可用CF標(biāo)志作為分支條件,相應(yīng)指令為JC;根據(jù)每次比較確定成績(jī)所在范圍,用INC指令將存放相應(yīng)結(jié)果單元的內(nèi)容加1;因?yàn)閷W(xué)生和成績(jī)都沒(méi)有超過(guò)一個(gè)字節(jié)所能表示的范圍,故所定義的變量均為字節(jié)類型;因每次只能處理一個(gè)學(xué)生的成績(jī),所以要通過(guò)一個(gè)循環(huán)來(lái)處理100位學(xué)生的成績(jī)。2.3.3 實(shí)驗(yàn)步驟1、根據(jù)實(shí)驗(yàn)內(nèi)容,編寫匯編語(yǔ)言源程序;2、上機(jī)調(diào)試和運(yùn)行程序;3、分析并記

51、錄運(yùn)行結(jié)果。2.4 循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)2.4.1 實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言循環(huán)結(jié)構(gòu)源程序的編寫,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。2.4.2 實(shí)驗(yàn)內(nèi)容 1、從內(nèi)存BUFFER單元開(kāi)始存放若干個(gè)字節(jié)數(shù)據(jù),求其中負(fù)數(shù)的個(gè)數(shù)并存入MDAT單元中。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。2、從內(nèi)存BUFFER單元開(kāi)始存放若干個(gè)字?jǐn)?shù)據(jù),求出其中正數(shù)的個(gè)數(shù)并存入PDAT單元中。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。3、求一批無(wú)符號(hào)字節(jié)數(shù)的最小值,放入MDATA單元。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。4、求一批有符號(hào)字?jǐn)?shù)據(jù)中的最大值和最小值,分別存入MDATA單元和NDATA單元。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。2.

52、4.3 實(shí)驗(yàn)步驟1、根據(jù)實(shí)驗(yàn)內(nèi)容,編寫匯編語(yǔ)言源程序;2、上機(jī)調(diào)試和運(yùn)行程序;3、分析并記錄運(yùn)行結(jié)果。2.5 子程序設(shè)計(jì)實(shí)驗(yàn)2.5.1 實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言主、子結(jié)構(gòu)源程序的編寫,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。2.5.2 實(shí)驗(yàn)內(nèi)容 1、某程序中需要對(duì)N個(gè)元素的數(shù)組求和。完成數(shù)組N個(gè)元素求和設(shè)計(jì)為屬性是NEAR的過(guò)程。且過(guò)程與主程序在同一代碼段。請(qǐng)編寫主子程序,調(diào)試運(yùn)行程序并記錄運(yùn)行結(jié)果。提示:主程序中將入口參數(shù)直接定義到一個(gè)數(shù)據(jù)段里,子程序從該數(shù)據(jù)段內(nèi)存單元讀取入口參數(shù),子程序執(zhí)行結(jié)果(返回參數(shù))直接寫入內(nèi)存單元。2.5.3 實(shí)驗(yàn)步驟1、根據(jù)實(shí)驗(yàn)內(nèi)容,編寫匯編語(yǔ)言源程序;2、上機(jī)調(diào)試和運(yùn)行程序

53、;3、分析并記錄運(yùn)行結(jié)果。2.6 字符串處理程序?qū)嶒?yàn)2.6.1 實(shí)驗(yàn)?zāi)康?掌握匯編語(yǔ)言字符串處理源程序的編寫,掌握調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果分析。2.6.2 實(shí)驗(yàn)內(nèi)容 1、已知從DS:2200H,ES:3200H單元起分別存放20個(gè)ASCII碼字符。找出這兩個(gè)字符串中第一個(gè)不同字符的位置(段內(nèi)偏地址),并放入DS:22A0H開(kāi)始的連續(xù)兩個(gè)單元中。要求:(1)使用比較指令(CMP)實(shí)現(xiàn);(2)使用數(shù)據(jù)串比較指令(CMPSB)實(shí)現(xiàn)。請(qǐng)別寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。2、在數(shù)據(jù)區(qū)2000H開(kāi)始100字節(jié)范圍內(nèi),查找字符'A',若找到,則將偏移地址送入DX,沒(méi)有找到,則-1送DX。請(qǐng)編寫程序,調(diào)試運(yùn)行程序并記錄結(jié)果。3

溫馨提示

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