微机原理与接口技术实验指导书.docx

上传人:b****6 文档编号:7128251 上传时间:2023-01-21 格式:DOCX 页数:65 大小:477.81KB
下载 相关 举报
微机原理与接口技术实验指导书.docx_第1页
第1页 / 共65页
微机原理与接口技术实验指导书.docx_第2页
第2页 / 共65页
微机原理与接口技术实验指导书.docx_第3页
第3页 / 共65页
微机原理与接口技术实验指导书.docx_第4页
第4页 / 共65页
微机原理与接口技术实验指导书.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术实验指导书.docx

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

微机原理与接口技术实验指导书.docx

微机原理与接口技术实验指导书

微机原理与接口技术

实验指导书

 

武汉理工大学华夏学院教务处

二零零九年九月

 

目录

实验一系统认识实验..........................................................................3

实验二DEBUG调试实验....................................................................8

实验三运算类编程实验....................................................................16

实验四指令系统................................................................................23

实验五分支程序设计........................................................................26

实验六循环程序设计........................................................................28

实验七中断特性及8259应用编程实验...........................................31

实验八8255并行接口应用实验........................................................44

实验九8253定时/计数器应用实验..................................................50

实验十8251串行接口应用实验........................................................60

 

实验一系统认识实验

1.1汇编语言程序上机应具备的工具软件

汇编语言程序上机操作,必须经过文件的“建立—汇编—连接—执行”四个阶段。

因此,系统磁盘上还应具备下列工具软件:

1.全屏幕编辑程序。

用以将程序键入内存,经编辑生成源文件(.ASM)存盘。

常用的编辑程序有EDIL.EXE,SK.EXE,Word97。

2.宏汇编程序,如MS的MASM.EXE,用以将源文件(.ASM)汇编生成二进制代码的目标文件(.OBJ)、列表文件(.LST)、及符号交叉引用表文件(.CRF)。

3.连接程序LINK.EXE。

用以将目标问价(.OBJ)与欲使用的库文件(.LIB)及其他目标模块,连接装配生成一个可执行文件(.EXE)、及各段空间分配的列表文件(.MAP)。

4.调试程序DEBUG.COM。

用以对.EXE或.COM文件进行调试,排错。

值得指出的是,人工输入的现成程序,或自编程序,难免不出现键入错误,疏漏错误,语法错误及逻辑错误。

虽然在静态自查及汇编阶段均可被查出,

但程序内在的逻辑功能性错误,还必须借助调试工具,在检测环境下动态运行程序时才能表露出来。

因此程序调试这一环必不可少。

1.2汇编语言程序上机过程

先用如下流程图简明表述汇编语言程序上机操作的四个阶段。

注意第2章起的所有实验程序均按此流程进行操作。

图中用的是EDIT编辑程序。

附录2给出了汇编出错信息,供排错时参考。

1.3汇编语言程序上机过程实例

一、假定要在显示器显示如下一行信息:

Iamastudent!

其汇编程序的过程如下:

STACKSEGMENTSTACK

DB200DUP(0)

STACKENDS

DATASEGMENT

BUFDB’Iamastudent!

$’

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

STAPT:

MOVAX,DATA

MOVDS,AX

LEADX,BUF

MOV-AH,9

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSSTART

二、实验步骤

汇编程序上机操作步骤

(一)建立源程序EDIT1、开始→程序→附件→命令提示符(出现命令提示符界面)2、键入EDIT↙(出现命令提示符—edit界面,输入源程序)注:

按Alt+Enter键进行窗口切换(放大、还原)

按Alt+F激活File(文件)菜单。

选择SeveAs(另存为)命令,出现SeveAs界面

在对话框中用“Tab”键移动光标,点击“OK”

4、再按Alt+F激活File(文件)菜单。

选择Exit推出出现命令提示符界面,C:

\…>E:

\MASM1\MASM文件名↙

文件夹汇编命令源程序名或

(1)C:

\…>E:

↙(切换到E:

盘)

(2)E:

>CDMASM↙(进入子目录MASM)(3)E:

\MASM>MASM文件名↙汇编后生成目标程序,以.OBJ为后缀

(三)连接LINKE:

\MASM>Link文件名↙连接后生成可执行程序,以.exe为后缀(四)执行程序E:

\MASM>文件名↙(五)在汇编和后若提示有错误,再次进入编辑1、E:

\MASM>EDIT↙(出现命令提示符—edit界面)2、按Alt+F激活File(文件)菜单选择Open命令移动←↑→↓键选中待编辑的文件,修改完后再存盘。

运行结果如下:

Iamsutdent!

 

实验二Debug调试实验

2.1DEBUG使用方法

一、实验目的

1.熟悉DEBUG提供的调试环境。

2.学习使用Debug的常用命令,汇编、运行小段程序。

3.学习8088/8086的寻址方式、指令功能。

观察计算机执行简单程序的工作过程。

二、实验内容与操作指导

Debug子命令的功能与使用格式见上章的列表介绍。

下面通过8个程序小段实例,学习其用法。

(一)由DOS进入DEBUG调试环境

1.点击“开始”→程序→附件→命令提示符→DEBUG将调试程序装入内存

注意:

当机器控制权由DOS成功转移给调试程序后,将显示“—”号,它是debug的状态提示符,表示可以接受调试命令了。

2.—R(回车键)显示CPU中各寄存器当前初始内容。

请记录于下列各项,后面实验将用到。

AX=0000BX=0000CX=0000BP=0000SI=0000DI=0000

DS=B8CES=B8CSS=B8CSP=FFEECS=138CIP=0100

FLAG寄存器中的8各标志状态值(已填入,其含义见下页的介绍)是:

OF

DF

IF

SF

ZF

AF

PF

CF

NV

UP

EI

PL

NZ

NA

PO

NC

说明:

(1)此时,调试工作区的4各段值相同,指向同一起点。

表明共用一个64KB空间。

(2)SS:

SP指向堆栈顶单元。

SP为FFFE或FFEE,正好是本段的最高可用地址。

表明对栈自动使用最高地址,栈区由底往上(低址方向)生长。

(3)CS:

IP为约定的调试工作区地点(IP=0100),可由此装入待调试程序代码,或汇编键入的程序小段。

工作区由(低址)往下使用。

(4)Debug用符号给出寄存器中8个标志位的当前状态。

其含义如下表所示。

(5)当运行程序至断点处停下时,或单步多步跟踪执行指令时,Debug均显示各寄存器的当时内容,便于及时观察结果。

标志位含义

“1”的对应符号

“0”的对应符号

OF益处

OV有

NV无

DF方向

DN递减

UP递增

IF中断

EI允许

DI禁止

SF符号

NG负

PL正

ZF全零

ZR零

NZ非零

AF辅助进位

AC有

NA无

PF奇偶性

PE偶

PO奇

CF进位

CY有

NC无

(二)汇编运行小段程序

1.1求和运算

给程序1.1人工直接给寄存器赋初值

(1)给AX、BX赋值

—RAX

AX显示AX当前内容

FDAA键入被加数

—RBX

BX显示BX当前内容

FBCE键入加数

(2)汇编小段程序。

注意:

每行指令后用回车结束,机器即惊醒汇编,出错将有提示。

调试状态下操作的输入和显示均为HEX十六进制,故不必加后缀H。

—ACS:

100

0100ADDAX,BX;求和

0102MOVCX,AX;转存和数

0104INT20;结束程序(软中断调用)

:

0106

—R(回车键)查看各寄存器内容。

因程序尚未运行,故无运算结果。

(3)单步跟踪执行程序。

注意观看有关寄存器内容及各标志位值的变化。

—t(回车键)从当前地址(CS:

0100)处执行加法指令。

记录有关结果。

AX=BX=CX=IP=

OF

DF

IF

SF

ZF

AF

PF

CF

—t(回车键)在执行传送指令,记下有关结果

AX=BX=CX=IP=

OF

DF

IF

SF

ZF

AF

PF

CF

分析两部结果,解释内容变化或不变化的原因。

(4)结束程序,返回Debug

—G(回车键)执行软中指令INT20,机器将显示“程序正常终止”的信息。

并显示“—”,表明仍处在debug的调控控制状态下。

注意这里未用t命令,因为我们不想进入到20H中断处理程序中去。

程序1.2让机器通过指令给寄存器送立即数

(1)汇编小段程序

—ACS:

106(回车键)

0106MOVAX,1234;被加数

:

0109MOVBX,2345;加数

101CMOVCX,0;清0

101FADDAX,BX;求和

0111MOVCX,AX;转存结果

0113INT20;结束程序

0115;结束汇编

(2)运行程序。

注意:

必须先修改指令指针IP,使其指向本程序的首条指令。

然后才能执行程序。

当然也可以再t或G命令中指出程序起点地址。

—RIP(回车键)

IP0100显示当前值

0106(回车键)指向本程序入口

—R(回车键)显示各寄存器当前内容及首条指令

—T3(回车键)跟踪执行三条赋值传送指令,看有关寄存器及标志值

—T2(回车键)跟踪执行相加及送和数指令,看有关寄存器及标志值

—G(回车键)执行20H号中断,结束程序

程序1.3采用直接寻址方式从内存区读写数据

(1)汇编程序

—ACS:

116(回车键)

0116MOVAX,[0125]

0119MOVBX,[0127]

011DADDBX,AX

011FMOV[0129],BX

0123INT20

0125DW222

0127DW888

0129DW0;和单元

012B(回车键)

注意:

①由于当前DS=CS,故直接寻址从内存取存的数据,可与指令代码在一起。

②A命令能汇编处理DB及DW两条伪指令定义的变量数据,但不得用变量符号。

(2)设置断点(观察点)分段运行程序

—G=CS:

11611D(回车键);从指令入口运行程序,至断点11D停。

可见了;两个数已取至AX,BX,但还没有求和。

—G123(回车键);从上一断点运行至新断点停。

已完成求和并存入指定结果单元。

—G(回车键);结束程序

(3)用两种方式观看内存内容

—DCS:

11612B(回车键)显示本程序小段目标代码和数据单元内容

—UCS:

116124(回车键)反汇编指定范围的内存区内容

机器码

程序

0AF5:

0116A12501

OAF5:

01198B1W2701

OAF5:

011F01C3

OAF5:

011F891E2901

OAF5:

0123CD20

MOVAX,[0125]

MOVBX,[0127]

ADDBX,AX

MOV[0129],BX

INT20

2.求n*10的运算

程序1.4用一位指令实现乘法运算

(1)汇编小端茶程序

—ACS:

0130(回车键)

0130MOVAL,08;设n=08h

0132SHLAL;1;的AL=10h

0134MOVBL,AL

0136MOVCL,2

0138SHLAL,CL;得AL=40h

013AADDAL,BL;得AL=50h

013CINT20

013E(回车键)

(2)运行程序。

可用单步跟踪,多步跟踪,设断点或连续运行等方式来监控程序德执行。

程序1.5用乘法指令运算且显示结果

—ACS:

140(回车键)

0140MOVAL,06;设n=06h

1042MOVCL,0A

0144MULCL;06h*0Ah

0146MOVDL,AL

0148MOVAH,02;用2号功能调用显示结果

014AINT21

014CINT20

014E(回车键)

运行程序。

请注意观察结果数据如何求出及表示的。

还可更改n值,重新运行程序。

3.向指定内存区置数(程序1.6)

(1)汇编小段程序

—ACS:

150

0150MOVAX,1000;置数据段值

0153MOVDS,AX

0155MOVAL,42‘B’=42h

0157MOVSI,0;置偏移地址初值

015AMOV[SI],10;填写字符B

015CINCSI;指向下一单元

015DCMPSI,10;已填完吗?

0160JNZ015A;否,继续循环

0162INT20;是,结束程序

(2)运行程序。

注意:

这是循环程序。

由比较指令和条件转移指令控制循环。

到底循环了对少次呢?

请先用D命令观看待置数内存的原内容(—D1000:

02F)。

然后单步或多步执行程序,看程序循环填数的控制过程。

最后再用D命令看数据区内容,检查填数效果(—DDS:

02F为什么此处可用ds指定段值呢?

(3)用F命令向内存区填数

—FDS:

102F‘C’(回车键)用C字符填写1000:

10~2F内存区

—FDS:

30L20‘*’(回车键)用*字符填写1000:

30~4F内存区

—FDS:

50L10‘123456789ABCDEF’(回车键)填写字节串

—DDS:

0(回车键)观看数据区的内容(显示128个字节单元)

4.接受、显示从键盘输入的字符(遇空格符择推出)

(1)汇编小段程序(程序1.7)

—ACS:

170(回车键)

0170MOVAH,1;1号功能调用,等待键盘输入

0712INT21

0174CMPAL,20;是空格符吗?

0176JZ0180;是,推出循环

0178MOVDL,AL

017AMOVAH,2;2号功能调用,显示一个字符

017CINT21

017EJMP0170;继续循环

0180INT20;结束程序

0182(回车键)

(2)运行程序。

这也是条件控制的循环程序。

利用了连个功能调用。

可连续运行程序,观看循环控制过程,观看程序效果。

请问:

为什么屏幕显示的是双字符呢?

按回车键,有什么现象出现?

按其它键呢?

5.在屏幕上显示字符串信息

(1)汇编小段程序(程序1.8)

—ACS:

190

0190PUSHCS;使DS=CS

0191POPDS

0192MOVDX,19B;字符串入口地址

0195MOVAH,9;9号功能调用,显示字符串

0197INT21

0199INT20

019BDB‘WelcometousetheDEBUG!

$’

01B6(回车键)

(2)连续运行程序,观看显示效果。

你可以从19B处重新汇编,改变字符串内容,再运行程序。

(三)文件存取操作

1.文件存盘

大家或许注意到:

上列8个程序小段在内容上没有彼此覆盖。

目前,仍保存在CS:

100~1B5的调试工作区内。

我们可以吧这段代码作为一个文件(取名MYABC)写入磁盘保存起来。

其操作步骤是:

(1)文件长度送入BX:

CX。

这里要存盘的内存信息长度是1B5-100+1=B6请用R命令将0写入BX,将B6写入CX。

(2)定义文件名写入磁盘

—NA:

MAYABC定义文件标示符

—W将约定的工作区起点(CS:

100)至算出的终点(B6为长度)

2.装入磁盘文件

让我们先将调试工作区德起始256个单元清0.并检查清0效果,再将刚才盘上生成的实验程序文件,装入工作区,看它是否真的又回调到内存。

所用的命令串如下:

—FCS:

1001FF0(回车键);清0

—DCS:

1001FF(回车键);检查是否为0

—NA:

MYABC(回车键);定义待装入的文件标示符

—L(回车键);从工作区起点装入文件

—DCS:

1001FF;检查装入内容。

你还可按前面实验程序汇编的起始地址,用反汇编命令查看这几个程序小段。

(四)退出Debug返回DOS

—Q(回车键)返回DOS后,可用DIR命令查看文件MYABC的目录注册情况。

 

实验三运算类编程实验

一.实验目的

1.掌握使用运算类指令编程及调试方法。

2.掌握运算类指令对各状态标志位的影响及其测试方法。

二.实验设备

TDN86/51或TDN86/88教学实验系统一台

三.实验内容及步骤

8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1所示的数据类型进行算术运算。

数制

二进制

BCD码

带符号

无符号

组合

非组合

运算符

+、-、×、÷

+、-

+、-、×、÷

操作数

字节、字、多精度

字节(二位数字)

字节(一位数字)

表3-1数据类型算术运算表

1.二进制双精度加法运算

计算X+Y=Z,将结果Z存入某存储单元。

实验程序如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

XLDW?

;请在此处给X低位赋值

XHDW?

;请在此处给X高位赋值

YLDW?

;请在此处给Y低位赋值

YHDW?

;请在此处给Y高位赋值

ZLDW?

ZHDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,XL;X低位送AX

MODAX,YL;X低位加Y低位

MOVZL,AX;存低位和

MOV,AX,XH;X高位送AX

ADCAX,YH;X高位加Y高位

MOVZH,AX

Al:

JMPAl

CODEENDS

ENDSTART

本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。

由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加下CF中的1。

实验步骤

(1)输入程序并检查无误,经汇编、连接后装入系统。

(2)用U0000:

2000查看MOVAX,XXXX(DATA)语句,即得到数据段地址CS:

XXXX用E命令EXXXX:

0000↙给XL,XH,YL,YH赋值存入二进制数A0651500和9EB72100。

(3)运算以上程序。

(4)显示计算结果:

3E1D3700CC…。

(5)反复试几组数,考察程序的正确性。

2.十进制数的BCD码减法运算

计算X-Y=Z,其中,X、Y、Z为BCD码。

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

XDW?

;请在此处给X赋值

YDW?

;请在此处给Y赋值

ZDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,OOH

SAHF

MOVCX,OOO2H

MOVSI,OFFSETX

MOVDI,OFFSETZ

Al:

MOVAL,[SI]

SBBAL,[SI+O2H]

DAS

PUSHF

ANDAL,OFH

POPF

MOV[DI],Al

INCDI

INCSI

LOOPAl

A2:

JMPA2

CODEENDS

ENDSTART

实验步骤:

(1)输入实验程序并检查无误,经汇编、连接后装入系统。

(3)运行以上程序。

(4)显示计算结果:

0802CC…。

(5)反复试几组数,考察程序的正确性。

3.乘法运算

本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,乘积在屏幕上显示,实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

DATA1DB5DUP(?

);乘数,

DATA2DB?

;被乘数

RESULTDB6DUP(?

);乘积

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

CALLINIT

MOVSI,OFFSETDATA2

MOVBL,[SI]

ANDBL,OFH

CMPBL,09H

JNCERROR

MOVSI,OFFSETDATAl

MOVDI,OFFSETRESULT

MOVCX,0005H

A1:

MOVAL,[SI+04H]

ANDAL,0FH

CMPAL,09H

JNCERROR

DECSI

MULBL

AAM

ADDAL,[DI+05H]

AAA

MOV[DI+05H],AL

DECDI

MOV[DI+05H],AH

MOVCX,06H

MOVSI,OFFSETRESULT

DISPLAY:

MOVAH,01H

MOVAL,[SI]

ADDAL,30H

INT10H

INCSI

LOOPDISPLAY

A2:

JMP

INIT:

MOVSI,OFFSETRESULT

MOVCX,0003H

MOV,AX,0000H

A3:

MOV[SI],AX

INCSI

INCSI

LOOPA3

RET

ERROR:

MOVA

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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