太原理工硬件实验报告.docx
《太原理工硬件实验报告.docx》由会员分享,可在线阅读,更多相关《太原理工硬件实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
太原理工硬件实验报告
本科实验报告
课程名称:
计算机硬件技术基础
实验项目:
顺序程序实验
实验地点:
专业班级:
学号:
学生姓名:
指导教师:
2015年5月5日
太原理工大学学生实验报告
学院名称
专业班级
学号
学生姓名
实验日期
成绩
课程名称
计算机硬件技术基础
实验题目
顺序程序实验
一、实验目的和要求
1.通过宏汇编(MASM)上机操作,使学生掌握汇编语言源程序的编辑、汇编、连接和执行的完整过程。
2.掌握汇编过程中各命令的作用及使用方法,了解汇编和连接的过程。
3.掌握8086/8088指令系统中已学指令的书写格式、功能及其作用。
4.结合实例程序掌握汇编语言程序上机过程,熟悉DEBUG程序中常用命令的使用。
要求预习汇编程序上机操作的全过程。
二、实验内容和原理
1.编写程序计算Z=(A+B)-(C-D),其中A=30H,B=20H,C=10H,D=05H均为字节单元无符号数。
2.设W、X、Y、Z、V均为16位字单元有符号数,编程计算W=(X*Y-50)/Z,将结果存入变量W,而余数存入变量W+2中。
(X为非零数,并假设X、Y、Z的值分别为20、10、15)
三、主要仪器设备
电脑,汇编语言
4、操作方法与实验步骤
实验一:
datasegment
Adb30h
Bdb20h
Cdb10h
Ddb05h
Zdb?
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
xorax,ax
moval,A
addal,B
subal,C
addal,D
movZ,al
movax,4ch
int21h
codeends
endstart
实验二:
datasegment
Xdw20
Ydw10
Zdw15
Wdw?
?
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
xorax,ax
movax,X
mulY
subax,50
divZ
movW,ax
movax,4ch
int21h
codeends
endstart
五、实验数据记录和处理
六、实验结果与分析
第一个实验结果为AX里的值0045。
第二个实验结果为AX里的值000A,同时把值放入W中,余数在W+2中。
七、讨论、心得
这个实验帮我熟悉了汇编语言如何使用,虽然参考了书上的程序,但是我也从中学到了一些东西,懂得了自己去调试程序。
实验地点
指导教师
太原理工大学学生实验报告
学院名称
专业班级
学号
学生姓名
实验日期
成绩
课程名称
计算机硬件技术基础
实验题目
分支和循环程序实验
二、实验目的和要求
1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。
2.掌握分支程序的结构、单分支和多分支程序的设计方法。
3.了解循环程序的基本结构和控制循环的方法。
二、实验内容和原理
要求学生按教师指定题目进行汇编语言程序设计,并上机调试,以实现较复杂的程序设计。
1.已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。
2.求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。
三、主要仪器设备
电脑,汇编语言
4、操作方法与实验步骤
实验一:
stacksegmentstack
db50DUP(0)
stackends
datasegment
numdb2,5,6
maxdb?
dataends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
xorax,ax
moval,num
cmpal,num[1]
jgenext1
moval,num[1]
next1:
cmpal,num[2]
jgenext2
moval,num[2]
next2:
movmax,al
movax,4c00h
int21h
codeends
endstart
实验一:
stacksegmentstack
db50DUP(0)
stackends
datasegment
numdb11,99,22,88,77,66,55,44,33,0
maxdb?
dataends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movsi,offsetnum
xorax,ax
movcx,10
moval,[si]
AGAIN:
cmpal,[si]
jgenext
moval,[si]
next:
INCsi
loopAGAIN
movmax,al
movax,4c00h
int21h
codeends
endstart
5、实验数据记录和处理
第一张图为实验1
第二张图为实验2
六、实验结果与分析
第一个实验三个数字为2,5,6,最后结果为AX里0006。
第二个实验十个数字为11,99,22,88,77,66,55,44,33,0,最后结果为AX里0063(16进制的99)。
七、讨论、心得
这个实验还是参考了书上的例子,但是相对上一个实验添加了更多自己的东西,第二个实验比第一个要多考虑到循环的使用,保证AX里放的一直是最大值,则经过10次循环后可得出成绩的最大值。
实验地点
指导教师
太原理工大学学生实验报告
学院名称
专业班级
学号
学生姓名
实验日期
成绩
课程名称
计算机硬件技术基础
实验题目
综合程序设计实验
一、实验目的和要求
1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。
2.掌握分支程序的结构、单分支和多分支程序的设计方法。
3.了解循环程序的基本结构和控制循环的方法。
4.掌握通过DOS中断调用使用键盘和显示器的方法。
二、实验内容和原理
编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。
三、主要仪器设备
汇编语言,电脑。
4、操作方法与实验步骤
datasegment
sinputdb'start:
$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data;
movds,ax;若有数据段前两行需加上
movah,9
leadx,sinput
int21h
movah,1
int21h
cmpal,96
jgenext;大于等于
addal,32
jmpdone
next:
subal,32
done:
movdl,al
movah,2
int21h
movah,4ch
int21h
codeends
endstart
五、实验数据记录和处理
六、实验结果与分析
输入大写字母C时变为小写字母c,输入小写字母c时变成大写字母C。
七、讨论、心得
这个实验我依旧想参照书上的例子,但是不知为何却跳过了输入字母的部分,于是我自己写了代码,经过努力终于能将输入大写字母时变为小写字母,输入小写字母时变成大写字母。
实验地点
指导教师
太原理工大学学生实验报告
学院名称
专业班级
学号
学生姓名
实验日期
成绩
课程名称
计算机硬件技术基础
实验题目
综合程序设计实验
一、实验目的和要求
1.通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格式、功能及使用方法。
2.掌握分支程序的结构、单分支和多分支程序的设计方法。
3.了解循环程序的基本结构和控制循环的方法。
4.掌握通过DOS中断调用使用键盘和显示器的方法。
二、实验内容和原理
编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。
完善下面的原程序
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVBH,0;统计数字的个数
MOVBL,0;统计字母的个数
MOVDH,0;统计其它字符的个数
MOVCX,10
AA1:
CMPCX,0
JZSTOP;输入字符超过10个
MOVAH,1
INT21H;从键盘接收一个字符
CMPAL,20H
JZSTOP
CMPAL,’0’
JBCC1
CMPAL,’9’
JACC1
INCBH
自行写出比较是否为字母的情况
CC2:
INCDH
DECCX
STOP:
MOVDL,BH
MOVAH,02
INT21H
自行写出输出字母的个数
自行写出输出其它字符的个数
RET
Mainendp
Codeends
End
三、主要仪器设备
汇编语言,电脑。
4、操作方法与实验步骤
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
DATASEGMENT
XDB'0'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
SUBAX,AX
MOVBX,0
MOVDX,0
MOVCX,10
AA1:
CMPCX,0
JZSTOP;CX里值为空则停止循环
MOVAH,1
INT21H;从键盘接受一个字符
CMPAL,20H
JZSTOP;输入空格则跳出
CMPAL,'0'
JBCC2;<0则记为特殊字符
CMPAL,'9'
JACC1;>9则进入下一层判断
INCBH;是数字
JMPNEXT1
CC1:
CMPAL,'A'
JBCC2;CMPAL,'Z'
JBNEXT;CMPAL,'a'
JBCC2;CMPAL,'z'
JACC2;>z记为特殊字符
NEXT:
INCBL;是字母
JMPNEXT1
CC2:
INCDH;是特殊字符
NEXT1:
LOOPAA1;判断下一个字符
STOP:
MOVAH,2
MOVDL,BH
ADDDL,X
INT21H;输出数字字数
MOVAH,2
MOVDL,BL
ADDDL,X
INT21H;输出字母字数
MOVAH,2
MOVDL,DH
ADDDL,X
INT21H;输出特殊字符
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
五、实验数据记录和处理
六、实验结果与分析
输入字符为ab123=然后输入空格,得出数字数为3字母数为2特殊字符为1。
七、讨论、心得
试验中用到了多次条件判断JB是小于JA是大于,根据ASCLL码值表,来对输入的字符进行判断是哪个部分加1,输入空格结束,最后输出数字。
一开始让我觉得不解的是,若在STOP里去掉ADDDL,X,输出的数字是乱码,加上之后却输出了正常的数字,最后经过查阅,直接输出数字的话,机器会认为是ASCLL码值,而不是输出数字,所以加个0让其变为数字输出,