課內實驗報告模版

2021-03-04 09:59:31 字數 4470 閱讀 1598

西安郵電大學

計算機學院)

課內實驗報告

實驗名稱:

專業名稱:

班級: 學生姓名:

學號(8位):

指導教師:

實驗日期年**月**日

一. 實驗目的及實驗環境

1、學習資料傳送和算術運算指令的用法。

2、熟悉在pc機上建立、彙編、連線、除錯和執行組合語言程式過程。

二. 實驗內容

將兩個多位十進位制數(如四位)相加,要求被加數、加數以ascii碼形式按順序存放在以data1和data2為首的5個記憶體單元中(低位在前)。結果顯示在螢幕上。

三.方案設計

四.測試資料及執行結果

五.總結

1、通過實驗,學會了使用組合語言實現多位十進位制數的相加運算。

2、實驗中應注意,在宣告data的部分數字的順序和實際中數字的順序是相反的,因為儲存器是從低位到高位儲存的。

3、要為datas段指定兩個段暫存器ds和es分別存放加數和被加數,同時相加結果也存放在es段中。

4、了解lodsb的用法,每次迴圈後si都會自動加一,與此類似的stosb使用時,暫存器di指向的位址也會自動後移一位。

5、通過實驗,我還了解了ascii碼到bcd碼運算的轉變,以及運算結果的bcd碼通過調整轉變成ascii碼儲存和顯示。

六.實驗源程式

實驗程式如下:

datas segment

num1 db '3','2','4','5','0' ;被加數

num2 db '2','6','7','1','0' ;加數

s db '5423+1762=$' ;顯示的公式形式,$表示輸出結束

datas ends

codes segment

assume cs:codes,ds:datas,es:datas

start:

mov ax,datas

mov ds,ax ;ds指向資料段

mov es,ax ;es指向資料段

mov cx,55次迴圈

lea dx,s要顯示的字串的首偏移位址

mov ah,9h9號dos功能呼叫顯示字串s

int 21h

mov si,offset num1 ; si指向num1首位址

mov di,offset num2 ; di指向num2首位址

clc清零進製暫存器cf

adds: lodsb

adc al, [di有符號加法

aaa調整ascii碼加法結果指令

stosb所得結果以位元組為單位儲存到資料段di指向的位置,di+1

loop adds迴圈知道cx為零,cx-1

mov ah,02h ;以下為輸出加法結果

mov cx,5 ;共有5位數迴圈5次

adjust:mov dl,[di-1]

or dl,30h ;二進位制數轉換成其相應ascii碼

dec di輸出下一位

int 21h

loop adjust

mov ah,4ch

int 21h21號功能呼叫程式退出

codes ends

end start

一.實驗目的及環境:

掌握乘法指令的用法

dos環境

二.實驗內容:

實現乙個多位十進位制數和乙個一位十進位制數的乘法,被乘數和乘數均以ascii碼形式存放在記憶體中,結果顯示在螢幕上

三.方案設計

四.測試資料及執行結果

實驗結果如下圖所示:

五.總結

1、 通過實驗學會了,使用組合語言完成相乘運算。

2、 試驗中通過設定cx的值控制迴圈的次數。

3、 在lodsb和stosb指令中,si和di會每次自動增加1。

4、 在a串中,由於資料是按從低位址到高位址的順序存放的,所以a db '5','7','4','1','3'其實表示的是31475 。

5、 程式的l2 迴圈使得所存二進位制資料轉換成相對應的ascii碼,並通過dos 功能呼叫輸出。

六.實驗源程式

實驗程式如下:

data segment

a db '5','7','4','1','3' ;被乘數

b db '7乘數

m db 6 dup(06位位元組型儲存單元

s db ' 31475*7=$' ; 輸出的公式

data ends

code segment

assume cs:code,ds:data,es:data

start:mov ax,data

mov ds,ax

mov es,ax

cld將方向標誌暫存器df清零,指令lodsb和stosb中 di,si做自增1的處理

mov si,offset a ;a為源運算元

mov di,offset m ;b為目的運算元

mov cx,5

and b,0fh將ascii碼資料轉換成二進位制形式

mov byte ptr[di],0

l1: mov al,[si乘數與被乘數相乘

lodsb

and al,0fh

mul b

aamadd al,[di]

aaamov [di], al

inc di

stosb

mov [di],ah結果的儲存

inc si

loop l1

mov dx,offset s

mov ah,9

int 21h

mov cx,6

l2: mov dl,[di]

add dl,30h

mov ah,02h

int 21h ;顯示所得資料

dec di

loop l2

mov ax,4ch

int 21h

code ends

end start

一.實驗目的及環境:

掌握串操作指令的用法。

二.實驗內容:

用串操作指令設計程式。實現在指定儲存區(長度:100h)中尋找匹配字元,遇空格字元(20h)結束,顯示查詢結果。

3.方案設計

四.測試資料及執行結果

五.總結

1、 程式中用到了三個dos功能呼叫,分別是9號呼叫顯示字串,1號呼叫從鍵盤輸入字元和4ch呼叫終止程式。9號使用dx指向字串首位址,1號結果存在al中。通過實驗,對dos功能調有了更加深刻的認識。

2、 在對字串的查詢過程中,使用了scasb指令,並且前面有repnz。該指令表示在一直查詢直到zf=0,即找到與al暫存器相等的值為止。這個指令稍微有些複雜,再加上字首的變化,使其可以滿足不同的查詢需要。

3、 程式中出現了jmp指令。單獨的jmp指令為無條件轉移,不過jmp還常常與標誌暫存器一起使用,使其功能更強大。如題目中的jz指令表示zf=1即相等時轉移。

六.實驗源程式

實驗程式如下:

data segment

tishi_1 db 0dh,0ah,'please input a character to search: $'

tishi_2 db 0dh,0ah,'the string to be searched is:'

string db 10 dup('a'),20h,15 dup('b'),'$'

count equ $-string

s0 db 0dh,0ah,' found! $'

s1 db 0dh,0ah,'not found! $'

char db ?

data ends

code segment

assume cs:code,ds:data,es:data

go: mov ax,data

mov ds,ax

mov es,ax

mov dx, offset tishi_1 ;顯示字串

mov ah,09

int 21h

;mov ah,1 ;從鍵盤輸入資料

int 21h

mov char, al ;輸入資料儲存

;mov di,offset string

mov cx,count

cld自增

mov al,char

repne scasb ;字串位元組查詢直到相等

jz found ;zf=0時跳到found指令

mov dx,offset s1

jmp dsply

found: mov dx,offset s0 ;找到

dsply: mov ah,09h ;顯示

int 21h

mov dx,offset tishi_2

mov ah,09

int 21h

;mov ah,4ch

C語言金額轉換課內實驗報告模版

一.實驗目的及實驗環境 1 實驗目的 理解和掌握c語言中函式的定義,引數的使用,函式呼叫的方法 學習通過功能分解來設計和編寫較複雜程式的方法。2 實驗環境 windows,visual c 2.實驗內容 1 整理思路並查閱相關資料設計程式 2 編出程式並上機除錯執行 3 驗證各種可能的情況並記錄 3...

課內實驗報告

電子線路cad課內實驗報告 題目 lm2596簡易可調穩壓電源 姓名胡孝 學號1310404031 專業年級13級通訊 指導教師朱俊標 2015年 5 月 31 日 目錄1 電路原理 3 2 製作流程 3 3 問題及改正 5 4 測試 誤差 5 5 總結 5 1電路原理 j1輸入的非穩定交流電壓經d...

實驗報告模版

課程名稱 企業戰略管理案例實訓 專業 班級13級工商管理1班 姓名學號 學期2014 2015 1 實驗一外部環境分析工具 五力模型案例 一 實驗目的和要求 實驗目的 了解企業總體的外部環境及行業環境 掌握企業外部環境分析的工具之一五力模型。實驗要求 1.預先熟悉行業環境分析的工具五力模型的提出及內...