汇编实验报告文档格式.docx
《汇编实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《汇编实验报告文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
INT
21H
⑵
显示空白符时DL=00H;
⑶
每行显示结束时需要显示回车(ASCII码为0DH)和换行(ASCII码为0AH),本行显示结束后可另起一行显示。
4、源代码
2.1.asm
DATASSEGMENT
;
此处输入数据段代码
DATASENDS
STACKSSEGMENT
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
此处输入代码段代码
MOVDL,10H
MOVCX,15
C1:
PUSHCX
MOVCX,16
C2:
MOVAH,02H
INT21H
INCDL
PUSHDX
MOVDL,20H
POPDX
LOOPC2
MOVDL,0DH
MOVDX,0AH
MOVAH,02D
POPDX
POPCX
LOOPC1
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
5、实验结果
6、实验总结
这是从接触到汇编到自己开始写的第一个汇编程序,开始时不知如何下手,参考了别人的程序后,自己重新整理思路,才写出了这个程序,是一个开始。
实验二查找匹配字符串
1、题目
查找匹配字符串SEARCH
2、实验要求
程序接收用户键入的一个关键字以及一个句子,如果句子中不包含关键字则显示“No
Match!
”;
如果句子中包含关键字则显示“Match”,且把该字在句子中的位置用十六进制数显示出来。
要求程序的执行过程如下:
Enter
keyword:
abc
sentence:
We
are
studying
abc.
Match
at
location:
11H
of
the
sentence.
xyz
sentense:
No
match!
^C
3、提示:
程序可由三部分组成:
1).输入关键字和一个句子,分别存入相应的缓冲区中。
可用DOS功能调用0AH,使用方法如下:
①
字符缓冲区定义格式如下:
maxlen
db
32
actlen
?
string
dup(?
)
缓冲区的第一个字节定义字符的最大个数;
第二个字节为实际输入的字符个数,该数据由OAH功能根据用户实际输入自动计算并填入。
在这两个字节后,存放输入的字符串,字符串以回车(0DH)结束,但回车符不作实际输入字符的个数。
②
输入字符串程序段如下:
LEA
DX,MAXLEN
AH,0AH
2).在句子中查找关键字
2.2.asm
DATASEGMENT
mess1db'
Enterkeyword:
'
'
$'
mess2db'
EnterSentence:
mess3db'
Nomatch!
13,10,'
mess4db'
Matchatlocation:
mess5db'
Hofthesentence.'
changedb13,10,'
sen1labelbyte
max1db14
act1db?
stokn1db14dup(?
)
sen2labelbyte
max2db100
act2db?
stokn2db100dup(?
DATAENDS
CODESEGMENT
mainprocfar
assumecs:
code,ds:
data,es:
data
movax,data
movds,ax
moves,ax
leadx,mess1
movah,09h
int21h
leadx,sen1
movah,0ah
leadx,change
subcx,cx
a10:
leadx,mess2
leadx,sen2
cmpact2,0
jeexit
movbx,0
a20:
movcl,[act1]
leasi,stokn1
leaax,stokn2
addal,bl
movdi,ax
cld
repcmpsb
jza30
incbl
cmpbl,act2
jea40
jmpa20
a30:
leadx,mess4
movah,02h
addbl,1
movcl,4
moval,bl
rolal,cl
movcl,2
jmpa50
a1:
leadx,mess5
jmpa10
a40:
leadx,mess3
a50:
deccl
andal,0fh
cmpal,10
jnba60
addal,'
0'
a2:
movdl,al
cmpcl,0
jea1
jmpa50
a60:
subal,10
a'
jmpa2
exit:
ret
mainendp
CODEENDS
这个实验比较难,查了好多东西,差不多懂了个大概,至少能把这个程序读懂,能够单独编写出来,自己的汇编水平真是提高了不少!
实验三统计学生成绩result
统计学生成绩result。
设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。
试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并分别存放到s5、s6、s7、s8、s9及s10单元中。
3、源代码
2.3.asm
GRADEDW56,69,84,83,73,88,99,63,100,80
S5DB0
S6DB0
S7DB0
S8DB0
S9DB0
S10DB0
DATAS
PUSHDS
SUBAX,AX
PUSHAX
MOVS5,0
MOVS6,0
MOVS7,0
MOVS8,0
MOVS9,0
MOVS10,0
MOVCX,10
MOVBX,OFFSETGRADE
COMPARE:
MOVAX,[BX]
CMPAX,60
JLFIVE
CMPAX,70
JLSIX
CMPAX,80
JLSEVEN
CMPAX,90
JLEIGHT
CMPAX,100
JNENINE
INCS10
JMPSHORTCHANGE_ADDR
NINE:
INCS9
EIGHT:
INCS8
SEVEN:
INCS7
SIX:
INCS6
FIVE:
INCS5
CHANGE_ADDR:
ADDBX,2
LOOPCOMPARE
SUBAX,AX;
输出S5<
60
ADDAL,S5
ADDAL,30H
MOVDL,AL
MOVAH,02H
MOVDL,0
输出S6<
70
ADDAL,S6
输出S7<
80
ADDAL,S7
输出S8<
90
ADDAL,S8
输出S9<
100
ADDAL,S9
输出S10=100
ADDAL,S10
RET
4、实验结果
5、实验总结
这是一个比较简单的实验,通过简单的语句就可以实现题目所需的功能。
实验四十六进制转二进制
十六进制转换为二进制。
试编写一汇编程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。
5.9.asm
SENDB'
Enternum:
RESULTDB'
Theresult:
NEXTLINEDB13,10,'
LEADX,SEN
MOVAH,09H
MOVBX,0
MOVCH,4
MOVCL,4
GETIN:
SHLBX,CL
MOVAH,1
INT21H
CMPAL,30H
JBGETIN
CMPAL,39H
JAJUDGEAF
ANDAL,0FH
JMPBINARY
JUDGEAF:
ANDAL,11011111B
CMPAL,41H
JBGETIN
CMPAL,46H
JAGETIN
ANDAL,0FH
ADDAL,9
BINARY:
ORBL,AL
DECCH
JNZGETIN
LEADX,NEXTLINE
LEADX,RESULT
DISPN:
MOVCX,16
DISP:
MOVDL,0
ROLBX,1
RCLDL,1
ORDL,30H
MOVAH,2
LOOPDISP
ENDSTART
这个实验是老师在实验课堂上布置的,记得当初在做实验时,自己没能在规定的时间内做完,这个实验是在课后自己慢慢弄出来的,实验虽然简单,但好多逻辑问题必须得想清楚才能继续做下去。