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

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

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

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

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

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

《微机原理及接口技术》

实验指导书

杨霞周林英编

 

长安大学电子与控制工程学院

2009年9月

前言

本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。

完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。

手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。

主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。

所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。

学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。

 

目录

实验一清零程序4

实验二拆字程序6

实验三数据区移动8

实验四多分支程序设计10

实验五多字节减法运算13

实验六显示程序16

实验七8251串口实验25

实验八步进电机控制29

附录一汇编语言的存储模型36

附录二8279键值显示程序37

 

实验一清零程序

一、实验目的

  掌握8088汇编语言程序设计和调试方法。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

    把RAM区内4000H-40FFH单元的内容清零。

四、程序框图

五、源程序清单

.MODELTINY

.STACK100

.DATA

.CODE

ORG0100H

START:

MOVBX,4000H

MOVAX,0000H

MOVCX,80H

L1:

MOV[BX],AX

INCBX

INCBX

LOOPL1

JMP$

ENDSTART

六、实验步骤

    手动修改RAM区内4000H-40FFH的内容,连续或单步方式运行程序,检查4000-40FFH内容执行程序前后的变化。

七、思考

1、把4000H-40FFH中的内容改成FF,如何修改程序。

2、把4000H-40FFH中的内容改成00~FF,如何修改程序。

实验二拆字程序

一、实验目的

    掌握汇编语言设计和调试方法。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

    把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H的高位清零,一般本程序用于把数据送显示缓冲区时用。

四、程序框图

五、源程序

.MODELTINY

.STACK

.DATA

.CODE

START:

MOVBX,4000H

MOVAL,[BX]

MOVAH,AL

MOVCL,4

SHRAH,CL

INCBX

MOV[BX],AH

ANDAL,0FH

INCBX

MOV[BX],AL

JMP$

六、实验步骤

    手动修改4000H的内容,用连续或单步方式运行程序,检查4000H-4002H中内容变化情况。

七、思考

   1.如何用断点方式调试本程序。

2.把4000H、4001H单元低位的内容合成一字送4002H单元。

实验三数据区移动

一、实验目的

    掌握RAM中的数据操作。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

    把4100H源RAM区首址内的16字节数据传送到4200H目标RAM区。

四、设计思想

    程序要求把内存中某一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。

源数据块和目的数据块在存储器中可能有三种情况,如下图:

    对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。

    可以得出以下结论:

当源数据首址>目的块首址时,从数据块首址开始传送数据。

当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

五、程序框图

六、源程序清单

.MODELTINY

.STACK

.DATA

.CODE

ORG0100H

START0:

MOVCX,0010H

MOVSI,4100H

MOVDI,4200H

CMPSI,DI

JAA42

ADDSI,CX

ADDDI,CX

A41:

DECSI

DECDI

MOVAL,[SI]

MOV[DI],AL

LOOPA41

JMP$

A42:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPA42

JMP$

ENDSTART0

七、实验步骤

    调试运行3060程序,检查4100-410FH中内容是否和4200-420FH中内容完全一致。

八、思考

    1.把4200H源RAM区首址内的16字节数据传送到4100H目标RAM区。

2.把4100H源RAM区首址内的16字节数据传送到410AH目标RAM区。

实验四多分支程序设计

一、实验目的

    掌握汇编语言的编程,熟悉程序散转的设计方法。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

编写程序,根据接收到的键值,作不同的处理。

四、设计思想

    多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某单元的内容进行程序转移。

在设计多分支转移程序时,如果分支太多,则平均转移速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。

五、程序框图

六、实验步骤

1、连线说明:

E5区:

CLK

——

B2区:

2M

E5区:

CS

——

A3区:

CS5

E5区:

A0

——

A3区:

A0

E5区:

A、B、C、D

——

G5区:

A、B、C、D

2、在G5区的键盘上输入1位数

3、使用各种手段调试程序

3、结果显示在G5区的数码管上

七、源程序清单

;调用GetKeyB返回键值,根据键值执行相应的程序

.MODEL

TINY

EXTRN

Display8:

NEAR,GetKeyB:

NEAR

.STACK

100

.DATA

BUFFER

DB

8DUP(?

.CODE

START:

MOV

AX,@DATA

MOV

DS,AX

MOV

ES,AX

NOP

START1:

CALL

GetKeyB

;键值存放在AL中

CMP

AL,8

JB

START2

XOR

AL,AL

;大于7,作0处理

START2:

XOR

AH,AH

MOV

BX,AX

SHL

BX,1

LEA

DI,Table_1

JMP

CS:

[DI][BX]

Table_1:

DW

Key0,Key1,Key2,Key3,Key4,Key5,Key6,Key7

Key0:

MOV

AL,1

JMP

Key

Key1:

MOV

AL,2

JMP

Key

Key2:

MOV

AL,3

JMP

Key

Key3:

MOV

AL,4

JMP

Key

Key4:

MOVAL,5

JMP

Key

Key5:

MOV

AL,6

JMP

Key

Key6:

MOV

AL,7

JMP

Key

Key7:

MOV

AL,8

JMP

Key

Key:

MOV

CX,8

LEA

DI,BUFFER

REP

STOSB

LEA

SI,BUFFER

CALL

Display8

MOV

CX,60000

LOOP

$

;延时

JMP

START1

END

START

实验五多字节减法运算

一、实验目的

    掌握BCD码、补码,熟悉多文件、多模块汇编语言程序设计的方法。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。

四、程序框图

五、实验步骤

1、连线说明:

E5区:

CLK

——

B2区:

2M

E5区:

CS

——

A3区:

CS5

E5区:

A0

——

A3区:

A0

E5区:

A、B、C、D

——

G5区:

A、B、C、D

2、在G5区的键盘上输入4位被减数、减数

3、结果显示在G5区的数码管上

六、源程序清单

.MODELTINY

.STACK100

.DATA

ResultDB5DUP(?

minuendDW88H,44H,66H,00H,99H;被减数

N1=$-minuend;被减数长度

subtrahendDW22H,55H,88H;减数

N2=$-subtrahend;减数长度

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

PUSHDS

XORAX,AX

PUSHAX

STD;清方向标志

;显示被减数

;LEASI,minuend

;ADDSI,N1-1

;MOVCX,N1

;CALLEX21

;CALLPP2

;;显示减数

;LEASI,subtrahend

;ADDSI,N2-1

;MOVCX,N2

;CALLEX21

;CALLPP2

;计算结果

CALLEX22

;显示结果

LEASI,minuend

ADDSI,N1-1

MOVCX,N1

CALLEX21

jmp$

 

;模块名称:

EX21

;功能:

显示运算结果

;入口参数:

;出口参数:

EX21PROCnear

PUSHAX

PUSHDX

F:

LODSB

LEABX,Result

ADDBX,CX

MOV[BX],AL

;用十六进制数显示一个字节的内容

;MOVDL,'';显示一个空格符

;MOVAH,2;

;INT21H;

LOOPF

POPDX

POPAX

RET

EX21ENDP

 

;模块名称:

EX22

;功能:

进行多字节减法运算

;入口参数:

;出口参数:

相减的那结果存在

EX22PROCnear

LEASI,minuend

LEADI,subtrahend

MOVBX,N1

MOVCX,N2

CLC

MM:

MOVAL,[DI]

SBB[SI],AL

INCDI

INCSI

DECBX

LOOPMM

M1:

JZEXIT22

;因LOOP指令对标志位无影响,所以此处的转移是对DECBX而言。

;处理被减数的位数多于减数的位数的情况

JNCEXIT22;无借位则直接退出

SBBBYTEPTR[SI],0;影响CF标志位

INCSI;不影响CF标志位

DECBX;不影响CF标志位,影响ZF标志位

JMPM1

EXIT22:

RET

EX22ENDP

ENDstart

 

.MODEL

TINY

EXTRN

Display8:

NEAR,GetBCDKey:

NEAR

EXTRN

F1:

BYTE

.STACK

100

.DATA

BUFFER

DB

8DUP(?

minuend

DW

1DUP(?

;被减数

subtrahend

DW

1DUP(?

;减数

.CODE

START:

MOV

AX,@DATA

MOV

DS,AX

MOV

ES,AX

NOP

MOV

F1,0

;先清除显示,再接收键输入

START1:

LEA

DI,minuend

MOV

CX,4

;按键次数

CALL

GetBCDKey

;得到双字节十进制数(被减数)

MOV

F1,1

;接收到第一个键,才清除显示

LEA

DI,subtrahend

MOV

CX,4

;按键次数

CALL

GetBCDKey

;得到双字节十进制数(减数)

MOV

AX,minuend

MOV

BX,subtrahend

MOV

DL,10H

CMP

AX,BX

JNB

START2

XCHG

AX,BX

MOV

DL,11H

;负数

START2:

SUB

AL,BL

;低位

DAS

XCHG

AL,AH

SBB

AL,BH

;高位

DAS

XCHG

AL,AH

CLD

LEA

DI,BUFFER

;存放显示结果

CALL

B1toB2

;低位

MOV

AL,AH

CALL

B1toB2

;高位

MOV

AL,10H

;最高三位消隐

STOSB

STOSB

STOSB

STOSB

LEA

SI,BUFFER+3

MOV

CX,3

CALL

BlackDisplay

;将高位0消隐

LEA

SI,BUFFER

CALL

Display8

JMP

START1

;将一个字节压缩BCD码转换成二个字节非压缩BCD码

B1toB2

PROC

NEAR

PUSH

AX

AND

AL,0FH

STOSB

POP

AX

AND

AL,0F0H

ROR

AL,4

STOSB

RET

B1toB2

ENDP

BlackDisplay

PROC

NEAR

;将高位0消隐

BlackDisplay1:

MOV

AL,[SI]

CMP

AL,0

JNZ

Exit

MOV

AL,10H

MOV

[SI],AL

DEC

SI

LOOP

BlackDisplay1

Exit:

CLD

MOV

[SI+1],DL

RET

BlackDisplay

ENDP

END

START

七、思考

从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上。

实验六显示程序

一、实验目的

1、熟悉8255的功能,理解LED显示原理及控制方法;

2、学会使用LED点阵液晶显示字体和图形;

3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备

STAR系列实验仪一套、PC机一台。

三、实验内容

1、编写程序,用8255的PA、PB口控制LED的位选和段选,

(1)编写程序,控制8位数码管跑马灯形式显示0;

(2)编写程序,控制8位数码管静态显示指定字符1-8;

(3)编写程序,控制8位数码管动态循环显示8位字符;

2、按图连接线路,运行程序,观察实验结果。

四、实验原理图

五、实验步骤

1、主机连线说明:

B4区:

CS(8255)

——

A3区:

CS1

B4区:

A0、A1

——

A3区:

A0、A1

B4区:

JP56、JP53

——

G5区:

JP41、JP42

2、运行程序,验证显示结果。

六:

源程序

(1)控制8位数码管依次显示0;

.MODELTINY

.STACK100

.DATA

IO8255_ConEQU0F003H;CS3

IO8255_AEQU0F000H;A

IO8255_BEQU0F001H;B

LED_TAB:

DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H

DB07FH,6FH,77H,7CH,39H,05EH,79H,71H

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

MOVDX,IO8255_Con

MOVAL,80H;方式0,A,B,C均为输出

OUTDX,AL

MOVAL,0FEH;8255PC输出

MOVCX,8

GOON:

MOVDX,IO8255_A;位选

OUTDX,AL

ROLAL,1

MOVAH,AL

MOVDX,IO8255_B

MOVAL,03FH

OUTDX,AL

MOVAL,AH;0FFH->8255PA

CALLDelay

JMPGOON

DelayPROCNEAR

PUSHCX

MOVCX,20000

Delay1:

LOOPDelay1

POPCX

RET

ENDP

ENDSTART

(2)编写程序,控制8位数码管依次显示任意指定字符(0-F);

.MODELTINY

.STACK100

.MODELTINY

.STACK100

.DATA

IO8255_ConEQU0F003H;CS3

IO8255_AEQU0F000H;A

IO8255_BEQU0F001H;B

F1DB0

LED_TAB:

DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H

DB07FH,6FH,77H,7CH,39H,05EH,79H,71H

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

;MOVF1,0

MOVDX,IO8255_Con

MOVAL,80H;方式0,A,B,C均为输出

OUTDX,AL

MOVAL,0FEH;8255PC输出

MOVCX,8

GOON:

MOVDX,IO8255_B;段选

MOVBX,LED_TAB;装入表头

PUSHAX

MOVAL,F1

XLAT;AL放字形码

OUTDX,AL

POPAX

MOVAL,AH

MOVDX,IO8255_A;位选

OUTDX,AL

ROLAL,1

MOVAH,AL

INCF1

;0FFH->8255PA

CALLDelay

JMPGOON

DelayPROCNEAR

PUSHCX

MOVCX,800

Delay1:

LOOPDelay1

POPCX

RET

ENDP

ENDSTART

(3)编写程序,控制8位数码管同时显示0、1、……F:

.MODELTINY

.STACK100

.MODELTINY

.STACK100

.DATA

IO8255_ConEQU0F003H;CS3

IO8255_AEQU0F000H;A

IO8255_BEQU0F001H;B

LED_TAB:

DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H

DB07FH,6FH,77H,7CH,39H,05EH,79H,71H

F1DB0

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

MOVDX,IO8255_Con

MOVAL,80H;方式0,A,B,C均为输出

OUTDX,AL

MOVAX,0FEFEH;8255PC输出

MOVCX,1600

LEABX,LED_TAB

GOON:

MOVAL,F1

XLAT

MOVDX,IO8255_B;段选

OUTDX,AL

MOVAL,AH

MOVDX,IO8255_A;位选

OUTDX,AL

ROLAL,1

MOVAH,AL

CALLDL500ms

LOOPGOON;8段数码管显示当前值

MOVCX,1600;8段数码管显示完成,则显示下个字符

MOVAL,AH;

;CALLDL3S

INCF1

CMPF1,10H;是否显示完了

JZEXIT

JMPGOON

DL500msPROCNEAR

PUSHCX

MOVCX,400

DL500ms1:

LOOPDL500ms1

POPCX

RET

DL500msENDP

EXIT:

ENDSTART

七、思考

(4)编写程序,控制8位数码管显示当前日期以及时间;

实验七8251串口实验

一、实验目的与要求

了解8251的内部结构、工作原理;了解8251与8088的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。

复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备

STAR系列实验仪一套、PC机一台

三、实验内容

1、编制程序:

实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。

2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。

四、程序框图

初始化8251:

接收10个字节数据子程序:

发送了10个字节数据子程序:

五、实验原理图

六、实验步骤

1、连线说明:

C5区:

CS(8253)、A0、A1

——

A3区:

CS5、A0、A1

C5区:

CLK0

——

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

当前位置:首页 > 医药卫生 > 基础医学

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

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