組合語言程式設計實驗報告二

2021-03-04 09:39:16 字數 2821 閱讀 8396

1、實驗目的

1)加深對迴圈結構的理解。

2)掌握迴圈程式的設計方法。

3)學習子程式的定義和呼叫方法。

4)掌握子程式、子程式的巢狀、遞迴子程式的結構。

5)掌握子程式設計、編制及除錯。

6)熟練掌握debug的常用命令,學會用debug除錯程式。

2、實驗內容

1)編制在螢幕上顯示九九乘法表的程式。

2)編制在螢幕上顯示用*組成的三角形的程式。

3、實驗結果

(1)(2)

4、源**

(1)data segment

m db 31h,32h,33h,34h,35h,36h,37h,38h,39h

data ends

stack1 segment stack

dw 20h dup(?)

stack1 ends

code segment

assume cs:code,ds:data,ss:stack1

start:mov ax,data

mov ds,ax

mov cx,9

mov di,offset m

lop1:push cx

mov cx,[di]

and cx,0fh

mov si,offset m

lop2:mov al,[si]

mov dl,al

mov ah,2

int 21h

and al,0fh

mov bh,al

mov dl,'*'

mov ah,2

int 21h

mov bl,[di]

mov dl,bl

mov ah,2

int 21h

mov dl,'='

mov ah,2

int 21h

and bl,0fh

mov al,bh

mul bl

mov ah,0

mov dl,10

div dl

mov bl,ah

cmp al,0

je next

mov dl,al

add dl,30h

mov ah,2

int 21h

next:mov dl,bl

add dl,30h

mov ah,2

int 21h

mov dl,' '

mov ah,2

int 21h

inc si

loop lop2

mov dl,0ah

mov ah,2

int 21h

mov dl,0dh

int 21h

inc di

pop cx

loop lop1

mov ah,4ch

int 21h

code ends

end start

(2)stack1 segment stack

dw 20h dup(?)

stack1 ends

code segment

assume cs:code,ss:stack1

begin:

mov ah,1

int 21h

mov bl,al

sub bl,30h

mov dl,0ah

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

mov bh,0

mov cx,bx

mov bx,1

l1: push cx

mov cx,bx

l2: mov dl,'*'

mov ah,2

int 21h

loop l2

mov dl,0ah

mov ah,2

int 21h

mov dl,0dh

mov ah,2

int 21h

add bx,1

pop cx

loop l1

mov ah,4ch

int 21h

code ends

end begin

5、實驗心得

這是第二次做彙編實驗,首先,心理上已經沒有了第一次做實驗的那種茫然,知道了想要編寫乙個完整的程式,應當先將這乙個大問題分解成若干個小的問題,找出每乙個小問題所對應的解決方法,然後用**一步一步實現,再將這乙個乙個的小問題串聯起來,找到它們的契合點,用聯絡把它們組成乙個完整的程式,其中最常用的就是轉移指令和迴圈。

這次實驗遇到的困難比較多,比如程式裡面明明寫了很多的輸出指令,但最後執行的時候就是沒有輸出,還有對於乘法的計算結果十六進製制數向十進位制的轉化不到位,使得最後結果裡面顯示的總是亂碼。對迴圈次數控制的不當,導致了最後輸出的結果只能是一行,而且迴圈控制語句裡用幾控制,就會顯示出第幾行。或者是輸出回車換行的時候,不知道要兩個一起輸出,導致結果顯示混亂。

另外還有一些編寫程式時出現的小錯誤,例如divide overflow,還有目的運算元和源運算元型別不匹配等等。這些問題都需要自己在除錯的過程中逐一解決。

遇到的錯誤很多,並且無論怎樣修改都還是不能使程式達到完美的狀態的時候,情緒會比較不穩定,這時候才知道,編寫程式除了有思路,有想法,有語言知識,還要有很強大的心理,要有耐心,才能去面對這一連串的錯誤。不過有了錯誤也不可怕,因為這些錯誤讓我學到了很多用指令時應當注意的問題,知道了一些程式中固定的模式與指令。

總之,通過這次實驗,對彙編的認識又加深了一些,不管是在整體上,還是在具體的程式上,都有了明顯的進步。

組合語言程式設計實驗報告

2011年 11 月 27日 實驗三迴圈程式設計 一 實驗目的 1 學習除錯程式,查詢邏輯錯誤 2 掌握迴圈程式設計的方法 3 掌握正確分配與使用暫存器。二 實驗內容與要求 題目1 陣列中是一組無符號數,將最小數放在m單元中,經過彙編後,形成.exe檔案,先用g 0命令執行程式,用 d命令檢視m單元...

組合語言程式設計實驗報告

實驗室 s318 最後一次實驗時間 2010 年 5 月18 日 第12周星期二1 2節 學院 電腦科學與技術學院 專業 電腦科學與技術 實驗一實驗題目 認識tddebug整合環境 實驗目的 1.熟悉匯程式設計序的開發過程。2.認識tddebug整合操作軟體。3.掌握在tddebug整合環境中編輯 ...

組合語言程式設計實驗報告冊

資訊學院 學號姓名 班級實驗教師 實驗一 利用debug命令除錯小匯程式設計序 一.實驗目的 二.實驗工具軟體 三.實驗過程 除錯結果及結論 實驗二 資料傳送類指令。一.實驗目的 二.實驗工具軟體 三.實驗過程 除錯結果及結論 實驗三 查表及定址方式 一.實驗目的 二.實驗工具軟體 三.實驗過程 除...