三組合語言程式設計

2022-11-26 00:09:02 字數 4330 閱讀 5046

軟體要求:win98或win2000

masm5.0或masm6.0(含masm、link、debug等程式)

硬體要求:ibm-pc及相容機

實驗一非壓縮bcd碼乘法

一、實驗目的:

學習程式設計的基本方法和技能,熟練掌握用組合語言設計、編寫、除錯和執行程式的方法。為後續課程打下堅實的基礎。同時熟練掌握資料傳送指令、算術運算指令和十進位制運算調整指令。

二、實驗內容:

程式設計實現c=a*b,其中a、b單元分別存放著兩位用非壓縮bcd碼表示的十進位制數34和56。

三、實驗要求:

1、 上機前要作好充分準備,包括程式框圖、源程式清單、除錯步驟、測試方法、對執行結果的分析等。

2、 熟悉與實驗有關的系統軟體(如編輯程式(自選)、匯程式設計序(masm)、鏈結程式(link)和除錯程式(debug)等)的使用方法。

3、 每個實驗完成後,需由實驗輔導教師在機器上檢查執行結果,並寫出實驗報告。實驗報告的要求如下:

(1)、設計說明:用來說明程式的結構、功能。包括:程式名、功能、原理及演算法說明,程式及資料結構、主要符號名的說明。

(2)、除錯說明:便於學生總結經驗提高程式設計及除錯能力。包括:除錯情況,對程式設計技巧的總結及分析,程式輸出結果及對結果的分析;實驗的心得體會等。

(3)、使用說明:程式提供給使用者使用時必須作出的說明。如:程式的使用方法,要求輸入資訊的型別及格式;出錯資訊的含義及程式的適用範圍等。

(4)、程式框圖。

(5)、程式清單。

四、實驗提示:

a、b單元分別存放則二位用非壓縮bcd碼表示的十進位制數,因而(a)=04h,(a+1)=03h,(b)=06h,(b+1)=05h。結果應存放在以c為首位址的4個相繼位元組單元中,在計算過程中還應開闢以c0和c1為首位址的各三位元組單元作為存放中間結果用。

二位十進位制數乘法的演算法如下:

a+1 a

b+1 b

c0+2 c0+1 c0

+ c1+2 c1+1 c1

c+3 c+2 c+1 c

參考程式段如下:

mov al,a

mul b

aammov word ptr c0,ax

mov al,a+1

mul b

aamadd al,c0+1

aaamov word ptr c0+1,ax

mov al,a

mul b+1

aammov word ptr c1,ax

mov al,a+1

mul b+1

aamadd al,c1+1

aaamov word ptr c1+1,ax

mov al,c0

mov c,al

mov al,c0+1

add al,cl

aaamov c+1,al

mov al,c0+2

adc al,c1+1

aaamov c+2,al

mov a,0

adc al,c1+2

aaamov c+3,al

實驗二雙字右移

一、 實驗目的:

學習程式設計的基本方法和技能,熟練掌握用組合語言設計、編寫、除錯和執行程式的方法。同時熟練掌握移位指令。

二、實驗內容:

試寫出程式將dx,ax中的雙字右移四位。

三、實驗要求:

同實驗一

四、實驗提示

ax中移出的高位可通過cf標誌位移入dx,可使用帶進製的迴圈移位指令rcl。

實驗三二化十六進製制輸出

一、 實驗目的:

學習程式設計的基本方法和技能,熟練掌握用組合語言設計、編寫、除錯和執行程式的方法。熟練掌握條件轉移指令、邏輯指令,並理解和掌握組合語言源程式中字元的顯示輸出方法以及進製轉換演算法。同時理解和掌握單重迴圈程式設計方法

二、實驗內容:

試程式設計把bx暫存器的內容(二進位制)用十六進製制的形式在螢幕上顯示出來。

三、實驗要求:

同實驗一

四、實驗提示

程式設計過程中要注意十六進製制數中數字0~9和字母a~f在處理時的不同,參考程式如下:

data segment

a dw 1234h

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov cx,4

mov bx,a

l:rol bx,1

rol bx,1

rol bx,1

rol bx,1

mov dl,bl

and dl,0fh

or dl,30h

cmp dl,39h

jbe ll

add dl,7

ll:mov ah,02h

int 21h

loop l

mov dl,『h』

mov ah,02h

int 21h

mov ah,4ch

int 21h

code ends

end start

實驗四陣列排序

一、 實驗目的:

學習程式設計的基本方法和技能,熟練掌握用組合語言設計、編寫、除錯和執行程式的方法。理解和掌握多重迴圈程式設計方法。

二、實驗內容:

程式設計實現對乙個首位址為a的n字陣列排序。

三、實驗要求:

同實驗一

四、實驗提示

可採用多種排序演算法實現該操作。採用氣泡排序方法參考程式如下:

data segment

a dw n dup(?)

data ends

code segment

main proc far

assume cs:code,ds:data

start:push ds

xor ax,ax

push ax

mov ax,data

mov ds,ax

mov cx,n

dec cx

loop1:mov di,cx

mov bx,0

loop2:mov ax,a[bx]

cmp ax,a[bx+2]

jge cont

xchg ax,a[bx+2]

mov a[bx],ax

cont:add bx,2

loop loop2

mov cx,di

loop loop1

retmain endp

code ends

end start

注意:該參考程式缺少初始資料輸入和排序結果輸出,同學們在做實驗時應將這兩個步驟考慮進去。

實驗五串操作

一、 實驗目的:

學習程式設計的基本方法和技能,熟練掌握用組合語言設計、編寫、除錯和執行程式的方法。熟練掌握串操作指令,進一步理解和掌握迴圈程式設計方法。

二、實驗內容:

已知陣列a包含15個互不相等的整數,陣列b包含20個互不相等的整數。試編制一程式把既在a中又在b**現的整數存放於陣列c中。要求使用串操作指令。

三、實驗要求:

同實驗一

四、實驗提示

參考程式如下:

data segment

a db 15 dup (?)

b db 20 dup (?)

c db 15 dup (?)

data ends

code segment

assume cs:code,ds:data

satrt:mov ax,data

mov ds,ax

mov es,ax

mov bx,0

cldmov dx,15

mov si,offset a

l1:mov di,offset b

mov cx,20

mov al,[si]

repnz scasb

jnz l2

mov ax,[di-1]

mov c[bx],ax

inc bx

l2:inc si

dec dx

jnz l1

mov ah,4ch

int 21h

code ends

end start

教材:〈〈組合語言程式設計〉〉(雷金輝主編,重慶大學出版社)

組合語言程式設計

實驗報告 軟體學院 一 實驗目的與意義 理解並熟練掌握組合語言程式設計過程中的編輯 彙編 鏈結和除錯等各個步驟,提高對彙編課程內容的理解和組合語言的掌握,通過上機練習加深對課程內容的理解和掌握。通過組合語言編制的程式上機除錯 執行檢驗程式設計是否正確。熟悉和掌握編輯 彙編 連線和除錯四個實用程式的使...

組合語言程式設計A卷

2011級組合語言程式設計課程試題 a卷 合分人複查人 1 用組合語言書寫的程式叫做masm要求該檔案的副檔名是編寫32位windows應用程式應選擇儲存模型。2 組合語言語句有兩種,分別是和3 除外設資料外的資料定址方式有3類,分別稱為 和定址。4 進行windows應用程式開發時,需要庫檔案,執...

組合語言程式設計指導手冊

微機原理與接 術 實驗指導手冊 內部資料 2009年9月 巫宗賓 薛培根 說明一 通訊專業 必做實驗1 3 4 9 10 二 電子專業 必做實驗1 3 4 5 6 8 9 10 三 計算機專業 必做實驗3 4 5 6 7 8 9 10 四 計算機 文秘 必做實驗3 4 5 6 7 8 9 10 五 ...