西安郵電大學
計算機學院)
課內實驗報告
實驗名稱:
專業名稱:
班級: 學生姓名:
學號(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.預先熟悉行業環境分析的工具五力模型的提出及內...