x微机原理实验指导书.docx

上传人:b****6 文档编号:13119238 上传时间:2023-06-11 格式:DOCX 页数:93 大小:785.99KB
下载 相关 举报
x微机原理实验指导书.docx_第1页
第1页 / 共93页
x微机原理实验指导书.docx_第2页
第2页 / 共93页
x微机原理实验指导书.docx_第3页
第3页 / 共93页
x微机原理实验指导书.docx_第4页
第4页 / 共93页
x微机原理实验指导书.docx_第5页
第5页 / 共93页
x微机原理实验指导书.docx_第6页
第6页 / 共93页
x微机原理实验指导书.docx_第7页
第7页 / 共93页
x微机原理实验指导书.docx_第8页
第8页 / 共93页
x微机原理实验指导书.docx_第9页
第9页 / 共93页
x微机原理实验指导书.docx_第10页
第10页 / 共93页
x微机原理实验指导书.docx_第11页
第11页 / 共93页
x微机原理实验指导书.docx_第12页
第12页 / 共93页
x微机原理实验指导书.docx_第13页
第13页 / 共93页
x微机原理实验指导书.docx_第14页
第14页 / 共93页
x微机原理实验指导书.docx_第15页
第15页 / 共93页
x微机原理实验指导书.docx_第16页
第16页 / 共93页
x微机原理实验指导书.docx_第17页
第17页 / 共93页
x微机原理实验指导书.docx_第18页
第18页 / 共93页
x微机原理实验指导书.docx_第19页
第19页 / 共93页
x微机原理实验指导书.docx_第20页
第20页 / 共93页
亲,该文档总共93页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

x微机原理实验指导书.docx

《x微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《x微机原理实验指导书.docx(93页珍藏版)》请在冰点文库上搜索。

x微机原理实验指导书.docx

x微机原理实验指导书

80x86微机原理与接口技术

实验指导书

 

长安大学信息学院电子通信实验室

 

第1章80X86微机原理及其程序设计实验

本章主要介绍汇编语言程序设计,通过实验来学习80X86的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。

1.1系统认识实验

1.1.1实验目的

掌握TD-PITE80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

1.1.2实验设备

PC机一台,TD-PITE实验装置一套。

1.1.3实验内容

编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

1.1.4实验步骤

1.运行Wmd86软件,进入Wmd86集成开发环境。

2.根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里,我们选择汇编语言。

图1-1-1语言环境选择界面

3.语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图1-1-2所示。

默认文件名为Wmd861。

图1-1-2新建文件界面

4.编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

图1-1-3程序编辑界面

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

SSTACK

START:

PUSHDS

XORAX,AX

MOVDS,AX

MOVSI,3000H

MOVCX,16

AA1:

MOV[SI],AL

INCSI

INCAL

LOOPAA1

AA2:

JMPAA2

CODEENDS

ENDSTART

5.点击

,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击

进行链接,链接无误输出如图1-1-5所示的输出信息。

图1-1-4编译输出信息界面图1-1-5链接输出信息界面

6.连接PC与实验系统的通讯电缆,打开实验系统电源。

7.编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。

可以通过端口列表中的“端口测试”来检查通讯是否正常。

点击

下载程序。

为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。

下载成功后,在输出区的结果窗中会显示“加载成功!

”,表示程序已正确下载。

起始运行语句下会有一条绿色的背景。

如图1-1-6所示。

图1-1-6加载成功输出显示界面

8.将输出区切换到调试窗口,使用D0000:

3000命令查看内存3000H起始地址的数据,如图1-1-7所示。

存储器在初始状态时,默认数据为CC。

图1-1-7内存地址单元数据显示

9.点击按钮

运行程序,然后再点击

来停止程序运行,接下来观察程序运行结果,仍使用命令D0000:

3000来观察数据变化。

如图1-1-8所示。

图1-1-8运行程序后数据变化显示

10.也可以通过

在语句AA2:

JMPAA2处设置断点,断点显示如图1-1-9所示,然后运行程序,当遇到断点时程序会停下来,然后观察数据。

可以使用E0000:

3000来改变该地址单元的数据,如图1-1-10所示,输入11后,按“空格”键,可以接着输入第二个数,如22,结束输入按“回车”键。

图1-1-9断点设置显示图1-1-10修改内存单元数据显示界面

实验例程文件名为Wmd861.asm。

1.1.5操作练习

编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。

通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

SSTACK

START:

PUSHDS

XORAX,AX

MOVDS,AX

MOVSI,3500H

MOVDI,3600H

MOVCX,8

AA1:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPAA1

AA2:

JMPAA2

CODEENDS

ENDSTART

 

1.2数制转换实验

1.2.1实验目的

1.掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;

2.熟悉程序调试的方法。

1.2.2实验设备

PC机一台,TD-PITE实验装置一套。

1.2.3实验内容及步骤

计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。

因此,在应用软件中,各类数制的转换是必不可少的。

计算机与外设间的数制转换关系如图1-2-1所示,数制对应关系如表1-2-1所示

图1-2-1数制转换关系

表1-2-1数制对应关系表

 

续表1-2-1

1.将ASCII码表示的十进制数转换为二进制数

十进制表示为:

(1)

Di代表十进制数0,1,2,…,9;

上式转换为:

(2)

由式

(2)可归纳十进制数转换为二进制数的方法:

从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。

程序流程图如图1-2-2所示。

实验参考程序如下。

实验程序清单(例程文件名:

A2-1.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

DATASEGMENT

SADDDB30H,30H,32H,35H,36H;十进制数:

00256

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,OFFSETSADD

MOVSI,AX

MOVBX,000AH

MOVCX,0004H

MOVAH,00H

MOVAL,[SI]

SUBAL,30H

A1:

IMULBX

MOVDX,[SI+01]

ANDDX,00FFH

ADCAX,DX

SUBAL,30H

INCSI

LOOPA1

A2:

JMPA2

CODEENDS

ENDSTART

图1-2-2转换程序流程图

实验步骤

(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;

(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;

(3)运行程序,然后停止程序;

(4)查看AX寄存器,即为转换结果,应为:

0100;

(5)反复试几组数据,验证程序的正确性。

2.将十进制数的ASCII码转换为BCD码

从键盘输入五位十进制数的ASCII码,存放于3500H起始的内存单元中,将其转换为BCD码后,再按位分别存入350AH起始的内存单元内。

若输入的不是十进制的ASCII码,则对应存放结果的单元内容为“FF”。

由表1-2-1可知,一字节ASCII码取其低四位即变为BCD码。

实验程序清单(例程文件名:

A2-2.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0005H;转换位数

MOVDI,3500H;ASCII码首地址

A1:

MOVBL,0FFH;将错误标志存入BL

MOVAL,[DI]

CMPAL,3AH

JNBA2;不低于3AH则转A2

SUBAL,30H

JBA2;低于30H则转A2

MOVBL,AL

A2:

MOVAL,BL;结果或错误标志送入AL

MOV[DI+0AH],AL;结果存入目标地址

INCDI

LOOPA1

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

(1)自己绘制程序流程图,然后编写程序,编译、链接无误后装入系统;

(2)在3500H~3504H单元中存放五位十进制数的ASCII码,即:

键入E3500后,输入31,32,33,34,35;

(3)运行程序,然后停止程序运行;

(4)键入D350A,显示运行结果,应为:

0000:

350A0102030405CC…

(5)反复测试几组数据,验证程序功能。

3.将十六位二进制数转换为ASCII码表示的十进制数

十六位二进制数的值域为0~65535,最大可转换为五位十进制数。

五位十进制数可表示为:

N=D4⨯104+D3⨯103+D2⨯102+D1⨯10+D0

Di:

表示十进制数0~9

将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。

自行绘制程序流程图,编写程序可参考例程。

例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。

实验程序清单(例程文件名:

A2-3.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVSI,3500H;源数据地址

MOVDX,[SI]

MOVSI,3515H;目标数据地址

A1:

DECSI

MOVAX,DX

MOVDX,0000H

MOVCX,000AH;除数10

DIVCX;得商送AX,得余数送DX

XCHGAX,DX

ADDAL,30H;得Di的ASCII码

MOV[SI],AL;存入目标地址

CMPDX,0000H

JNEA1;判断转换结束否,未结束则转A1

A2:

CMPSI,3510H;与目标地址得首地址比较

JZA3;等于首地址则转A3,否则将剩余地址中填30H

DECSI

MOVAL,30H

MOV[SI],AL

JMPA2

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

(1)编写程序,经编译、链接无误后,装入系统;

(2)在3500H、3501H中存入0C00;

(3)运行程序,然后停止运行;

(4)检查运行结果,键入D3510,结果应为:

3030303132;

(5)可反复测试几组数据,验证程序的正确性。

4.十六进制数转换为ASCII码

由表1-2-1中十六进制数与ASCII码的对应关系可知:

将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。

将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。

自行绘制流程图。

实验程序清单(例程文件名为A2-4.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0004H

MOVDI,3500H;十六进制数源地址

MOVDX,[DI]

A1:

MOVAX,DX

ANDAX,000FH;取低4位

CMPAL,0AH

JBA2;小于0AH则转A2

ADDAL,07H;在A~FH之间,需多加上7H

A2:

ADDAL,30H;转换为相应ASCII码

MOV[DI+0DH],AL;结果存入目标地址

DECDI

PUSHCX

MOVCL,04H

SHRDX,CL;将十六进制数右移4位

POPCX

LOOPA1

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

(1)编写程序,经编译、链接无误后装入系统;

(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B20;

(3)先运行程序,然后再停止运行;

(4)键入D350A,显示结果为:

0000:

350A32303342CC…;

(5)反复输入几组数据,验证程序功能。

5.BCD码转换为二进制数

将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,自行绘制流程图并编写程序。

实验程序清单(例程文件名为:

A2-5.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

XORAX,AX

MOVCX,0004H

MOVSI,3500H

MOVDI,3510H

A1:

MOVAL,[SI]

ADDAL,AL

MOVBL,AL

ADDAL,AL

ADDAL,AL

ADDAL,BL

INCSI

ADDAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPA1

A2:

JMPA2

CODEENDS

ENDSTART

实验步骤

(1)编写程序,经编译、链接无误后装入系统;

(2)将四个二位十进制数的BCD码存入3500H~3507H中,即:

先键入E3500,然后输入0102030405060708;

(3)先运行程序,然后停止运行;

(4)键入D3510显示转换结果,应为:

0C22384E;

(5)反复输入几组数据,验证程序功能。

1.2.4思考题

1.实验内容1中将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?

为什么?

2.将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?

3.在十六进制转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?

4.自编ASCII码转换十六进制、十六进制小数转换二进制、二进制转换BCD码的程序,并调试运行。

 

1.4循环程序设计实验

1.4.1实验目的

1.加深对循环结构的理解;

2.掌握循环结构程序设计的方法以及调试方法。

1.4.2实验设备

PC机一台,TD-PITE实验装置一套。

1.4.3实验内容及步骤

1.计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。

编写实验程序,计算上式的结果,参考流程图如图1-5-1所示。

实验程序清单(例程文件名为:

A5-1.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0001H

MOVBL,02H

A1:

MOVAL,BL

INCBL

MULBL

ADDDX,AX;结果存于DX中

CMPAX,00C8H;判断N(N+1)与200的大小

JNAA1

A2:

JMPA2

CODEENDS

ENDSTART

图1-4-1程序流程图

实验步骤

(1)编写实验程序,编译、链接无误后装入系统;

(2)运行程序,然后再停止程序运行;

(3)运算结果存储在寄存器DX中,查看结果是否正确;

(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于FFFFH将产生数据溢出。

2.求某数据区内负数的个数

设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。

为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。

实验程序流程图如图1-5-2所示。

实验程序清单(例程文件名为:

A5-2.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDI,3000H;数据区首地址

MOVCL,[DI];取数据个数

XORCH,CH

MOVBL,CH

INCDI;指向第一个数据

A1:

MOVAL,[DI]

TESTAL,80H;检查数据首位是否为1

JEA2

INCBL;负数个数加1

A2:

INCDI

LOOPA1

MOV[DI],BL;保存结果

A3:

JMPA3

CODEENDS

ENDSTART

图1-4-2程序流程图

实验步骤

(1)按实验流程编写实验程序;

(2)编译、链接无误后装入系统;

(3)键入E3000,输入数据如下:

3000=06(数据个数)

3001=12

3002=88

3003=82

3004=90

3005=22

3006=33

(4)先运行程序,然后停止程序运行;

(5)查看3007内存单元或寄存器BL中的内容,结果应为03;

(6)可以进行反复测试来验证程序的正确性。

 

 

1.6显示程序实验

1.6.1实验目的

1.了解INT10H各功能模块的作用及用法;

2.掌握字符方式下PC机显示器显示控制。

1.6.2实验设备

PC机一台,TD-PITE实验装置一套。

1.6.3实验内容

编写实验程序,在显示器上的输出

窗口显示A~Z共26个大写英文字母。

显示I/O功能调用使用说明如下:

INT10使用说明

入口:

AH=00H,AL=01H

功能:

清屏

入口:

AH=01H,AL=数据

功能:

写AL中的数据到显示屏上

入口:

AH=06H,DS:

BX=字串首地址,且字符串尾用00H填充

功能:

显示一字串,直到遇到00H为止

实验程序清单(例程文件名为:

A9-1.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,001AH

MOVBL,41H;‘A’的ASCII码值

MOVAH,01H

A1:

MOVAL,BL

INT10H;功能调用

INCBL

PUSHCX

MOVCX,0FFFFH

A2:

LOOPA2

POPCX

DECCX

JNZA1

A3:

JMPA3

CODEENDS

ENDSTART

1.6.4实验步骤

1.编写实验程序,经编译、链接无误后装入系统;

2.运行实验程序,观察实验结果;

3.修改实验程序,在显示器上显示‘GOODAFTERNOON’,要求使用AH=06功能(显示一字符串功能块)完成。

 

第2章80X86微机接口技术实验

接口技术是把由处理器、存储器等组成的基本系统与外部设备连接起来,从而实现CPU与外部设备通信的一门技术。

微机的应用是随着外部设备的不断更新和接口技术的不断发展而深入到各行各业,任何微机应用开发工作都离不开接口的设计、选用及连接。

微机应用系统需要设计的硬件是一些接口电路,所要编写的软件是控制这些接口电路按要求工作的驱动程序。

因此,接口技术是微机应用中必不可少的基本技能。

2.38259中断控制实验

2.3.1实验目的

1.掌握8259中断控制器的工作原理;

2.学习8259的应用编程方法;

3.掌握8259级联方式的使用方法。

2.3.2实验设备

PC机一台,TD-PITE实验装置一套。

2.3.3实验内容及步骤

1.中断控制器8259简介

在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。

从片的INT连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。

8259的内部连接及外部管脚引出如图2-3-1所示。

图2-3-18259内部连续及外部管脚引出图

表2-3-1列出了中断控制单元的寄存器相关信息。

表2-3-1ICU寄存器列表

初始化命令字1寄存器(ICW1)说明见图2-3-2所示。

图2-3-2初始化命令字1寄存器

初始化命令字2寄存器(ICW2)说明见图2-3-3所示。

图2-3-3初始化命令字2寄存器

初始化命令字3寄存器(ICW3)说明,主片见图2-3-4,从片见图2-3-5。

图2-3-4主片初始化命令字3寄存器

图2-3-5从片初始化命令字3寄存器

初始化命令字4寄存器(ICW4)说明见图2-3-6。

图2-3-6初始化命令字4寄存器

操作命令字1寄存器(OCW1)说明见图2-3-7。

图2-3-7操作命令字1寄存器

操作命令字2寄存器(OCW2)说明如图2-3-8所示。

图2-3-8操作命令字2寄存器

操作命令字3寄存器(OCW3)说明如图2-3-9所示。

图2-3-9操作命令字3寄存器

查询状态字(POLL)说明如图2-3-10所示。

图2-3-10程序状态字寄存器

在对8259进行编程时,首先必须进行初始化。

一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。

8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。

在初始化主片8259时,写入初始化命令字的顺序是:

ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。

系统启动时,主片8259已被初始化,且4号中断源(IR4)提供给与PC联机的串口通信使用,其它中断源被屏蔽。

中断矢量地址与中断号之间的关系如下表所示:

2.8259单中断实验

实验接线图如图2-3-11所示,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“7”。

图2-3-118259单中断实验接线图

实验程序清单

SSTACKSEGMENTSTACK

DW32DUP(?

SSTACKENDS

CODESEGMENT

ASSUMECS:

CODE

STA

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2