微机原理与接口技实验报告.docx

上传人:b****3 文档编号:5495964 上传时间:2022-12-17 格式:DOCX 页数:45 大小:1.18MB
下载 相关 举报
微机原理与接口技实验报告.docx_第1页
第1页 / 共45页
微机原理与接口技实验报告.docx_第2页
第2页 / 共45页
微机原理与接口技实验报告.docx_第3页
第3页 / 共45页
微机原理与接口技实验报告.docx_第4页
第4页 / 共45页
微机原理与接口技实验报告.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

微机原理与接口技实验报告.docx

《微机原理与接口技实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技实验报告.docx(45页珍藏版)》请在冰豆网上搜索。

微机原理与接口技实验报告.docx

微机原理与接口技实验报告

 

微机原理与接口技术实验报告

 

学院:

核技术与自动化工程学院

专业:

电气工程及其自动化

班级:

XXXXXX

学号:

XXXXX

姓名:

XXX

指导老师:

XXX

完成时间:

2012、11、14

实验一EMU8086软件的使用

1、实验目的

1、了解EMU8086软件的基本使用步骤和各个工作区的功能,在能力方面主要是学以致用,将理论知识运用于实际的设计,从设计的完整和缺陷中找到新的突破口,以便温故而知新,从而提升自己的实际操作技能,能够通过自我想象与思考做出很多有价值的设计。

2、在系统的学习了微机原理与接口技术后,主要针对8086,利用emu8086软件设计一些程序,熟悉了解此款软件的运行过程中各个步骤寄存器内容及地址的变化。

3、在理论方面,基础软件实验部分共有六个实验组成,通过对这些实验程序的编写、调试,使学生熟悉8086/8088的指令系统等,了解程序设计过程,掌握汇编程序设计方法以及如何使用实验系统提供的各种调试、分析手段来排除程序错误。

2、实验仪器及设备

PC设备、EMU8086软件平台、EMU8086软件仿真平台

3、实验内容

双击EMU8086图标,打开程序。

此时会弹出welcome窗口,见图1.1所示,可将该窗口关闭直接进入编辑状态;也可点击它的new按钮,则会弹出代码模板选择框供用户选择(可选择EXE模板),见图1.2所示,一般点击Cancel按钮,直接进入编辑状态。

在编辑窗口,可直接将源程序输入,见图1.3所示。

图1.1welcome窗口

图1.2模板选择

图1.3编辑窗口输入源程序

点击compile(编译)按钮则进行汇编和链接,生成.EXE文件,并提示存盘。

点击emulate(仿真)按钮则可进入8086仿真器界面,见图1.4所示。

界面中提供了寄存器窗口、内存单元窗口及反汇编窗口,下方一行按钮则提供了虚拟屏幕、源代码观察、复位、辅助工具、变量、DEBUG、堆栈及FLAGS(标志寄存器)观察等功能。

用户可点击run连续运行程序,也可点击singlestep对程序进行单步调试。

图1.5为HELLO.EXE的运行结果,用户通过虚拟屏幕观察,非常形象生动。

O

图1.48086仿真器界面

图1.5HELLO.EXE的运行结果

EMU8086提供了断点设置功能,见图1.6所示,先用鼠标选中要设置为断点的指令,然后点击菜单debug——setbreakpoint,即可设置断点。

若要清除断点,则点击菜单debug——clearbreakpoint。

图1.6断点设置

EMU8086也支持DEBUG调试程序,仿真器界面下方的一行按钮中有debug按钮,点击打开后可输入DEBUG命令进行调试。

见图1.7所示。

图1.7EMU8086提供的DEBUG

4、实验总结

通过学习emu8086软件的使用,从编译程序到程序的仿真,EMU8086是学习Intel8086微处理器的理想工具,它模拟真实微处理器的每一步骤,并显示内部寄存器、存储器、堆栈、变量和标志寄存器,而且其中任何一个数值都可通过鼠标双击来改变。

实验二8086指令观察

一、实验目的和要求

1.掌握汇编语言程序编辑、汇编、链接和调试的基本概念。

2.掌握在PC机上建立、汇编、链接和运行8088汇编语言程序的过程。

3.通过观察深入掌握数据传送类、算术运算类和逻辑运算类等各类指令的功能。

二、实验任务

编辑汇编程序,并汇编、链接和调试程序,验证结果。

三、实验设备和软件

PC机、EMU8086

四、实验内容

1.寻找最大最小数程序实验

设内存缓冲区从BUF单元开始,存放若干个单字节数,其数据长度在BUF单元,要求找出最大数送MAX单元,最小数送MIN单元。

2.实验源程序如下

2.代码转换实验

从键盘输入2个十进制数组合成压缩BCD码存入DL,再将压缩BCD码转换成ASCII码送CRT显示。

实验程序如下:

实验结果

输入78

 

实验三顺序结构程序设计

一、实验目的和要求

1.熟悉星研集成环境软件的使用方法。

熟悉Borland公司的TASM编译器;

2.熟悉8086汇编指令,能自己编写简单的程序,并调试运行验证结果。

二、实验任务

学习使用EMU8086集成环境软件,验证及编写调试实验内容的程序。

三、实验设备和软件

PC机、EMU8086

四、实验内容

1.编写简单程序,用数据运算指令,对两个16位数做加法运算。

这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。

实验框图:

实验程序如下:

codesegment

start:

;setsegmentregisters:

MOVAX,0000H

MOVDS,AX

;addyourcodehere

MOVSI,50H

MOVDI,52H

MOVBX,54H

CLC

XORAX,AX

MOVAX,[SI]

ADCAX,[DI]

MOV[BX],AX

HLT

ends

endstart;setentrypointandstoptheassembler.

实验结果

2.编写简单程序,实现组合BCD码转换成ASCII码送CRT显示。

实验程序如下:

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

MOVAL,27H

MOVDL,AL

MOVCL,4

SHRDL,CL

ORDL,30H

pushax

MOVAH,2

INT21H

popax

MOVDL,AL

ANDDL,0FH

ORDL,30H

MOVAH,2

INT21H

movdl,0dh;回车换行

MOVAH,02H

INT21H

movdl,0ah

MOVAH,02H

INT21H

leadx,pkey

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

3、试用已学过的指令编程,运算以下算式:

;⑴、5555H+6666H+8756H

;⑵、5678+(-1234)-4321

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

a1dw5555h,6666h,8756h,0,0

b1dw5678,-1234,4321,0

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

clc;5555H+6666H+8756H

movax,a1

adcax,a1+2

adcax,a1+4

mova1+6,ax

jcSAVECF

jmpNEXT

SAVECF:

mova1+8,1

NEXT:

clc;5678+(-1234)-4321

movbx,b1

adcbx,b1+2

subbx,b1+4

movb1+6,bx

leadx,pkey

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

4、已知BX=12ABH,试编程将其内容转换成ASCII码送到

;数据段0100H单元开始存放

datasegment

;addyourdatahere!

pkeydb"pressAnykey...$"

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

movsi,0100h

movbx,12ABh

movcl,12

movax,bx

shrax,cl

oral,30h

mov[si],al

incsi

movcl,8

movax,bx

shrax,cl

andal,0fh

oral,30h

mov[si],al

incsi

movcl,4

movax,bx

shrax,cl

andal,0fh

clc

subal,10

addal,41h

mov[si],al

incsi

movax,bx

andal,0fh

clc

subal,10

addal,41h

mov[si],al

incsi

mov[si],'$'

movdx,0100h

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

实验四分支结构程序设计

一、实验目的和要求

1.学习分支结构程序的设计和调试方法;

2.熟悉8086汇编指令中的程序控制指令的应用。

二、实验任务

学习使用EMU8086集成环境软件,验证及编写、调试实验内容。

三、实验设备和软件

PC机、EMU8086

四、实验内容

1.已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。

题目分析:

根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。

8086/8088指令系统中有专门的求相反数的指令NEG。

实验框图:

实验程序如下:

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

XDB-25

RESULTDB?

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

MOVAL,X;X取到AL中

TESTAL,80H;测试AL正负

JZNEXT;为正,转NEXT

NEGAL;否则AL求补

NEXT:

MOVRESULT,AL;送结果

leadx,pkey

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

2.编写计算下面函数值的程序:

1X>0

Y=0X=0

-1X<0

设输入数据为X、输出数据Y,且皆为字节变量。

实验程序如下:

datasegment

;addyourdatahere!

Msg0db0Dh,0Ah,0Dh,0Ah,"pleaseinputdataXbetween-128and127...",0Dh,0Ah,0Dh,0Ah,"X=12",'$'

Msg1db0Dh,0Ah,0Dh,0Ah,"X>Y,Y=1$"

Msg2db0Dh,0Ah,0Dh,0Ah,"X=Y,Y=0$"

Msg3db0Dh,0Ah,0Dh,0Ah,"X

Msg4db0Dh,0Ah,0Dh,0Ah,"pressYtocontinue,otherwisestop...",0Dh,0Ah,0Dh,0Ah,'$'

Msg5db0Dh,0Ah,0Dh,0Ah,"pressanykeytoreturn...$"

Msg6db0Dh,0Ah,0Dh,0Ah,"inputdataerror...$"

StXdb"000$"

Xdw0

Ydb0

SFdb0

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

loop0:

;addyourcodehere

leadx,Msg0

movah,9

int21h

movah,1;符号位判断

int21h

cmpal,'-'

jzSIGN

movStX,al;正数处理,firstnumber

movah,1;secondnumber

int21h

movStX+1,al

movah,1;thirdnumber

int21h

movStX+2,al

jmpNEXT0

SIGN:

movSF,1;是负数,标志位sf=1;负数处理

movah,1;firstnumber

int21h

movStX,al

movah,1;secondnumber

int21h

movStX+1,al

movah,1;thirdnumber

int21h

movStX+2,al

NEXT0:

clc;getinputdata'sdecimal,saveinX

xorax,ax

moval,StX;inputdata,baiwei

subal,30h

movbl,100

mulbl

movX,ax

xorax,ax

moval,StX+1;inputdata,shiwei

subal,30h

movbl,10

mulbl

adcX,ax

xorax,ax

moval,StX+2;inputdata,gewei

subal,30h

adcX,ax

cmpX,-128

jlDATAERROR

cmpX,127

jgDATAERROR

jmpNEXT1

DATAERROR:

leadx,Msg6

movah,9

int21h

jmploop0

NEXT1:

cmpSF,1;是负数,求补码

jzNEGX

jmpNEXT2

NEGX:

negX

NEXT2:

cmpX,0;判断X的值,决定Y的值

jzZERO

jgGREAT

movY,0ffh;x<0,Y=-1

leadx,Msg3

movah,9

int21h

jmpEND0

GREAT:

movY,1;x>0,Y=1

leadx,Msg1

movah,9

int21h

jmpEND0

ZERO:

movY,0;x=0,Y=0

leadx,Msg2

movah,9

int21h

END0:

leadx,Msg4

movah,9

int21h

movah,1;waitforanykey

int21h

cmpal,'Y'

jzloop0

leadx,Msg5

movah,9

int21h

movah,1;waitforanykey

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

输入12

3.试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。

设三个带符号数分别在三个字变量X、Y、Z中存储。

实验程序如下:

;multi-segmentexecutablefiletemplate.

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

Xdw-7856

Ydw-1234

Zdw0

MAXdw?

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

movax,X

movMAX,ax

cmpax,Y

jlSAVEMAX1

jmpNEXT1

SAVEMAX1:

movax,Y

movMAX,ax

NEXT1:

cmpax,Z

jlSAVEMAX2

jmpNEXT2

SAVEMAX2:

movax,Z

movMAX,ax

NEXT2:

leadx,pkey

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

实验五循环结构程序设计

一、实验目的和要求

1.学习、掌握循环结构程序的设计和调试方法;

2.熟悉8086汇编指令中的程序控制指令和LOOP指令的应用。

二、实验任务

学习使用EMU8086集成环境软件,验证及编写、调试实验内容。

三、实验设备和软件

PC机、EMU8086

四、实验内容

1.编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。

统计被累加的自然数的个数送CN单元,累加和送SUM。

流程图如下图所示。

实验框图:

实验程序如下:

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

SUMdw?

CNdw?

ends

stacksegment

dw128dup(0)

ends

codesegment

start:

;setsegmentregisters:

movax,data

movds,ax

moves,ax

;addyourcodehere

;movCX,100

MOVAX,0;0送AX

MOVBX,0

LP:

INCBX;BX加1

ADDAX,BX;求累加和

CMPBX,100;比较

JBLP;<100转

;loopLP

MOVSUM,AX

MOVCN,BX;送结果

leadx,pkey

movah,9

int21h;outputstringatds:

dx

;waitforanykey....

movah,1

int21h

movax,4c00h;exittooperatingsystem.

int21h

ends

endstart;setentrypointandstoptheassembler.

实验结果

2、已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。

显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。

实验程序如下:

;multi-segmentexecutablefiletemplate.

datasegment

;addyourdatahere!

pkeydb"pressanykey...$"

BUFdb12,3,-1,0,-4,55,32,89,5,-22

BEQU$-BUF

CNdb0

ends

stacksegment

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1