1. 程式人生 > >微機實驗報告3 資料傳送實驗

微機實驗報告3 資料傳送實驗

     

班級  軟體工程16-1  學號  3162052051116  姓名  張識虔  同組實驗者              

實驗名稱            資料傳送實驗                             

日期 2018 11 13

一、實驗目的:

1. 掌握與資料有關的不同定址方式。

 2. 繼續熟悉實驗操作軟體的環境及使用方法。

二、實驗環境:

實驗裝置 PC 微機一臺。

三、實驗內容:

本實驗要求將資料段中的一個字串傳送到附加段中,並輸出附加段中的目 標字串到螢幕上。

 

 程式設計要點:獲取資料來源的段地址和偏移地址,將源地址的資料一個一個 的複製到目的地址上去,直到字串複製完成。傳送資料的程式流程圖如圖 2-2-1 所示。

 

                             

2-2-1  資料傳送流程圖 根據上述流程圖編寫實驗程式(例程檔名:A2.ASM

 

DATA SEGMENT             ;定義資料段  

MSR DB "HELLO,WORLD!$"   

LEN EQU $- MSR

DATA ENDS

EXDA SEGMENT              ;定義附加資料段   

MSD DB LEN DUP(?)

EXDA ENDS

MYSTACK SEGMENT STACK   ;定義堆疊段

DW 20 DUP(?)

MYSTACK ENDS

CODE SEGMENT              ;定義程式碼段 

ASSUME CS:CODE,DS:DATA,ES:EXDA

START: MOV AX,DATA  

MOV DS,AX              ;裝載資料到 DS 中  

MOV AX,EXDA    

MOV ES,AX              ;裝載附加資料到 ES 中

MOV SI,OFFSET MSR      ;設定 SI  

MOV DI,OFFSET MSD     ;設定 DI  

MOV CX,LEN

NEXT: MOV AL,[SI]           ;開始傳輸資料 

MOV ES:[DI],AL  

INC SI  

INC DI  

DEC CX  

JNZ NEXT    

PUSH ES    

POP DS                  ;將附加段暫存器指向的段值賦給資料段暫存器    

MOV DX,OFFSET MSD    

MOV AH,9    

INT 21H

KEY: MOV AH,1              ;判斷是否有按鍵按下?    

INT 16H                 ;(為觀察執行結果,使程式有控制的退出)    

JZ KEY    

MOV AX,4C00H          ;結束程式退出    

INT 21H

CODE ENDS    

END START

 

2.2.4 實驗步驟

(1) 編輯原始碼 將程式原始碼編輯完成之後修改檔名為 A2.asm,並儲存在目錄 E:\MYCODE 下。

(2) 編譯 A2.asm 檔案 進入 DOS 系統開啟 E MYCODE 資料夾所在目錄,並編譯 A2.asm 檔案, 知道編譯無錯誤。如圖 2-2-2 所示。

2-2-1  生成 A2.obj 檔案

(3) 連結 A2.obj 檔案 使用 LINK 命令連結 A2.obj 檔案,生成 A2.exe 檔案。執行 A2.exe 檔案,查 看執行結果。如圖 2-2-3 所示。

 

2-2-3  生成 A2.exe 檔案

執行程式後,螢幕顯示“HELLOWORLD!”。說明程式執行正確。下 面我們通過除錯檢視記憶體資料,來了解資料的傳輸過程。

(4) DEBUG 除錯

輸入命令 E:\masm5.0>debug a2.exe 回車可進入除錯系統,首先對 a2.exe 進行

反彙編,如圖 2-2-4 所示。

 

2-2-4  a2.exe 反彙編

 

 

從反彙編的程式上可以看出,原字串存放的段地址為 0x076A,偏移地址 0x0000,複製字串的目的地址的段地址為 0x076A,偏移地址為 0x0000 字串的長度為 0x0E。下面通過記憶體檢視命令檢視源地址和目的地址的資料情 況,如圖 2-2-5 所示。

 

 

2-2-5  源地址與目的地址的資料

從圖 2-2-5 可直接看出原地址所存放的資料為“HELLO,WORLD!”,目的地 址存放的資料全部為 0。現將程式執行至 0CDA:001B 處,程式執行到此處時, 可完成一個位元組的資料傳輸,檢視目的地址的記憶體資料。如圖 2-2-6 所示。

 

2-2-6  傳輸一個位元組後目的地址的資料

傳輸一個位元組後可在目的地址的第一個資料位 0x48,其 ASCII 碼為‘H’。 同時也可觀察 AX 寄存的低 8 位也為 0x48。將程式執行至 0CDA:001D 處,此時 程式已經跳出了資料傳送的迴圈,資料的傳送工作已將完成。檢視目的地址的內 存資料,如圖 2-2-7 所示。

 

2-2-7  資料傳送完成後目的地址的資料

由圖 2-2-7 可直接看出資料傳送完成之後目的地址存放的資料與源地

 

四、心得體會: