微机原理实验报告.docx
- 文档编号:28299355
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:46
- 大小:1.27MB
微机原理实验报告.docx
《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(46页珍藏版)》请在冰豆网上搜索。
微机原理实验报告
(微机原理实验报告)
实验报告
课程名称微机原理与接口(技术)
专业通信工程
班级通信1301B
学号1334140157
学生姓名刘欢
黄淮学院信息工程学院
实验报告一
实验名称
调试程序DEBUG及8086指令使用
实验时间
20150109
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
演示性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1)8086指令:
MOV,ADD,ADC,SUB,SBB,DAA,XCHG
2)DEBUG命令:
A,D,E,G,Q,R,T,U,F,H。
3)BCD码,ASCII码及用16进制数表示二进制码的方法。
4)8086寄存器:
AX,BX,CX,DX,F,IP。
2、实验预备知识
1)熟悉DEBUG命令的使用
2)8086、8088常用指令的练习。
3、实验内容和步骤
一、DEBUG命令使用:
1、打DEBUG进入DEBUG控制,显示提示苻'_'。
2、用命令F10010F'A'将'A'的ASCII码填入内存。
3、用命令D10010F观察内存中的16进制码及屏幕右边的ASCII字符。
4、用命令F11011F41重复上二项实验,观察结果并比较。
经过比较结果一样。
5、用命令E100303132……3F将30H-3FH写入地址为100开始的内存
单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?
6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:
(1)34H,22H
(2)56H,78H(3)A5,79H(4)1284H,5678H(5)A758,347FH
经过比较与手算结果相同。
7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF
和AF的内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
二、8086/8088常用指令练习
1、传送指令
2、加减法指令:
3、带进位加减法:
4、BCD码加减
通过8086的单步运行,可以清楚的了解每条指令的运行结果。
4、实验电路、程序清单
本实验为DEBUG的调用,无程序和电路。
5、实验结果
6、实验中遇到的问题
上实验课不是太懂通过老师讲解懂了一些
指导教师批阅成绩
指导教师签字:
年月日
实验报告二
实验名称
内存操作数及寻址方法
实验时间
20150313
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
验证性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1)8086/8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。
2)8086/8088指令:
MOV,INC,DEC,LOOP,INT3,INT20H,寄存器BX,BP,SI,DI。
3)8086/8088汇编语言伪操作:
BYTEPTR,WORDPTR。
4)求累加和程序和多字节加减法程序。
2、实验预备知识
1)了解和掌握有哪些寻址方式
2)熟练各种寻址方式的方法。
3、实验内容和步骤
1)内存操作数及各种寻址方式使用:
步骤:
(也可用emu8086)
1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。
注意D命令显示结果中右边的ASCII字符及双字节数存放法。
2)求累加和程序:
步骤:
1、DEBUG调试:
1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。
2)用E命令在内存地址2000H处键入16个数字
3)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值。
4)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错。
5)重复GJ与T,再检查AX是否正确。
6)用G命令使程序运行到结束,检查AX值是否正确。
2、用emu8086调试:
给程序加上伪指令,观察运行结果。
3)多字节加法程序。
步骤:
1)用命令键入此程序
2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。
3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?
),是否正确?
4)自编程序:
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放
地址同上题。
调试并做记录。
4、实验电路、程序清单
1)内存操作数及各种寻址方式的使用
MOVAX,5678H
MOV[2000H],AX
MOVBX,2002H
MOVBYTEPTR[BX],40H
MOVDL,45H
INCBX
MOV[BX],DL
DECDL
MOVDI,3
MOV[BX+DI],DL
MOV[BX+DI+1],DL
MOVWORDPTR[BX+DI+2],7846H
2)求累加和程序
程序:
MOVBX,2000H
MOVCX,10H
SUBAX,AX
LOP:
ADDAL,[BX]
ADCAH,0
INCBX
J:
LOOPLOP
HLT
3)多字节加法程序
程序:
MOVDI,1000H
MOVCX,8
MOVSI,2000H
CLC
LOP:
MOVAL,[SI]
ADC[DI],AL
INCSI
INCDI
LOOPLOP
HLT
5、实验结果
6、实验中遇到的问题
本次实验比第一次好多了但是还会遇到一些不会的通过老师和同学的帮助学会了
指导教师批阅成绩
指导教师签字:
年月日
实验报告三
实验名称
数据串传送及查表程序
实验时间
20150327
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
综合性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1)堆栈、堆栈指示器SP和堆栈操作指令PUSH、POP。
2)段寄存器和物理地址计算。
3)查表法和查表指令XLAT。
4)数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP。
5)循环指令ROL、逻辑与指令AND和清方向位指令CLD。
6)伪操作指令DB。
2、实验预备知识
1)了解相应指令符的应用
2)知道什么是入栈、出栈及相应操作
3)知道段寄存器和物理地址的计算,了解查表法的程序格式
4)知道字符串是如何传送的
5)熟悉循环指令ROL逻辑与指令AND和清零指令CLD,以及伪指令的掌握。
3、实验内容和步骤
一、利用查表方法把DX的内容(16进制数)转换成ASCII码:
二、数据串搬家程序:
三、段寄存器概念及字符串传送指令练习:
4、实验电路、程序清单
1)利用查表法把DX的内容(16进制数)转换成ASCII码
MOVBX,1000H
MOVDI,2000H
MOVCX,4
LOP:
PUSHCX
MOVCL,4
ROLDX,CL
POPCX
MOVAL,DL
ANDAL,0FH
XLAT
CLD
STOSB
LOOPLOP
INT20H
2)数据串搬家程序
MOVSI,1000H
MOVDI,1500H
MOVCX,0FH
LOP:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLOP
INT20H
3)段寄存器概念及字符串传送指令练习
MOVSI,0
MOVDI,0
MOVAX,1000H
MOVDS,AX
MOVAX,1500H
MOVES,AX
MOVCX,0FH
CLD
REPMOVSB
INT20H
5、实验结果
一
二
三
6、
6、实验中遇到的问题
遇到了程序运行出错的问题,还有运行结果与实际不符的问题。
指导教师批阅成绩
指导教师签字:
年月日
实验报告四
实验名称
屏幕字符显示程序
实验时间
20150410
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
综合性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1、8086/8088指令:
JMP,ROR,XOR,HLT。
2、利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法。
3、直接向RAM(VRAM)送ASCII码进行屏幕显示的方法。
4、IBM-PC机的ASCII码表及控制字符。
5、命令(.COM)文件及使用方法。
6、利用^Break退出程序的方法及局限性。
2、实验预备知识
1)利用INT2109H号功能调用显示字符串
2)利用INT21H2号功能显示字符
3)直接向VRAM送ASCII码显示字符
4)自己编写一个程序要求在AX中显示内容,即显示AX=xxx.
3、实验内容和步骤
一、利用INT2109H号功能调用显示字符串。
二、利用INT21H2号功能显示字符:
三、直接向VRAM送ASCII码显示字符
四。
自编一个程序,要求显示AX的内容,即能显示AX=xxxx。
4、实验电路、程序清单
第一个实验程序清单
MOVAH,9
MOVDX,110
INT21H
INT20H
DB'Thisisasample!
$'
第二个程序清单:
XORDL,DL
MOVCX,100H
LOP:
MOVAH,2H
INT21H
INCDL
LOOPLOP
INT20H
第三个程序清单:
DATASEGMENT
BUFFDB'0123456789ABCDEF'
BUFF1DB'AX='
BUFF2DB4DUP(?
)
BUFF3DB'H$'
DATAENDS
ESSSEGMENT
ESSENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
ESS
SATRT:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,78EFH
MOVBX,OFFSETBUFF
MOVDI,OFFSETBUFF2
MOVCX,4
LOP:
PUSHCX
MOVCL,4
ROLAX,CL
POPCX
PUSHAX
ANDAL,0FH
XLAT
CLD
STOSB
POPAX
LOOPLOP
MOVDX,OFFSETBUFF1
MOVAH,09H
INT21H
INT20H
CODEENDS
ENDST
第四个程序:
DATASEGMENT
STRINGDB'WANGYONGCUN$'
DATAENDS
STACK1SEGMENTPARASTACK
DW30DUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETSTRING
MOVAH,09
INT21H
CODEENDS
ENDSTART
5、实验结果
第一个程序运行结果:
第二个程序运行结果:
第三个程序运行结果:
第四个程序运行结果
6、实验中遇到的问题
在这次屏幕字符显示程序中实验中,遇到了程序运行出错的问题,还有运行结果与实际不符的问题,这些问题后来在老师和同学的帮助下得到了解决。
指导教师批阅成绩
指导教师签字:
年月日
实验报告五
实验名称
二进制数显示成十六进制数的屏幕字符显示程序
实验时间
20150424
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
综合性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1)8086/8088指令:
MOV,XLAT,LEA,JNE,CALL,RET,PUSH,POP,CMP,INT。
2)数据段的定义方法。
3)XLAT指令的使用方法。
4)子程序的嵌套调用及子程序参数传递的方法。
5)利用DOS功能调用INT21H的4CH号功能返回DOS的方法。
6)MASM、LINK、DEBUG、EMU8086等汇编、调试工具的使用方法。
2、实验预备知识
1)JG,SHR,MOV,OR,CMP,INC,LEA,INT等命令符的使用
2)了解怎么利用DOS功能调用INT21H的9号功能进行屏幕显示的方法
3、实验内容和步骤
1.利用INT2109H号功能字显示字符串。
1、字符串显示09H功能说明
功能:
在屏幕上显示在存储器内以“$”为结束符的字符串(“$”不显示)。
入口参数:
DS:
DX=串首址。
例4一个以“$”结束的字符串已存放在mess为首地址的内存缓冲区中,利用09号功能调用如下:
movah,9
movdx,segmess;ds:
dx=串地址
movds,dx
movdx,offsetmess
int21h
2、从mess开始处存放下列字符串的ASCII码:
‘Thisisasample!
$’
写程序把它显示出来。
3、把上面你写出的程序存为
4、在DOS命令下打AA,运行此程序,即在屏幕上显示'Thisisasample!
'字符串,若不出现,用DEBUG检查程序有无错误
2自己编写一个程序,要求把NUM单元存放的一个8位的二进制数,显示成十六进制数如NUM单元式‘01001011’要求能显示RESULT=48h
4、实验电路、程序清单
DATASEGMENT
NUMDB01001011B
BUFDB0DH,0AH,'RESUL='
STRDB4DUP(?
)
DATAENDS
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,NUM
LEADX,BUF
LEADI,STR
MOVCH,2
MOVAH,AL
MOVCL,4
SHRAL,CL
NEXT:
CMPAL,9
JNCNEXT1
ADDAL,30H
JMPNEXT2
NEXT1:
ADDAL,37H
NEXT2:
MOV[DI],AL
INCDI
MOVAL,AH
ANDAL,0FH
DECCH
JNZNEXT
MOV[DI],'H'
MOV[DI+1],'$'
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5、实验结果
6、实验中遇到的问题
在二进制数显示成十六进制数的屏幕字符试验中遇到了好多麻烦最终解决了
指导教师批阅成绩
指导教师签字:
年月日
实验六
实验名称
查表指令及子程序嵌套实验
实验时间
20150514
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
设计性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
通过实验掌握下列知识:
1、8086/8088指令:
MOV,XLAT,LEA,JNE,CALL,RET,PUSH,POP,CMP,INT。
2、数据段的定义方法。
3、XLAT指令的使用方法。
4、子程序的嵌套调用及子程序参数传递的方法。
5、利用DOS功能调用INT21H的4CH号功能返回DOS的方法。
6、MASM、LINK、DEBUG、EMU8086等汇编、调试工具的使用方法。
2、实验预备知识
计算机,EMU8086软件使用。
3、实验内容和步骤
1、打开emu8086软件,并且新建立一个文件。
2、开始调试第一个程序
调试出错的地方有5处,并且修改
ENGLISH应该与前面的ENGLIST对照
此处XTAL后面的TAB应该去掉
此处的DEL应该为DEC
此处的数字78后面的句号应该改为逗号
第二个实验:
此处的RESNLT应该与前面的RESULT对照
此处的MOV应该改为MUL
4、实验电路、程序清单
1、已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。
编写程序如下:
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
DATASEGMENT
TABDB80,85,86,71,79,96
DB83,56,32,66,78。
84
NODB10
ENGLISTDB?
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
BEGIN:
MOVAX,DATA
MOVDS,AX
LEABX,TAB
MOVAL,NO
DELAL
XLATTAB
MOVENGLISH,AL
MOVAH,4CH
INT21H
CODEENDS
ENDBEGIN
2、计算5!
的程序示例,RESULT是保存阶乘的存储单元。
程序如下:
STACKSEGMENTSTACK
DB200DUP(0)
STACKENDS
DATASEGMENT
NDW5
RESULTDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,N
CALLFACT
MOVAX,RESULT
MOVAH,4CH
INT21H
FACTPROC
CMPAX,0
JNEL1
MOVRESULT,1
JMPEXIT
L1:
PUSHAX
DECAX
CALLFACT
POPAX
MOVRESULT
MOVRESNLT,AX
EXIT:
RET
FACTENDP
CODEENDS
ENDSTART
二、读一读以下程序,看一看运行结果。
(选作)
DATASEGMENT
ATRIDB6EH,52H,94H,52H,6EH
DATAENDS
STACKSEGMENTPARASTACK'STACK'
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
ST:
MOVAX,DATA
MOVDS,AX
MOVAH,0;设置80×25彩色文本方式
MOVAL,3
INT10H
LEASI,ATRI;属性字节值表首址存SI
MOVDI,5;显示5个字符
MOVDX,0A13H;显示位置
MOVAH,15;取当前页号
INT10H
LP:
MOVAH,2;置光标位置
INCDL
INT10H
MOVAL,5;显示梅花形字符
MOVBL,[SI]
MOVCX,1
MOVAH,9
INT10H
INCSI;指向下一属性字节
DECDI;判显示完否
JNZLP;未完转LP再显示
MOVAH,4CH;完,返回DOS
INT21H
CODEENDS
ENDST
5、实验结果
最终运行阶乘的结果为120
6、实验中遇到的问题
在老师和同学的帮助下解决了问题。
在本次的8255接口电路实验的时候,和上次一样,也是遇到了电路图再编译的时候老是出错,程序写不进去等问题
指导教师批阅成绩
指导教师签字:
年月日
实验报告七
实验名称
8255接口电路实验
实验时间
2015.05.22
学生学号
1334140157
学生姓名
刘欢
同组人员
专业班级
通信1301B
实验类型
设计性
指导老师
禹定臣
实验地点
1号楼614
学时
2
1、实验目的
1、进一步了解8255A芯片的结构及编程方法。
2、掌握通过8255A并行口读取开关数据的方法。
2、实验预备知识
计算机,protues软件使用,8255A芯片的结构和编程方法。
3、实验内容和步骤
1打开protues软件,并且新建立一个设计,并保存设计。
2通过库查找,把元件清单,拉入到工作面板内。
对应原理图,器件连线
4、实验电路、程序清单
实验电路:
程序清单
DATASEGMENT
AEQU0FF40H
BEQU0FF42H
CEQU0FF44H
KEQU0FF46H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVAL,82H;8255初始化,A口方式0输出,B口方式0输入
MOVDX,K
OUTDX,AL
LOP:
MOVDX,B;读取B口值
INAL,DX
;calldelay;延时
MOVDX,A;送A口输出
OUTDX,AL
JMPLOP
CODEENDS
7、实验结果
当3、5、6、7、8开关闭合时,对应的灯亮。
开关全部闭合时:
8、实验中遇到的问题
总结一下,画图和连线的时候,需要谨慎,有时候以为连上了,其实没有,最后排查也会很
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)