汇编实验指导书.docx
《汇编实验指导书.docx》由会员分享,可在线阅读,更多相关《汇编实验指导书.docx(27页珍藏版)》请在冰豆网上搜索。
汇编实验指导书
汇编语言实验指导书
授课教师李娜
授课对象05计科、网络、06计科
授课时间07-08学年第一学期
授课地点一、二、四机房
课程简介
一.实验课程的性质和目的
汇编语言程序设计是计算机专业的一门专业基础课,是学好计算机底层系统构成的课程。
汇编语言程序设计是一门实用性很强的课程。
汇编语言程序程序设计实验教案是教案的重要环节,是理论教案的重要补充,只有通过实验,学生才能熟练掌握汇编语言程序设计的基本方法,并对其有更深刻的认识。
本门实验课是单独设课。
二.实验教案的方法和手段
为了提高实验教案效果,实验严把预习、实验、实验报告3个环节。
实验在软件实验室机房完成,单独设组,个人完成实验,每项实验以小班为单位,实验考勤采用电子签到制度。
预习:
安排学生学习实验内容,了解实验的过程和操作规程,并布置思考题和预习报告,让学生有目的地去查阅与实验相关的资料。
实验:
实验开始前由指导教师讲解实验要点,提出注意事项。
实验过程中,主题是学生,教师是辅助作用,要求学生独立完成实验。
实验报告:
实验结束后,强调学生及时填写实验记录表,对实验过程进行详细记录,对实验结果细致地分析、讨论,完成相关思考题作业。
三.课程学时
本实验课实验总学时为32学时。
四.实验成绩的考核方法
汇编语言实验成绩按百分制核定。
实验过程占50%,实验报告占50%。
五.大纲的适用范围
本大纲适用计算机科学与技术专业和计算机应用与维护专业学生。
六.主要设备与器材配备
实验室分室名称
实验名称
主要设备、器材
现有数量
软件实验室
熟悉汇编语言编程环境
计算机
250
软件实验室
简单程序设计
计算机
250
软件实验室
串操作
计算机
250
软件实验室
循环程序设计
计算机
250
软件实验室
分支程序设计
计算机
250
软件实验室
子程序设计
计算机
250
软件实验室
宏定义和宏调用
计算机
250
软件实验室
I/O程序设计
计算机
250
七.实验项目汇总表
序号
实验项目名称
学时
实验类型
实验类别
每组人数
1
熟悉汇编语言编程环境
4
验证
必修
1
2
简单程序设计
2
验证
必修
1
3
串操作
4
验证
必修
1
4
循环程序设计
4
验证
必修
1
5
分支程序设计
4
验证
必修
1
6
子程序设计
4
综合
必修
1
7
宏定义和宏调用
4
验证
必修
1
8
I/O程序设计
6
验证
必修
1
实验一熟悉汇编语言编程环境
一.实验目的
<1)熟悉汇编语言编程环境;
<2)掌握基本汇编程序。
。
二.实验仪器设备
计算机
三.实验重点、难点
熟悉汇编语言编程环境;
DEBUG常用命令的正确使用。
-T/-U/-Q/-G
四.实验题目
比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘metch’,否则,显示’nomatch’。
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—COMPARESTRING
;********************************************************
datasegment
string1db'movethecursorbackward.'
String2db'movethecursorbackward.'
Mess1db'match.',13,10,'$'
Mess2db'nomatch.',13,10,'$'
dataends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
data,es:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
moves,ax
leasi,string1
leadi,string2
cld
movcx,25
repzcmpsb
jzmatch
leadx,mess2
jmpshortdisp
match:
leadx,mess1
disp:
movah,09
int21h
ret
mainendp
prognamends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验二简单程序设计
一.实验目的
掌握简单程序设计的方法
二.实验仪器设备
计算机
三.实验重点、难点
进一步熟悉汇编语言编程环境;
四.实验题目
试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—DISPLAY
;********************************************************
datasegment
mess1db'pleaseinputonecharacterbetweena-z',13,10,'$'
dataends
codesegment
mainprocfar
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data。
datareasegmentaddr
movds,ax。
intoDSregister
moves,ax。
setESregistertocurrent
。
MAINPARTOFPROGRAM
leadx,mess1
movah,09。
callDOS
int21h
begin:
movah,1。
receiveadatafromkeyboard
int21h
cmpal,'a'
jbstop
cmpal,'z'
jastop
subal,20h
movdl,al。
showtheinputedcharacter
movah,2
int21h
jmpbegin
stop:
ret
mainendp
codeends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验三串操作
一.实验目的
(1)进一步巩固课本中关于串操作指令学习。
(2)掌握用汇编程序设计中字符串的操作方法。
二.实验仪器设备
计算机
三.实验重点、难点
串操作的隐含操作数的变化。
四.实验题目
根据自己的情况建立数据段:
student_namedb‘‘
Student_iddb‘‘
Print_linedb50dup(?
>
把student_name移到print_line的前20个字节中,把student_id移到print_line的后10个字节中,并输出字符串print_line.
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—DISPLAY
;********************************************************
datasegment
STUDENT_NAMEDB'LiJingjing'
STUDENT_IDDB'04121026','$'
PRINT_LINEDB50DUP(''>,'$'
dataends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
data,es:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
moves,ax
begin:
leasi,STUDENT_NAME。
moveSTUDENT_NAME'scontentto
。
theheadofPRINT_LINE
leadi,PRINT_LINE
movcx,10
cld
repmovsb
std。
moveSTUDENT_IDtotheend
。
ofPRINT_LINE
leasi,STUDENT_ID+7
leadi,PRINT_LINE+49
movcx,8
repmovsb
。
PRINTSTRING
leadx,PRINT_LINE
movah,09。
showthecontentofprint_line
int21h
ret
mainendp
prognamends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验四循环程序设计
一.实验目的
(1)学习循环次数确定的循环程序设计方法。
(2)学习循环次数不确定的循环程序设计方法。
二.实验仪器设备
计算机
三.实验重点、难点
多重循环结构的程序设计。
四.实验题目
(1)用汇编语言编程实现密码的验证任务,设密码为“3132”H,放在BX中。
(2)验证密码后,要求从键盘输入任意一串字符,碰到‘Q’则结束。
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—DISPLAY
datasegment
mess1db'pleaseinputyourpassword!
',13,10,'$'
mess2db'ok!
pleaseinputyournumber:
',13,10,'$'
dataends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
data,es:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
moves,ax
begin:
leadx,mess1
movah,09。
showthecontentofprint_line
int21h
movbx,3132h
movch,2
movdx,0
ABC1:
movah,07h
int21h
movcl,8
shldx,cl
movdl,al
decch
jnzABC1
cmpdx,bx
jnzABC2
leadx,mess2
movah,09。
showthecontentofprint_line
int21h
ABC3:
movah,1
int21h
cmpal,'Q'
jzABC2
jmpABC3
ABC2:
ret
mainendp
prognamends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验五分支程序设计
一.实验目的
(1)学习用汇编语言实现a>b转移的程序设计方法。
(2)学习用汇编语言实现a>=b转移的程序设计方法。
(3)学习用汇编语言实现a
(4)学习用汇编语言实现a<=b转移的程序设计方法。
二.实验仪器设备
计算机
三.实验重点、难点
对于复杂的分支边缘的界定。
四.实验题目
(1)用汇编语言编写实现C=A+B的实验。
(2)从键盘上输入A的值,如A的值在0——9的范围内,则执行第3步;否则继续执行步骤2。
(3)从键盘上输入B的值,如B的值在0——9的范围内,则执行第4步;否则继续执行步骤3。
(4)计算五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—DISPLAY
;********************************************************
datareasegment
Adb0
mess1db"pleaseinputadatabetween0and9",13,10,'$'
mess2db'ERROR!
Pleaseinputagain!
',13,10,'$'
mess3db'ThesumofA+Bis:
','$'
mess4db'Thesumis>9',13,10,'$'
mess5db13,10,'$'
datareaends
codesegment
mainprocfar
assumecs:
code,ds:
datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
leadx,mess1
movah,9
int21h
begin:
movah,1
int21h
subal,'0'
jlnext1
cmpal,9
janext1
jleAA
next1:
leadx,mess5
movah,9
int21h
leadx,mess2
movah,09h
int21h
leadx,mess1
movah,09h
int21h
jmpbegin
AA:
movbl,al。
bl中存放第一次输入的数
leadx,mess5
movah,9
int21h
leadx,mess1
movah,9
int21h
again:
movah,1
int21h
movcl,al
leadx,mess5
movah,9
int21h
moval,cl。
al中存放第二次输入的数
subal,'0'
jlnext2
cmpal,9
janext2
jleBB
next2:
leadx,mess5
movah,9
int21h
leadx,mess2
movah,09h
int21h
leadx,mess1
movah,09h
int21h
jmpagain
BB:
movah,0
addal,bl。
al中存放和
cmpal,0
jeprintit
cmpal,9
jaexit
printit:
movcl,al
leadx,mess3
movah,9
int21h
movdl,cl
adddl,30h
movah,2
int21h
ret
exit:
leadx,mess4
movah,9
int21h
movdl,'0'
movah,2
int21h
ret
mainendp
codeends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验六子程序设计
一.实验目的
(1)理解汇编程序中段的概念;
(2)掌握子程序设计及其调用。
(3)掌握查表法程序设计方法。
二.实验仪器设备
计算机
三.实验重点、难点
子程序往往程序较大,调用较多,参数传递、保护较多。
四.实验题目
请用子程序结构编写如下程序:
从键盘输入一个二位十进制的月份数<01-12),然后显示出相应英文缩写名。
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
;PROGRAMTITLEGOESHERE—DISPLAY
;********************************************************
datareasegment
threedb3
mess0db'jan'
mess1db'feb'
mess2db'mar'
mess3db'apr'
mess4db'may'
mess5db'jun'
mess6db'jul'
mess7db'aug'
mess8db'sep'
mess9db'oct'
mess10db'nov'
mess11db'dec'
inputmessdb'Pleaseinputthemonth(01--12>','$'
errmessdb'ERROR!
invalidparameter!
!
','$'
datareaends
codesegment
mainprocfar
assumecs:
code,ds:
datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
leadx,inputmess
movah,09h
int21h
callinput
cmpax,0
jberror
cmpax,12
jaerror
movbx,offsetmess0
subax,1
multhree
addbx,ax
calloutput
ret
error:
leadx,offseterrmess
movah,09h
int21h
inputprocfar
pushbx
movbl,10
movah,01h
int21h
subal,'0'
mulbl
movbx,ax
movah,01h
int21h
subal,'0'
cbw
addax,bx
popbx
ret
inputendp
outputprocnear
movcx,3
next:
movdl,[bx]
movah,02h
int21h
incbx
loopnext
movdl,0dh
movah,02h
int21h
movdl,0ah
movah,02h
int21h
ret
outputendp
mainendp
codeends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验七宏汇编
一.实验目的
(1)掌握宏定义设计方法
(2)正确使用宏调用
(3)掌握宏展开
二.实验仪器设备
计算机
三.实验重点、难点
对于正确的宏定义、宏调用写出宏展开,特别是展开层数的确定。
四.实验题目
宏指令RAND产生一个0到LIMIT<32)之间的随机数。
五.实验内容、步骤
1.调用EDIT建立ASM源文件。
2.用汇编程序MASM对源文件汇编产生目标文件OBJ。
<如有问题,可用DEBUG调试。
)
3.用LINK联接程序产生执行文件EXE。
4.执行程序。
附:
源程序
randMACROlimit,result
pushax
pushcx
movah,0
int1ah
moval,dl
movcl,limit
divcl
moval,ah
movah,0
movresult,ax
popcx
popax
endm
datasegment
mess1db'pleaseinputyourpassword!
',13,10,'$'
mess2db'ok!
pleaseinputyournumber:
',13,10,'$'
dataends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
data,es:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
moves,ax
begin:
leadx,mess1
movah,09。
showthecontentofprint_line
int21h
.lall
rand32,dx
ret
mainendp
prognamends
endstart
六.作业布置
<1)完成本实验的实验报告。
<2)针对下一个实验预习课本相关章节;
<3)预习实验指导书相关内容,设计上机源程序。
实验八I/O程序设计
一.实验目的
(1)