微机原理实验3分支程序的设计.docx
- 文档编号:11066201
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:18
- 大小:346.78KB
微机原理实验3分支程序的设计.docx
《微机原理实验3分支程序的设计.docx》由会员分享,可在线阅读,更多相关《微机原理实验3分支程序的设计.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理实验3分支程序的设计
物理与机电工程系
(2015——2016学年第一学期)
《分支程序设计》
上机实验报告
专业:
电子信息工程
学号:
**********
姓名:
不同人
任课教师:
规和
实验地点:
实验楼368
项目编号:
实验三
一、实验目的:
1.掌握分支程序的基本结构和设计方法。
2.掌握分支程序上机运行和调试方法。
3.熟悉DEBUG的使用。
二、实验容:
1.用分支结构设计程序实现符号函数
要求x和y存放在存单元中,并将判断的结果在屏幕上显示输出。
2.在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
3.在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
4.将字节型变量x的低四位(一位十六进制数)以十六进制数的形式显示。
三、实验过程:
1.根据要求用分支结构设计编辑实现符号函数
的源程序,汇编源程序,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:
DATASSEGMENT;定义数据段
xdb-6;存入x的值,比如此处取x=-6
ydb?
dadb'y=1','$'
dendb'y=0','$'
xiaodb'y=-1','$'
DATASENDS
STACKSSEGMENT;定义堆栈段
STACKSENDS
CODESSEGMENT;定义代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX;初始化
moval,x;X=-6送入AL
cmpal,0;将AL与0比较大小
JLnext;(小于转移,SF!
=0且ZF=0)小于转移到next
jgnext1;(大于转移,SF=0F且ZF=0)大于转移到next1
movy,0;将存入y
leadx,den;取den的偏移地址送DX
movah,09h;9存入AH
int21h;调用9号功能键,显示den的容‘y=0’
jmpnext2;无条件转移到next2
next1:
movy,1;1送入y
leadx,da;取da的偏移地址放DX
movah,09h
int21h;调用9号功能显示da的容‘y=1’
jmpnext2;无条件转移到next2
next:
movy,-1;-1放y
leadx,xiao;取xiao的偏移地址放DX中
movah,09h
int21h;调用9号功能显示xiao的容‘y=-1’
next2:
MOVAH,4CH;调用返回DOS功能
INT21H;返回DOS
CODESENDS;代码段结束
ENDSTART;汇编结束,起始运行地址为START
程序流程图如下:
调试过程如下:
2.根据要求,在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示,写出源程序,汇编源程序,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:
DATASSEGMENT;定义数据段
ydb'error','$';定义输出字符串
DATASENDS
STACKSSEGMENT;定义堆栈段
STACKSENDS
CODESSEGMENT;定义代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS;初始化
MOVDS,AX
movah,1;1放AH
int21h;调用1号功能,输入一个字符
cmpal,61h;与61H比较大小
jgenext1;大于等于转移到next1
jmpnext4;无条件转移到next4
next1:
cmpal,7Ah;与7AH比较大小
jlenext2;小于等于转移到next2
jmpnext4;无条件转移到next4
next2:
subal,20h;AL加20H
next3:
movdl,al;AL容放DL
movah,2;2放AH
int21h;调用2号功能键显示DL中容
jmpnext5;无条件转移next5
next4:
leadx,y;取y的偏移地址
movah,09h
int21h;用9号功能键显示
next5:
MOVAH,4CH;返回DOS功能调用
INT21H;返回DOS
CODESENDS;代码段结束
ENDSTART;汇编结束,起始运行地址为
程序流程图如下:
调试过程如下:
3.根据要求,写出输入字符判断它是一个数字、大写字母还是小写字母的源程序,汇编源程序,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:
DATASSEGMENT;定义数据段
shuzidb'digital','$'
zimudb'letter','$'
qitadb'other','$'
DATASENDS
STACKSSEGMENT;定义堆栈段
stringdb?
;定义存放单元
STACKSENDS
CODESSEGMENT;定义代码段
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS;初始化
MOVDS,AX
movah,1
int21h;调用1号功能键输入一个数
cmpal,30h;与30H比较大小
jgenext1;大于等于转移
jmpnext6;无条件转移
next1:
cmpal,39h;与39H比较大小
jlenext2;小于等于转移
cmpal,41h;与41H比较大小
jgenext3;大于等于转移
jmpnext6;直接转移
next3:
cmpal,5Ah;与5AH比较大小
jlenext5;小于等于转移
jmpnext8;直接转移
next8:
cmpal,61h;与61H比较大小
jlenext6;小于等于转移
jgenext4;大于等于转移
next5:
leadx,zimu;取偏移地址
movah,09h
int21h;调用9号功能键显示
jmpnext7;直接转移
next4:
cmpal,7Ah;与7AH比较大小
jlenext5;小于等于转移
jmpnext6;直接转移
next2:
leadx,shuzi;取偏移地址
movah,09h
int21h;调用9号功能键显示
jmpnext7;直接转移
next6:
leadx,qita;取偏移地址
movah,09h
int21h;调用9号功能键显示
next7:
MOVAH,4CH;返回DOS功能调用
INT21H;返回DOS
CODESENDS;代码段结束
ENDSTART;汇编结束,起始运行地址为START
程序流程图如下:
调试过程如下:
4.根据要求,编写将字节型变量x的低四位十六进制数的形式显的源程序,汇编源程序,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义如下:
datasegment;定义数据段
xdb15;存入要转换的x的值,比如此处取15
dataends
codesegment;定义代码段
assumecs:
code,ds:
data
start:
movax,data;初始化
movds,ax
moval,x;x的值送AL中
andal,0fh;将AL高四位清零
cmpal,9;AL与9比较大小
JBEnext;低于等于转移
addal,7;AL加7
next:
addal,30h;AL加30H
movah,2
movdl,al;AL输入DL
int21h;调用2号功能键显示DL中的容
movah,4ch;返回DOS功能调用
int21h;返回DOS
codeends;代码段结束
endstart;汇编结束,起始运行地址为start
程序流程图如下:
调试过程如下:
四、实验结论
1>学习并使用了DEBUG程序,进一步掌握和熟悉汇编语言程序上机过程、DEBUG的常用指令。
2>根据要求编写了程序,用分支结构设计程序实现符号函数,运行MASMFORWINDOWS软件,打开写好的程序,源程序即用p指令逐条执行的寄存器变化及指令逐条含义,主要运用有功能键的调用,如1、2、9号功能键,及其出入口参数,回车换行的运用。
3>根据要求编写了判断字符是否为小写字母,显示错误信息,即则将其转换为大写字母并显示的程序。
通过键盘输入字符,利用JIE、JMP、JGE等转移指令,大小写字母的ASIIC码及相关输入显示功能号的调用等实现。
在DEBUG下查看执行结果,用p指令逐条执行源程序的寄存器变化及指令逐条含义。
4>通过键盘输入字符,利用JIE、JMP、JGE等转移指令,大小写字母即数字的ASIIC码、1、2、9等相关输入显示功能号的调用等实现判断字符它是一个数字、大写字母还是小写字母,并在屏幕上显示相应的提示信息digital、letter和other。
在DEBUG下查看执行结果,用p指令逐条执行源程序的寄存器变化及指令逐条含义。
5>利用转移指令JBEJNZ和移位指令ROL以逻辑与指令AND及将字节型变量x的低四位(用十六进制数的形式显示了出来,并运用MASMFORWINDOWS软件逐步调试运行了改程序。
6>通过以上四个程序的设计、调试、运行,了解、熟悉并掌握了分支程序的基本结构和设计以及分支程序上机运行和调试方法。
五、实验中存在问题及解决方法
1>程序调试中,对一些转换指令及其执行过程中的对标志位的影响不是很熟悉,导致有些程序片段看起来有些吃力,尤其在调试过程中;在查看分析寄存器的存储状态时有些不太清楚。
2>格式问题,对汇编程序编写的格式不太规,导致一些基本简单的指令运行出错,比如在输入常量时,十六定制在教材学习中必须带上H,而在运行程序时,编写的程序中十六定制常量不能带有H。
3>对教材中汇编程序的理论学习不扎实,很多指令原来没有完全掌握,导致在编写、运行程序时很多程序指令、执行结果、以及执行后的寄存器存储状态不太明白,一些执行过程没有完全理解透彻,以致在出现错误时很难找到原因。
六、教师评语
三、实验过程:
四、实验结论
五、实验中存在问题及解决方法
六、教师评语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 分支 程序 设计