匯編語言程序設計實驗報告四


南京信息工程大學實驗報告 實驗名稱 實驗 4 [bx]和loop的使用 實驗日期 得分

學院 計軟院

專業 計算機科學與技術

年級 2017級

班次 5班 姓名 陳奕明 學號 20171308194 


一、實驗目的


1. 理解和掌握寄存器間接尋址方式[bx]

2. 通過匯編指令loop的使用理解編程語言中循環的本質

3. 熟練掌握使用debug按需調試完整匯編源程序的方法


二、實驗准備
1. 學習/復習第 5章使用[bx]和loop實現循環的編程應用示例(教材 5.5節,5.8節)

2. 復習第3章「棧」的知識 3. 結合第4章課件,復習完整匯編源程序編寫→匯編→連接→運行→調試的方法


三、實驗內容
1. 綜合使用 loop,[bx],編寫完整匯編程序,實現向內存 b800:07b8 開始的連續 16 個 字單元重復填充字數據0403H。

2. 綜合使用 loop,[bx],編寫完整匯編源程序,實現向內存 0:200~0:23F 依次傳送數據 0~63(3FH)。 (1)必做:綜合使用loop, [bx], mov實現 (2)選做*:利用棧的特性,綜合使用 loop,push 實現(限定僅使用 8086 中已學過 指令實現)

3. 教材實驗4(3)(P121)


四、實驗結論
1. 實驗內容1

(1)源代碼:

assume cs:code
code segment

mov ax, 0b800h
mov ds, ax

mov bx,07b8h
mov ax,0441h

mov cx,15

s: mov ds:[bx],ax
add bx,2
loop s

mov ah,4ch
int 21h
code ends
end

第一次實驗截圖:

匯編,連接生成可執行文件完成。

可執行文件執行結果如下:與老師所給樣件符合

(2)將源代碼程序中字數據0403H→修改為0441H,再次運行,截圖顯示運行結果。 

數據修改后,可執行文件執行結果如上


2. 實驗內容2(必做部分) (1)源代碼 (2)匯編、鏈接無誤后,靈活使用 debug 的 t 命令、g 命令、p 命令調試,用 d 命令 查看0:200~0:23F,確認是否將0~63傳送至此段內存區域。這部分,要求有截圖。 (選做部分,如完成,也按上述要求在博客文檔中撰寫相應內容)

源碼如下:

assume cs:code
code segment

mov ax, 0020h
mov ds, ax

mov cx,64
mov bx,0

s: mov ds:[bx],bx
add bx,1
loop s

mov ah,4ch
int 21h
code ends
end


實驗結果如上,0:200~0:23F所指的內存空間已經按照其連續順序被賦了指定的值
3. 實驗內容3

(1)源代碼 :

assume cs:codesg
codesg segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,0017h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end


(2)匯編連接后,靈活使用debug的t命令、g命令、p命令調試,用d命令查看0:200 之后的若干字節,觀察是否將mov ax, 4c00h之前的指令復制到指定內存,這部分要求有截 圖,並以文字方式說明空白處填寫依據。

 

這道題思路如下:

首先第一個空應該是填cs 因為cs寄存器指向了程序的開始處,而第二個空的話我們知道這段程序的代碼長度在cx中存放(用debug來調試時)。所以我們可以先在 2 空處填上cx,即先讓程序能編譯鏈接生成對應的target.exe文件,然后用debug t5exe來對其調試,然后輸入r后查看cx的值,如果不知道mov ax,4c00h 和int 21h占了多少字節,都可以通過輸入u后就可以看到各條命令占了多少字節。獲得了總長度之后,再用其減去mov ax,4c00h 和int 21h占用的字節,所得的結果就是(2)出所應該填寫的值了。

 

匯編,連接,生成可執行文件。

由這里可以看到cx寄存器的值為1B,那還要減去mov ax,空間4c00h 和int 21h這兩條指令的大小

由上可得,循環次數為17次,所以第二空填入為0017h

填入后重新調試代碼,運行結果如下:

 

 

 

 

 

五、總結與體會
loop可以大大簡化程序中需要重復執行的部分,提高了代碼的可讀性,需要在以后的學習中認真體會這一點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM