华南农业大学汇编语言习题(附答案).docx
《华南农业大学汇编语言习题(附答案).docx》由会员分享,可在线阅读,更多相关《华南农业大学汇编语言习题(附答案).docx(54页珍藏版)》请在冰豆网上搜索。
题目名称 实验一汇编语言程序结构题目关键字源程序结构debug
题目录入时间
题目内容
—、实验目的
1.掌握汇编语言程序上机过程。
2.掌握汇编语言结构。
3.了解汇编程序、连接程序、DOS系统装入和返回功能。
4.掌握用DEBUG调试汇编语言程序的方法二、实验要求
1.编写完整的汇编语言程序:
(1)逆序输出字符串“BASEDADDRESSING”。
(2)从键盘上输入2个一位的正数,求出它们的和(假设和不超过1
位)。
(3)试编写一段程序,要求在长度为100H字节的数组中,找出大于42H的无符号数的个数并存入字单元UP中;找出小于42H的无符号数的个数并存入字单元DOWN中。
2.在DEBUG下查看程序执行的过程,以及变量值的变化。
3.演示程序运行结果,请指导教师检查。
三、思考
1.汇编语言程序中语句END后的标号作用是什么?
2.采用标准序结构编制源程序,用ret结束程序运行返回操作系统时,可否将语句mainprocfar中的far属性去掉,为什么?
3.一个段的大小为多少?
一定是64KB吗?
如何在DEBUG下查看程序在内存的存放情况?
四、提交内容
将各个源程序代码、exe文件压缩为RAR后提交到作业系
统。
题目创建人题目注释
1.1.asm
DATASSEGMENT
Stringdb"BASEDADDRESSING"
count dw $-StringDATASENDS
STACKSSEGMENTSTACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATASMOVDS,AX
movcx,count ;循环次数
leasi,count-1 ;将最后一个字符‘G’的地址给si
L:
movah,2movdl,[si]decsi
int21hloopL
MOVAH,4CHINT21H
CODESENDS
ENDSTART
1.2.asm
DATASSEGMENT
xdb"x=$"ydb"y=$"
zdb"x+y=$"DATASENDS
STACKSSEGMENTSTACKSENDSCODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATASMOVDS,AX
movah,9 ;显示"x="leadx,x
int21h
movah,1 ;输入Xint21h
subal,30h
movcl,al ;将X放在CL
movah,9 ;显示"y="leadx,y
int21h
movah,1 ;输入Yint21h
subal,30h
addcl,al ;两数字相加
movah,9 ;显示"z="leadx,z
int21h
movah,2 ;显示结果movdl,cl
adddl,30hint21h
MOVAH,4CHINT21H
CODESENDS
ENDSTART
1.3.asm
DATASSEGMENT
arraydb128dup(41h,43h)up dw0
down dw0DATASENDS
STACKSSEGMENTSTACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATASMOVDS,AX
leadi,arraymovcx,256
L:
L1:
L2:
L3:
moval,[di]cmpal,42hjlL1
jaL2
incdownjmpL3
incupjmpL3
incdiloopL
MOVAH,4CHINT21H
CODESENDS
ENDSTART
题目名称 实验二程序结构与简单程序设计题目关键字简单程序设计
题目录入时
间
2013-4-122:
45:
55
—、实验目的
题目内容
1.掌握汇编语言源程序结构。
2.掌握汇编语言调试方法。
二、实验要求
1.编写完整的汇编语言程序:
(1)试编写一段程序,要求对键盘输入的小写字母用大写字母显
示出来。
(2)编写程序,从键盘接收一个小写字母,然后找出它的前导字母和后续字母,再按顺序显示这三个字符。
(3)试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”,若不相同则显示“NOMATCH”.
(4)编写程序,将一个包含有20个数据的数组M分成2个数组:
正数数组P和负数数组N,并分别把这两个数组中数据的个数显示出来。
2.在DEBUG下查看程序执行的过程,以及变量值的变化。
3.演示程序运行结果,请指导教师检查。
三、思考
对输入的非字母字符如何处理?
2.字母“a”和“z”边界字符的处理方法是什么?
3.显示结果为多位数的时候如何输出?
四、提交内容
将各个源程序代码、exe文件,思考题的WORD文档压缩为RAR后提交到作业系统。
题目创建人题目注释
2.1.asm
DATASSEGMENT
crlfdb0ah,0dh,'$'DATASENDS
STACKSSEGMENTSTACKSENDSCODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATASMOVDS,AX
movah,1 ;输入数据会ALint21h
pushax ;将AX存进栈里
leadx,crlf;换行movah,9
int21h
popdx ;栈里数据放进DX,即将原先AX放进DXsubdl,20h ;小写变大写要减去20h
movah,2 ;输出int21h
MOVAH,4CHINT21H
CODESENDS
ENDSTART
2.2.asm
DATASSEGMENT
Stringdb'zabcdefghijklmnopqrstuvwxyza'DATASENDS
STACKSSEGMENT
STACKSENDSCODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATASMOVDS,AX
leadi,String
movah,1 ;输入字母int21h
L:
incdi ;先DI自加1,第一次就是‘a’的地址,不是‘z’cmpal,[di];直到找到字母和输入的相匹配
jnzL
decdi ;推前成为前端字母的地址
L2:
movcx,3 ;循环次数3
movdl,[di]incdi
movah,2int21hloopL2
MOVAH,4CHINT21H
CODESENDS
ENDSTART
2.3.asm
DATASSEGMENT
String1db"thisisaprogram"count1 dw$-String1String2db"thisisaprogram"count2 dw$-String2answer1db'match','$'answer2db'nomatch','$'
DATASENDSSTACKSSEGMENTSTACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATASMOVDS,AX
movax,count1movbx,count2
cmpax,bx ;比较两个字符串的长度,如果不等就是不匹配jnznext
movcx,count1 ;字符串长度leasi,string1
leadi,string2
L:
moval,[si]
cmpal,[di] ;比较两个字符串的字符,如果不等就跳
jnznextincsiincdiloopL
leadx,answer1 ;能到这里说明都匹配movah,9
int21h
jmpfinally ;跳去finally,避免顺序执行了next
next:
;显示不匹配
leadx,answer2movah,9
int21h
finally:
MOVAH,4CHINT21H
CODESENDS
ENDSTART
2.4.asm
DATASSEGMENT
Mdb5dup(-1,1,2,3)
Pdw0
Ndw0DATASENDS
STACKSSEGMENTSTACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKSSTART:
MOVAX,DATASMOVDS,AX
leasi,M
movcx,20 ;循环次数
L:
moval,[si]
cmpal,0 ;和0比较判断正负
jlL1
L1:
L2:
L3:
jgL2
incNjmpL3
incPjmpL3
incsiloopL
movax,P ;输出P
movbl,10 ;设置除数10divbl
movbh,ah ;将ah(余数放在bh保留)movdl,al ;将商显示
adddl,30hmovah,2int21h
movdl,bh ;将余数显示adddl,30h
movah,2int21h
movax,N ;输出Nmovbl,10
divblmovbh,ahmovdl,aladddl,30hmovah,2int21hmovdl,bhadddl,30hmovah,2int21h
MOVAH,4CHINT21H
CODESENDS
ENDSTART
题目名称 实验三分支程序设计题目关键字分支结构
题目录入时间
2013-4-1420:
14:
57
—、实验目的
1.掌握汇编语言源程序结构。
2.掌握汇编语言分支结构程序设计方法。
题目内容
二、实验要求
1.编写完整的汇编语言程序:
(1)试编写一段程序,求出首地址为DATA的1