數(shù)據(jù)傳送程序設(shè)計_第1頁
數(shù)據(jù)傳送程序設(shè)計_第2頁
數(shù)據(jù)傳送程序設(shè)計_第3頁
數(shù)據(jù)傳送程序設(shè)計_第4頁
數(shù)據(jù)傳送程序設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

數(shù)據(jù)傳送程序設(shè)計一、實驗?zāi)康模簩W(xué)習(xí)數(shù)據(jù)傳送的用法以及與數(shù)據(jù)有關(guān)的不同尋址方式。熟悉匯編語言程序的上機運行過程。學(xué)會使用DEBUG命令調(diào)試程序。二、實驗儀器:1〕儀器:英特爾586配置以上電腦一臺,內(nèi)存512MB以上,windowsxp操作系統(tǒng)。2〕軟件:MASM5.0匯編軟件或者EMU8086三、實驗內(nèi)容:1)將40個字母A的字符串從源緩沖區(qū)傳送到目的緩沖區(qū)。2)將26個小寫英文字母存放到數(shù)據(jù)段1偏移地址為2000H單元開始的內(nèi)存中,然后轉(zhuǎn)換成大寫字母并傳送到數(shù)據(jù)段2以3000H單元開始的存儲區(qū)。四、實驗步驟:點擊電腦的“開始”—》“運行”,輸入“CMD”,翻開DOS系統(tǒng)界面通過CD命令進入MASM軟件目錄使用edit命令編輯程序〔程序清單見〕C:\MASM>EDITfilename.ASM(enter)〔filename可以自己隨意命名〕4〕使用masm和link命令對程序進行匯編,連接。C:\MASM>MASMfilename.asm(enter)C:\MASM>linkfilename.obj(enter)5〕使用Debug命令調(diào)試程序,觀察調(diào)試過程中數(shù)據(jù)傳輸指令執(zhí)行后各存放器及數(shù)據(jù)區(qū)的內(nèi)容。C:\MASM>DEBUGfilename.EXE屏幕上出現(xiàn)一個短劃線。為了確定我們所要設(shè)定的斷點地址,常常用到反匯編命令,反匯編命令格式如下:--U;從當(dāng)前地址開始反匯編用G命令來設(shè)置斷點。比方想把斷點設(shè)置在301CH處,那么如下打入命令:—G301C;程序在0120H處停下,并顯示出所有存放器以及各標(biāo)志位的當(dāng)前值,在最后一行還給出下一條將要執(zhí)行的指令的地址、機器語言和匯編語言,可以從顯示的存放器的內(nèi)容來了解程序運行是否正確。對于某些程序段,單從存放器的內(nèi)容看不到程序運行的結(jié)果,而需要觀察數(shù)據(jù)段的內(nèi)容,此時可用D命令,使用格式如下:—DDS:0000;從數(shù)據(jù)段的O單元開始顯示128個字節(jié)—t單步執(zhí)行—R查看存放器的值—Q;退出五、程序清單:程序1:datasegment ;數(shù)據(jù)段的定義source_bufferdb40dup('A')dataends;**************extrasegment ;附加段的定義dest_bufferdb40dup(?)extraendscodesegmentorg0100h ;程序首地址assumecs:code,ds:data,es:extrastart:pushds subax,ax pushax movax,data movds,ax movax,extra moves,ax leasi,source_buffer leadi,dest_buffer Cld movcx,40 repmovsb movah,4ch int21h codeends endstart程序2:data1segment ;定義數(shù)據(jù)段1 org2000h ;變量存放至數(shù)據(jù)段2000h單元 source_bufferdb26dup(?) ;預(yù)留26個字節(jié)單元data1endsdata2 segment org3000h dest_buffer1db26dup(?)data2 endsextra segment dest_buffer2db26dup(?)extra endscode segment org0100hassume cs:code,ds:data1,ds:data2,es:extrastart:movax,data1 movds,ax leasi,source_buffermovax,'a' movcx,26xiao:mov[si],axincsiincaxloopxiao leadi,dest_buffer2 cld movcx,26 movax,extramoves,ax leasi,source_bufferda1: lodsb ;源串DS:SI中數(shù)據(jù)送axsubax,20h ;將字符串轉(zhuǎn)換為大寫字母stosb ;ax內(nèi)容送ES:DI loopda1 movax,data2 movds,ax leadi,dest_buffer1 leasi,dest_buffer2 movcx,26da2: movax,es:[si] mov[di],axincsiincdiloopda2 movax,movah,4ch int21hcode ends 程序2流程圖end start六、實驗結(jié)果及分析:圖1程序1實驗結(jié)果圖2程序2實驗結(jié)果實驗結(jié)果分析:圖1中字母送入數(shù)據(jù)段及附加段以0000H為偏移段首址的同時,在以1459:0030段開始的數(shù)據(jù)段也送入了相同的數(shù)據(jù),這是因為1459:0030與145C:0000對應(yīng)相同的物理地址,即14590H+0030H=145C0H+0000H=145C0H。圖2中顯示大寫字母與小寫字母存放在不同數(shù)據(jù)段,這是因為程序中先將小寫字母送入以偏移地址為2000H單元開始的數(shù)據(jù)段1,此時該數(shù)據(jù)段段基址為1461H,然后編寫程序?qū)⑿懽帜皋D(zhuǎn)換成大寫字母送入附加段中暫存,最后將附加段中的數(shù)據(jù)傳送至偏移地址為3000H開始的數(shù)據(jù)段2,此時的段基址為1663H。

七、實驗思考與總結(jié):思考:如果不用串操作指令,該如何修改程序?圖3思考題實驗結(jié)果思考題采用傳送指令與循環(huán)控制語句實現(xiàn)了字符串的傳送操作,這種方法相比串操作指令簡單容易理解,但是不適合大批量無規(guī)律數(shù)據(jù)操作。實驗總結(jié):本次數(shù)據(jù)傳送實驗驗證了數(shù)據(jù)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論