汇编语言实验5循环程序设计.docx
- 文档编号:15315076
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:14
- 大小:197.52KB
汇编语言实验5循环程序设计.docx
《汇编语言实验5循环程序设计.docx》由会员分享,可在线阅读,更多相关《汇编语言实验5循环程序设计.docx(14页珍藏版)》请在冰点文库上搜索。
汇编语言实验5循环程序设计
汇编语言实验报告
AssemblyLanguageProgrammingLab Reports
______________________________________________________________________________
班级:
_________姓名:
___________学号:
___________实验日期:
_____________
学院:
_____计算机与通信工程学院____专业:
_______计算机科学与技术___________
实验顺序:
___实验五____实验名称:
____________循环程序设计________________
实验分数:
_______考评日期:
________指导教师:
______________________________________________________________________________
1.实验目的
1、掌握两种循环结构,DOWHILE的循环结构用CMP指令和条件转移指令构成。
DOUNTIL用loop,loope,loopne这三种指令实现。
2、掌握以下指令
掌握循环指令,loop,loope,loopne。
掌握串处理指令,movs,cmps,scas,lods,stos以及和他们联合使用的重复前缀指令rep,repz,repnz。
掌握伪指令EQU及操作符'$'的使用。
掌握cmp,test和条件转移指令构成的循环结构。
3、掌握循环程序的设计过程,写出设计方法,给出程序框图,写出循环程序。
4、掌握多重循环中,可以由内层循环向外层循环跳转,或者直接向外层程序跳转,但是不允许从外向内跳转。
5、会用循环实现排序算法。
______________________________________________________________________________
2.实验环境
操作系统:
windowsxp
编译程序:
masm5.0
______________________________________________________________________________
3.实验原理
1、loop指令循环
2、二层、三层循环嵌套
______________________________________________________________________________
4.实验步骤及结果分析
1.简单的循环程序。
(1)写出y=5!
的程序段。
datasegment
infodb'The5!
=$'
tdb'0123456789ABCDEF'
dataends
stacksegment
db512dup(?
)
stackends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movax,stackmovss,ax
movsp,512
movdx,offsetinfo
movah,9int21h
movcx,4
moval,1
movbl,2
x:
mulblincbl
loopxmovcx,4
y:
pushcxmovcl,4
rolax,clmovsi,ax
andax,0fh
movbx,ax
movdl,t[bx]
movah,2
int21h
movax,si
popcx
loopy
movah,4chint21h
codeends
endstart
运行截图:
(2)在程序为N的字节数组value中取出第一个负数存在BL中。
代码见6-1.asm和6-2.asm
datasegment
infodb'TheIDofthfirstnegativenumberis:
$'
tdb'0123456789ABCDEF'
t1db1,3,5,7,-9,11,-13,15
countequ$-t1
dataends
stacksegment
db512dup(?
)
stackends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movax,stackmovss,ax
movsp,512
movdx,offsetinfo
movah,9
int21h
movcx,count
movbx,0
x:
moval,t1[bx]
incbx
andal,10000000b
loopzx
decbx
movax,bx
movcx,4
y:
pushcx
movcl,4
rolax,cl
movsi,ax
andax,0fh
movbx,ax
movdl,t[bx]
movah,2
int21h
movax,si
popcx
loopy
movah,4ch
int21h
codeends
endstart
运行截图:
2.串处理程序
(1)查找CATI表中的字符@,找到后将其保存到SIGN单元,其位置值保存到ADDI单元。
datasegment
valuedw1,2,3,4,5,6,7,8,9
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movax,value[4]
movah,4chint21h
codeends
endstart
运行截图:
(2)在长度为N的字数组VALUE中取出第3个数保存到AX中。
datasegment
valuedw1,2,3,4,5,6,7,8,9
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movax,value[4]
movah,4chint21h
codeends
endstart
运行截图:
3.排序
数组table中存放8个小写字母computer。
编写程序,将它们按降序排序。
datasegment
tdb'computer'
countequ$-t
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movcx,count
deccx
bubble:
pushcx
movbx,0
change:
moval,t[bx]cmpal,t[bx+1]
jaenext
xchgal,t[bx+1]
movt[bx],al
next:
incbx
loopchange
popcx
loopbubble
movah,4chint21h
codeends
endstart
运行截图:
4.综合练习
(1)上课练习题目
分别统计3个班级中某科成绩优秀的人数和不及格的人数。
datasegment
adb62,93,56,91,34,87,92,51
db93,72,84,52,99,48,83,76
db46,81,92,83,84,68,53,88
mdw3
ndw8
maxdb3dup(0)
mindb3dup(0)
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,datamovds,ax
movcx,m
movbx,0movsi,0
x:
pushcxmovcx,n
y:
moval,a[bx]
cmpal,90
jaelet1
cmpal,60
jaelet2
incmin[si]
jmplet2
let1:
incmax[si]
let2:
incbx
loopy
incsi
popcx
loopx
movah,4chint21h
codeends
endstart
运行截图:
____________________________________________________________________________
5.实验心得疑问建议
通过本次汇编试验,掌握了循环程序设计的基本方法,同时了解了loop指令的使用方法。
欢迎下载,谢谢观看!
资料仅供参考学习
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 循环 程序设计