西安交通大学汇编语言实验报告 周翔宇.docx
- 文档编号:262336
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:16
- 大小:251.14KB
西安交通大学汇编语言实验报告 周翔宇.docx
《西安交通大学汇编语言实验报告 周翔宇.docx》由会员分享,可在线阅读,更多相关《西安交通大学汇编语言实验报告 周翔宇.docx(16页珍藏版)》请在冰豆网上搜索。
80X86汇编语言程序设计
课内实验报告
班级:
电信硕41班
姓名:
周翔宇
学号:
2140508028
班级
电信硕41
实验时间
ü2016-4-1
ü206-4-23
姓名
周翔宇
学号
2140508028
一、实验内容概述
实验一熟悉汇编语言实验环境(masm、link、debug/td)
实验二循环程序设计及分支程序设计
实验三子程序及DOS/BIOS调用程序设计
实验四高级汇编语言技术
实验五输入输出程序设计
实验六BIOS和DOS中
二、实验步骤
实验一、masm,link,debug的过程
Debug调试命令:
a,d,t,g,r,u,q等。
A(Assemble):
汇编语句A[address]
C(Compare):
比较内存Crangeaddress
D(Display):
显示内存D[address]或D[range]
E(Enter):
改变内存Eaddress[list]
F(Fill):
填充内存Frangelist
G(Go):
执行程序G[=address[address[address...]]
H:
十六进制运算命令H[address[drive|sector|sector]]
I(Input):
输入Iportaddress
L(Load):
装入内存L[address[drive|sector|sector]]
M(Move):
传送内存Mrangeaddress
N(Name):
定义文件和参数N[d:
][path]filename[.ext]
O(Output):
输出字节Oportaddressbyte
P(Proceed):
在下条指令前停止P[=address][value]
Q(Quit):
结束DEBUG程序Q
R(Register):
显示寄存器/标志位R[registername]
S(Search):
捡索字符Srangelist
T(Trace):
执行并显示(跟踪)T[=address][value]
U(Unassemble):
反汇编指令U[address]或U[range]
W(Write):
把文件或数据写盘W[address[drive|sector|sector]]
STEP1首先进入cmd命令运行界面
STEP2进入masm5文件夹cdd:
\masm5
STEP3Masm输入程序代码文件xxx然后回车
STEP4Link输入程序代码文件xxx然后回车
STEP5Debugxxx.exe进入了Debug界面
实验二、循环程序设计及分支程序设计
(1)循环程序设计
数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对
值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在
M+2(n+1)单元中。
程序思路:
STEP1取第一个数,记录此数;
STEP2此数是正数吗?
是转到STEP3,否转到STEP4;
STEP3是正数,即为绝对值,转去判断下一个数;
STEP4不是正数,变为其绝对值;
STEP5判断绝对值大小;
STEP6(AX)<(BX),使(AX)中为绝对值最大的数;
STEP7记下绝对值最大的数的地址,记下此数;
STEP8数判断完了吗?
是结束,否继续;
STEP9转到STEP1;
程序源代码:
见附件1
(2)分支程序设计
设计一程序,接收从键盘输入的数字(1~5),并对每个数字的输入次数进行计
数,计数结果存放在以COUNT为首地址的数组中。
(最好能将计数结果打印出
来)。
程序思路:
STEP1设置一个五路分支,输入数为X则跳转到X步;
STEPXCOUNT[X]+1
程序源代码:
见附件2
实验三、子程序及DOS/BIOS调用程序设计
设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。
试编制一
个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数并分别
存放到S6,S7,S8,S9和S10单元中。
程序思路:
将成绩除以10然后减6作为偏移地址,然后将此地址加1则表示人数加1
程序代码:
见附件3
实验四、高级汇编语言技术
试编写一段程序,完成以下功能:
若给定名为X的字符串长度大于5时,下列指
令将汇编10次。
ADDAX,AX
(要求:
使用条件汇编,编译过程中生成LST文件,查看宏展开情况)
程序思路:
用($-X)代表字符串长度,然后使用条件汇编指令IF
程序代码:
见附件4
实验五、输入输出程序设计
编写程序,使类型1CH的中断向量指向中断处理程序COUNT,COUNT统计1CH中
断次数并存入单元M中。
程序思路:
STEP1取中断类型号
STEP2取中断向量
STEP3偏移地址送IP,段地址送CS(上述步骤为保存原中断向量)
STEP4设置新的中断向量
STEP5转入中断处理程序,并且中断一次M累加1
STEP6中断返回
程序代码:
见附件5
实验六、.BIOS和DOS中断
编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,
然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。
加密表
为:
输入数字:
0,1,2,3,4,5,6,7,8,9
密码数字:
7,5,9,1,3,6,8,0,2,4
程序思路:
将密码存入数据段,利用XLAT指令,设置AL表示数字值,将对应表中数据送入
程序代码:
见附件六
三、实验中遇到的问题及其解决方法
1、问题1
问题描述:
绝对值如何得到
问题是在实验一中遇到,解决思路是:
利用反码的思想
解决问题的步骤是:
是负数则对负数取反码
2、问题2
n 问题描述:
进入Debug界面后,更改输入,然后输入与要求不符
n 问题是在实验X中遇到,解决的思路是:
理清调试步骤
n 解决问题的步骤是:
Debug界面进入后修改了输入然后必须退出Debug界面然后修改后再次重新进入Debug界面
3、问题3
问题描述:
如何调用中断,键盘输入,并且屏幕显示
问题是在实验二遇到的,解决的思路是:
调用DOS功能
解决问题的步骤骤是:
调用DOS功能(INT21H)并选取AL=2从键盘输入;选取AL=30在屏幕上显示,然后选取AL=4CH返回
4、问题4
问题描述:
如何设置中断向量
问题是在实验五遇到的,解决思路是,保存原有中断向量,设置新的中断向量,恢复原有的中断向量
解决问题的步骤是:
首先保存原有的中断向量,然后设置新的中断向量,进入中断程序,最后恢复原有中断向量
四、实验结果
实验二
(1)
输出结果:
实验二
(2)
输入:
输出
实验三、
输出结果:
数据段:
实验四、
反汇编:
显示内存:
查看LST文件:
文件内容截图:
实验五、
内存结果:
实验六、
输入:
输出:
五、附件
附件1:
datasegment
Mdw1,4,3,2,-1,-5,-8,-9,'$'
m1dw10dup(?
)
disadb'thelocationofM+2nis:
$'
disbdb'thelocationofM+2(n+1)is:
$'
discdb0dh,0ah,24h
dataends
stacksegmentstack
dw100dup(?
)
toplabelword
stackends
codesegment
mainprocfar
assumess:
stack,cs:
code,ds:
data
start:
movax,stack
movss,ax
leasp,top
movax,data
movds,ax
xorsi,si ;用来放绝对值最大数的输出
leabx,M
movsi,bx ;记录第一个数的地址
movcx,0 ;记录第一个数值假设是0
L1:
movax,[bx]
cmpax,24h
jeL4
rolax,1
andax,1h
cmpax,1 ;是负数的话就求原码
jeL2
movax,[bx] ;正数的话就直接比较
movdi,0
cmpcx,ax
jbeL3
addbx,2
jmpL1
L2:
movdi,1
movax,[bx] ;对负数进行求原码运算
subax,1
notax
cmpcx,ax
jbeL3 ;记录绝对值比较大的数还有符号
addbx,2
jmpL1
L3:
movcx,ax ;改变cx的值
movsi,bx ;改变si的地址值
movdx,di
addbx,2
jmpL1
L4:
leabx,m1
mov[bx-2],cx ;M+2n存放绝对值最大的数
mov[bx],si ;M+2(n+1)存放他的地址
mov[bx+2],dx ;存放他的符号
L5:
leadx,disc ;输出换行
movah,9
int21h
leadx,disa ;输出提示语
movah,9
int21h
leabx,m1
movdx,[bx+2]
cmpdx,0
jeL51
movdl,'-'
movah,2
int21h
L51:
xorsi,si
leabx,m1 ;把结果地址传给bx
movsi,[bx-2] ;把结果传给si
movcx,4
L6:
pushcx
movcl,4
rolsi,cl
movdx,si
anddl,0fh
cmpdl,9
jbeL7
adddl,7h
L7:
adddl,30h
movah,2h
int21h
popcx
loopL6
L8:
leadx,disc ;输出换行
movah,9
int21h
leadx,disb ;输出提示语
movah,9
int21h
xorsi,si
leabx,m1
movsi,[bx]
movcx,4
L9:
pushcx
movcl,4
rolsi,cl
movdx,si
anddl,0fh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学汇编语言实验报告 周翔宇 西安交通大学 汇编语言 实验 报告