昆明理工大学微机原理实验报告资料.docx
《昆明理工大学微机原理实验报告资料.docx》由会员分享,可在线阅读,更多相关《昆明理工大学微机原理实验报告资料.docx(21页珍藏版)》请在冰点文库上搜索。
![昆明理工大学微机原理实验报告资料.docx](https://file1.bingdoc.com/fileroot1/2023-7/16/bbd42146-ae06-4e11-9507-aff3ec151b87/bbd42146-ae06-4e11-9507-aff3ec151b871.gif)
昆明理工大学微机原理实验报告资料
昆明理工大学电力工程学院学生实验报告
实验课程名称:
微机原理及应用
开课实验室:
计算机3022017年5月9日
年级、专业、班
14电自3班
学号
201410501321
姓名
栾江飞
成绩
实验项目
名称
实验1Emu8086仿真软件的使用
指导
教师
毕贵红
教师评语
一、实验目的:
学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,为后继课程打下坚实的基础。
学会运算类指令解决实际问题的方法。
掌握运算类指令对各标志位的影响及其测试方法。
二、实验原理:
使用MASM汇编语言设计工具,设计简单的汇编语言程序并进行运行调试,以便掌握汇编语言设计、编写、调试和运行程序的方法
三、实验仪器、材料:
a)软件MASM5.0
b)PC微机一台
四、实验步骤:
a)建立asm文件
在windows系统环境下,应用写字板或其它文字编辑软件编写汇编语言源文件。
注意保存的源文件以asm为后缀。
b)用汇编程序MASM对源文件汇编产生目标程序.OBJ。
c)用连接程序LINK产生可执行文件.EXE。
d)执行程序。
e)程序调试
五、实验过程原始记录(数据图表、计算等)
熟悉Emu8086软件
运行Emu8086软件
点击“继续”按钮,点击“新建”按钮
选择“EXE模板
编程练习一
在数据表DATA1中存放数据0F865H,在数据表DATA2中存放数据360CH。
现编写出将两数分别取出相加,然后将计算结果存放到当前数据段中,偏移地址为3800H单元中的源程序。
:
3、编程练习二
编写计算5899H+7987H的程序,并将计算结果存入0B88H单元;
单步运行,并认真记录标志寄存器的信息变化;
从内存中观察计算结果
六、实验结果分析
汇编源程序清单
练习1
;EXEformatallowsseveralsegments-forstack,dataandcode.
TITLE8086CodeTemplate(forEXEfile)
;AUTHORemu8086
;DATE?
;8086CodeTemplate
DSEGSEGMENT'DATA'
;TODO:
addyourdatahere!
!
!
!
DATA1DW0F865H
DATA2DW360CH
DSEGENDS
SSEGSEGMENTSTACK'STACK'
DW100hDUP(?
)
SSEGENDS
CSEGSEGMENT'CODE'
STARTPROCFAR
;StorereturnaddresstoOS:
PUSHDS
MOVAX,0
PUSHAX
;setsegmentregisters:
MOVAX,DSEG
MOVDS,AX
MOVES,AX
;TODO:
addyourcodehere!
!
!
!
LEASI,DATA1
MOVAX,DATA1
ADDAX,DATA2
MOV[2800H],AX
HLT
;returntooperatingsystem:
RET
STARTENDP
CSEGENDS
ENDSTART;setentrypoint.
练习2
;EXEformatallowsseveralsegments-forstack,dataandcode.
TITLE8086CodeTemplate(forEXEfile)
;AUTHORemu8086
;DATE?
;8086CodeTemplate
DSEGSEGMENT'DATA'
;TODO:
addyourdatahere!
!
!
!
DATA1DW0F865H
DATA2DW360CH
DSEGENDS
SSEGSEGMENTSTACK'STACK'
DW100hDUP(?
)
SSEGENDS
CSEGSEGMENT'CODE'
STARTPROCFAR
;StorereturnaddresstoOS:
PUSHDS
MOVAX,0
PUSHAX
;setsegmentregisters:
MOVAX,DSEG
MOVDS,AX
MOVES,AX
;TODO:
addyourcodehere!
!
!
!
LEASI,DATA1
MOVAX,DATA1
ADDAX,DATA2
MOV[2800H],AX
POPDX
POPBX
HLT
;returntooperatingsystem:
RET
STARTENDP
CSEGENDS
ENDSTART;setentrypoint.
昆明理工大学电力工程学院学生实验报告
实验课程名称:
微机原理及应用
开课实验室:
计算机3082017年5月11日
年级、专业、班
14电自3班
学号
201410501321
姓名
栾江飞
成绩
实验项目
名称
实验2分支、循环及子程序设计实验
指导
教师
毕贵红
教师评语
七、实验目的
1.学习分支程序、循环结构程序的设计和调试方法。
2.学习子程序的定义和调试方法。
3.掌握分支、循环、子程序等程序的基本结构。
八、实验原理
实验题目:
从键盘输入一个字符串,统计字母(不分大小写)出现的个数,并显示结果。
九、实验仪器、材料
1.软件MASM5.0
2.PC微机一台
一十、实验步骤
1.输入程序并检查无误,经汇编、连接后生成.EXE文件。
2.使用DEBUG命令运行以上程序。
一十一、实验过程原始记录(数据图表、计算等)
一十二、实验结果分析
汇编源程序清单
MLENGTH=128;缓存区长度
DATASEGMENT
STR1DBMLENGTH;符合0AH功能调用所需的缓冲区
DB0;实际键入的字符数
DBMLENGTHDUP(0)
MESS1DB'PLEASEINPUTESTR1:
$';提示输入一个字符STR1
MESS2DB'THENUMBEROFDIGITAL:
$';数字个数输出提示
MESS3DB'THENUMBEROFLITTER:
$';字符个数输出提示
NDW30;
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,ES:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX;设置DS
MOVES,AX
MOVDX,OFFSETMESS1;显示提示语
CALLDISPMESS
MOVDX,OFFSETSTR1
MOVAH,0AH;接收一个字符串
INT21H
CALLNEWLINE
MOVBH,0;清数字字符计数器
MOVBL,0;清字母字符计数器
MOVCL,STR1+1;取字符串长度
MOVCH,0
JCXZCOK;若字符串长度等于零,不统计
MOVSI,OFFSETSTR1+2;指向字符串首地址
AGAIN:
MOVAL,[SI];取一个字符
INCSI;调整数据指针,指向下一个数据
CMPAL,'0';判断是否为数字字符
JBNEXT;小于'0',不属于统计字符,转向取一个字符
CMPAL,'9'
JANODEC;大于'9',不属于统计字符,转向取一个字符
INCBH;'0'-'9',数字字符计数加1
JMPSHORTNEXT;转向取一个字符
NODEC:
ORAL,20H;转小写
CMPAL,'a';判断是否是字母字符
JBNEXT
CMPAL,'z'
INCBL;字母字符计数加1
NEXT:
LOOPAGAIN
COK:
MOVDX,OFFSETMESS2
CALLDISPMESS
MOVAL,BH
XORAH,AH
CALLDISPAL;显示数字字符个数
CALLNEWLINE
MOVDX,OFFSETMESS3
CALLDISPMESS
MOVAL,BL
XORAH,AH
CALLDISPAL;显示字母字符个数
CALLNEWLINE
JMPRETU;宏跳转
DISPALPROCNEAR
MOVCX,3;8位二进制数转换成3位十进制
MOVDL,10
DISP1:
DIVDL
XCHGAH,AL;使AH=商、AL=余数
ADDAL,30H;使余数转换成ASCII码
PUSHAX;压入堆栈
XCHGAH,AL
MOVAH,0
LOOPDISP1
MOVCX,3
DISP2:
POPDX;弹出1位
CALLECHOCH;显示字符
LOOPDISP2
RET
DISPALENDP
DISPMESSPROCNEAR;调用DOS9号功能,显示字符串
MOVAH,09H
INT21H
RET
DISPMESSENDP
ECHOCHPROCNEAR;调用DOS2号功能,显示1个字符
MOVAH,2
INT21H
RET
ECHOCHENDP
NEWLINEPROC;显示回车和换行
PUSHAX
PUSHDX
MOVDL,0DH;回车符的ASCII码是0DH
MOVAH,2
INT21H;显示回车符
MOVDL,0AH;换行符的ASCII码是0AH
MOVAH,2
INT21H;显示换行符
POPDX
POPAX
RET
NEWLINEENDP
RETU:
MOVAH,4CH;返回DOS系统
INT21H
CODEENDS
ENDSTART
昆明理工大学电力工程学院学生实验报告
实验课程名称:
微机原理及应用
开课实验室:
计算机3022017年5月16日
年级、专业、班
14电自3班
学号
201410101105
姓名
栾江飞
成绩
实验项目
名称
实验3显示程序设计实验
指导
教师
毕贵红
教师评语
一十三、实验目的
1.了解INT21H部分功能号的功能和使用方法。
2.掌握字符方式下PC机显示器显示控制。
3.掌握分支、循环、子程序等程序的基本结构。
一十四、实验原理
实验题目:
从键盘输入两个字符串,比较是否一致,并显示比较结果。
一十五、实验仪器、材料
软件MASM5.0
PC微机一台
一十六、实验步骤
1.输入程序并检查无误,经汇编、连接后生成.EXE文件。
2.使用DEBUG命令运行以上程序,并观察实验结果。
一十七、实验过程原始记录(数据图表、计算等)
一十八、实验结果分析
汇编源程序清单
MLENGTH=128
DATASEGMENT
STR1DBMLENGTH
DB0
DBMLENGTHDUP(0)
STR2DBMLENGTH
DB0
DBMLENGTHDUP(0)
MESS1DB'PLEASEINPUTESTR1:
$'
MESS2DB'PLEASEINPUTESTR2:
$'
MESS3DB'RESULT:
THEYARETHESAME$'
MESS4DB'RESULT:
THEYAREDIFFERENT$'
NDW30
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,ES:
DATA,CS:
CODE
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVDX,OFFSETMESS1
CALLDISPMESS
MOVDX,OFFSETSTR1
MOVAH,0AH
INT21H
CALLNEWLINE
MOVDX,OFFSETMESS2
CALLDISPMESS
MOVDX,OFFSETSTR2;输入一串字符串至STR2缓冲区
MOVAH,0AH
INT21H
CALLNEWLINE
MOVAX,SEGSTR1;取STR1的段地址
MOVDS,AX
MOVAX,SEGSTR2
MOVES,AX
LEASI,STR1;取STR1的偏移地址
LEADI,STR2
MOVCX,N
CLD
REPECMPSB;逐一比较两串的对应字符是否相等
JNEEXIT;不相等,则转EXIT
MOVBX,0;相等,则BX=0
MOVDX,OFFSETMESS3
CALLDISPMESS
JMPRETU
EXIT:
MOVBX,-1
MOVDX,OFFSETMESS4
CALLDISPMESS
JMPRETU
DISPMESSPROCNEAR;调用DOS9号功能,显示字符串
MOVAH,09H
INT21H
RET
DISPMESSENDP
NEWLINEPROC;显示回车和换行
PUSHAX
PUSHDX
MOVDL,0DH;回车符的ASCII码是0DH
MOVAH,2
INT21H;显示回车符
MOVDL,0AH;换行符的ASCII码是0AH
MOVAH,2
INT21H;显示换行符
POPDX
POPAX
RET
NEWLINEENDP
RETU:
MOVAH,4CH;返回DOS系统
INT21H
CODEENDS
ENDSTART