西安交通大学汇编实验报告.docx
- 文档编号:8494367
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:126.01KB
西安交通大学汇编实验报告.docx
《西安交通大学汇编实验报告.docx》由会员分享,可在线阅读,更多相关《西安交通大学汇编实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
西安交通大学汇编实验报告
汇编语言实验报告
计算机XX班
21305050XXXX
2053年6月2日
80X86汇编语言程序设计课内实验报告
班级
计算机32
实验时间
2015
姓名
刘恒
学号
2130505037
实验内容概述
实验一熟悉汇编语言的实验环境
实验二数据段中已定义了一个有n个字数据的数组M,试编写一程序求出M中绝对值最大的数,把它放在数据段的M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中。
实验三设计一程序,接收从键盘输入的数字(1~5),并对每个数字的输入次数进行计数,计数结果存放在以COUNT为首地址的数组中。
(最好能将计数结果打印出来)。
实验四子程序及DOS/BIOS调用程序设计
题6.9
设有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单元中。
实验五高级汇编语言技术
题7.11
试编写一段程序,完成以下功能:
若给定名为X的字符串长度大于5时,下列指令将汇编10次。
ADDAX,AX
(要求:
使用条件汇编,编译过程中生成LST文件,查看宏展开情况)
实验六输入输出程序设计
编写程序,使类型1CH的中断向量指向中断处理程序COUNT,COUNT统计1CH中断次数并存入单元M中。
实验七BIOS和DOS中断
题9.2
编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。
加密表为:
输入数字:
0,1,2,3,4,5,6,7,8,9
密码数字:
7,5,9,1,3,6,8,0,2,4
实验步骤
第一题
1.熟悉汇编语言的实验环境,了解各项功能的调用。
2.熟悉掌握masm,link,debug等工具,将一个asm文件通过汇编连接成一个可执行文件。
第二题
1.编写实验二并调试并调试
2.查看数据段寄存器结果是否正确。
第三题
1.编写实验三并调试,初步了解中断的功能调用。
2.从键盘输入若干1-5,看输出结果是否正确。
第四题:
1.在主程序中调用子函数count,完成将每个在数组mark里的成绩一一取出。
2.分别判定其大小而放入统计60~69分,70~79分,80~89分,90~99分和100分的人数的S6,S7,S8,S9和S10单元中,在数据段中查看出S6,S7,S8,S9和S10中的数。
第五题:
1.使用条件汇编和重复汇编。
2.判断当给定名为X的字符串长度大于5时,重复ADDAX,AX10次。
第六题:
1.使类型1CH的中断向量指向中断处理程序COUNT。
2.COUNT中1CH中断每调用一次则给num加一,计算出num最后的值后存入单元M中。
第七题:
1.接收从键盘输入的10个十进制数字,输入回车符则停止输入。
2.调用xlat使得(al)<—((al)+(bx))
实验中遇到的问题及其解决方法
1、关于没有定义堆栈段系统发出warning问题?
⏹Link的时候,如果程序没有定义堆栈,dos系统会发出警告,但不影响后续操作。
⏹问题是在实验2中遇到,解决的思路是暂且忽略这个警告,因为堆栈是用来保存便于返回的,当程序不是很复杂时,用堆栈显得不叫繁琐。
2、关于汇编语言的输出问题?
⏹汇编语言输出时,预期为数字或者英文字母,但有时会出现乱码。
⏹经过仔细思考,发现汇编的输出同一为16进制,只要把所有的输出同一为16进制而不是10进制,输出就没有问题。
3、关于数据加密问题?
⏹最后一题为数据加密后输出,题目给定一个密码表,要求将输入的数据加密后输出
⏹通过查找命令,发现xlat命令的作用是使得(al)<—((al)+(bx)),这样就很方便的将数据加密。
实验结果
第一题:
第二题
第三题
第四题
第五题
年月日
实验结果
第六题:
第七题:
建议
1.上机实验太少,可以考虑增加上机次数。
2.两次上机时间相隔太久,最好可以将上机时间提前。
3.可以增加一些选作的课程设计,满足不同需求的同学。
下附各个题目代码;
第二题:
datasegment
mdw-1,0,0,1,-2,-3,-4,4
maxdw0
dizhidw?
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
movax,data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
leabx,m
movcx,8
t1:
movax,[bx]
testax,8000h
jzt2
negax
t2:
cmpax,max
jbt3
movmax,ax
movdizhi,bx
t3:
addbx,2
loopt1
movax,ax
ret
mainendp
codeends
endstart
第三题:
datasegment
countdb5dup(0)
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
movax,data
movds,ax
s1:
movcx,10d
callfenlei
calldisp
movax,4c00h
int21h
ret
mainendp
fenleiprocnear
input:
movah,1
int21h
cmpal,0dh
jzexit
subal,30h
cmpal,01h
jbinput
cmpal,05h
jainput
movah,0
cbw
movbx,ax
decbx
inccount[bx]
loopinput
exit:
ret
fenleiendp
dispprocnear
movsi,0
movbx,5
s:
movdl,count[si]
adddl,30h
movah,2
int21h
incsi
decbx
cmpbx,0
jas
ret
dispendp
codeends
endstart
第四题:
datasegment
scoredw76,69,84,90,73,88,99,63,100,80
S6dw0
S7dw0
S8dw0
S9dw0
S10dw0
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
s1:
movcx,10
callfenlei
movax,1
ret
mainendp
fenleiprocnear
movsi,0
s2:
movax,score[si]
movbx,10
divbl
movbl,al
subbx,6
salbx,1
incS6[bx];S6为S6,S7,S8,S9,S10的首地址
addsi,2;根据((socre)/10-6)*2决定该成绩送给哪一个单元
loops2
ret
fenleiendp
codeends
endstart
第五题:
datasegment
xdb'123456'
ydb0
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
movax,2
IF(y-x)gt5
rept10
addax,ax
endm
endif
movbx,1
ret
mainendp
codeends
endstart
第六题:
datareasegment
Mdw0
datareaends
;------------------------------
programsegment
mainprocfar
assumecs:
program,ds:
datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
;getinterruptvector
moval,1ch
movah,35h
int21h
pushes
pushbx
;setinterruptvector
pushds
movax,segcount
movds,ax
movdx,offsetcount
moval,1ch
movah,25h
int21h
popds
;--------------------------
int1ch
int1ch
int1ch
int1ch
;inal,21h
;andal,11111110b
;out21h,al
;sti
;------------------------
;movdi,1000
;delay:
;decdi
;jnzdelay
;resetinterruptvector
popdx
popds
moval,1ch
movah,25h
int21h
ret
mainendp
countprocnear
sti
incM
iret
countendp
programends
endstart
第七题:
datasegment
scoredb7,5,9,1,3,6,8,0,2,4
bufferdb10dup
(1)
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
movsi,0
movcx,10
leabx,score
input:
movah,1
int21h
cmpal,0dh
jzexit
subal,30h
jbinput
cmpal,09h
jainput
xlat;[(bx)+(al)]->al
movbuffer[si],al
incsi
loopinput
exit:
movax,ax
ret
mainendp
codeends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学 汇编 实验 报告