15年嘉定微机实验指导书DOCWord下载.docx

上传人:b****6 文档编号:21387860 上传时间:2023-01-30 格式:DOCX 页数:24 大小:379.88KB
下载 相关 举报
15年嘉定微机实验指导书DOCWord下载.docx_第1页
第1页 / 共24页
15年嘉定微机实验指导书DOCWord下载.docx_第2页
第2页 / 共24页
15年嘉定微机实验指导书DOCWord下载.docx_第3页
第3页 / 共24页
15年嘉定微机实验指导书DOCWord下载.docx_第4页
第4页 / 共24页
15年嘉定微机实验指导书DOCWord下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

15年嘉定微机实验指导书DOCWord下载.docx

《15年嘉定微机实验指导书DOCWord下载.docx》由会员分享,可在线阅读,更多相关《15年嘉定微机实验指导书DOCWord下载.docx(24页珍藏版)》请在冰豆网上搜索。

15年嘉定微机实验指导书DOCWord下载.docx

$'

0AH为换行、0DH为回车。

MES1DB'

Showaashex:

0AH,0DH,'

SDDB'

a'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;

显示退出提示

MOVAH,09H

INT21H

MOVDX,OFFSETMES1;

showmessage

MOVAH,09H

INT21H

MOVSI,OFFSETSD

MOVAL,[SI]

ANDAL,0F0H;

取高4位,并显示。

SHRAL,4

CMPAL,0AH;

是否是A以上的数

JBC2

ADDAL,07H

C2:

ADDAL,30H

MOVDL,AL;

showcharacter

MOVAH,02H

INT21H

ANDAL,0FH;

取低4位,并显示。

CMPAL,0AH

JBC3

ADDAL,07H

C3:

ADDAL,30H

MOVDL,AL

MOVAH,02H

KEY:

MOVAH,1;

判断是否有按键按下?

INT16H;

BIOS调用,读键盘缓冲区字符

JZKEY;

ZF=1缓冲区空,无键盘输入

MOVAX,4C00H;

gobacktodos

CODEENDS

ENDSTART

实验二数码转换程序实验

掌握不同进制数及编码相互转换的程序设计方法。

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

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

计算机与外设间的数码转换关系如图2所示。

要求编写显示子程序。

图2计算机与外设间的数码转换关系

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

十进制数可以表示为:

其中Di代表十进制数1、2、3…9、0。

上式可转换为:

由上式可归纳十进制数转换为二进制的方法:

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

本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。

转换过程的参考流程如图3所示。

图3十进制ASCII转换为二进制数参考流程

将ASCII码十进制数转换为二进制数

DW256DUP(?

DDATASEGMENT

Theasciicodeofdecimalcodeare:

BUFDB30H,30H,30H,31H,32H

DB10HDUP(0)

DDATAENDS

CODESEGMENT

DDATA

MOVAX,DDATA

MOVDS,AX

MOVSI,OFFSETBUF

MOVBX,000AH

MOVCX,0004H

MOVAH,00H

SUBAL,30H

A1:

MULBX

ADDAL,[SI+01]

INCSI

LOOPA1

MOV[SI],AX

MOVDX,OFFSETMES1

MOVAH,09H

INCSI;

显示高字节

CALLSHOW

DECSI;

显示低字节

MOVAX,4C00H

SHOWPROCNEAR;

编写显示子程序

….

SHOWENDP

CODEENDS

ENDSTART

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

本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。

若输入的不是十进制数的ASCⅡ码,则输出“FF”。

提示:

一字节ASCⅡ码取其低四位即变为BCD码。

转换部分的实验流程参见图4。

图4十进制ASCII转换为BCD码数参考流程

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

STACK1SEGMENTSTACK

MES1DB'

TheBCDcodeofdecimalare:

BUFDB31H,32H,33H,34H,35H

MOVAX,DDATA

MOVDS,AX

MOVCX,0005H

MOVDI,OFFSETBUF

MOVBL,0FFH

MOVAL,[DI]

CMPAL,3AH;

比较AL中的数是否是0~9的ASCII码

JNBA2

SUBAL,30H

JBA2

MOVBL,AL

A2:

MOVAL,BL

MOV[DI+05H],AL

INCDI

MOVSI,DI

MOVCX,05H

MOVDX,OFFSETMES1

INT21H

A3:

MOVDL,20H

INCSI

LOOPA3

MOVAX,4C00H

SHOWPROCNEAR;

SHOWENDP

(1)运行Tddebug软件,选择Edit菜单,根据实验内容描述的数码转换内容分别编写实验程序。

(2)利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。

(3)利用Rmrun菜单中的Run,运行程序,观察运行结果。

(5)编写显示子程序,并更改数据区中的数据,考察程序的正确性。

实验三循环程序设计实验

1.实验目的

掌握循环程序的设计方法。

2.实验设备

3.实验内容及说明

一个循环程序通常由以下几个部分组成:

1)循环初始化部分:

用于对相关内存单元及寄存器设置初始值,

如设置地址指针、循环次数、某些标志位等。

只有正确地进行了初始化设置,循环程序才能正确运行并及时停止。

2)循环体:

对要求重复执行的程序段部分,对应于要求重复执行的操作。

3)循环控制部分:

为下一轮处理修正地址指针及循环次数等,并判断循环结束的条件是否满足,若满足则退出循环。

4)循环结束部分:

用于保存循环运行的结果等。

5)编写显示子程序,并更改数据区中的数据,考察程序的正确性。

4.编写程序完成对10个数的求和并显示(P101)

分析:

需分配空间保存和数(SUM),在循环体中进行求和操作。

参考程序清单:

DATASEGMENT

BUFFERDW1,2,3,4,5,6,7,8,9,10;

原始10个数据

SUMDW?

;

存放和数

STACSEGMENTSTACK'

STACK'

DB100DUP(?

STACENDS

CODE,DS:

MOVAX,DATA

MOVAX,0;

AX中为和数,初始为0

MOVDI,OFFSETSUM;

存放结果地址送DI

MOVBX,OFFSETBUFFER;

数据缓冲区首地址,送BX

MOVCX,10;

循环次数送CX

LOOP1:

ADDAX,[BX];

累加

INCBX;

修改数据缓冲区地址

INCBX

DECCX;

次数减1

JNZLOOP1;

到10次了吗?

不到,;

转LOOP1

MOV[DI],AX;

到10次,存放结果

填写调用指令

MOVAX,4C00H;

返回DOS

SHOW…….;

CODEENDS

实验四子程序设计实验

(1)掌握子程序的定义调用方法。

(2)掌握系统功能调用程序的使用和编写方法。

将内存中的一串1位十六进制数转换为其对应的ASCII码并显示(P105)。

例如:

十六进制2所对应的ASCII码为32H,而十六进制数C所对应ASCII码为‘C’(即43H)。

将一个十六进制数转化为其对应的ASCII码的功能设计为子程序。

主程序分若干次调用该子程序,但每次调用的参数为不同的待转换的十六进制数。

4.程序清单如下:

HEXBUFDB02H,08H,0AH,09H,0FH;

待转换的一串1位十六进制数

COUNTEQU$-HEXBUF;

COUNT的值为这一串十六进制数的个数

STACSEGMENTSTACK'

DB100DUP(?

STACENDS

ASSUMECS:

CODE,DS:

DATA,SS:

STAC

子程序HEXD:

将1位十六进制数转换为其对应的ASCII码

入口参数:

AL含待转换的1位十六进制数

出口参数:

AL含转换完的结果(ASCII码)

HEXDPROCNEAR

CMPAL,0AH

JLADDZ

ADDAL,7H;

‘A’-‘0’-0AH

ADDZ:

填写指令

RET

HEXDENDP

以下为主程序

BEGIN:

MOVDS,AX

MOVBX,OFFSETHEXBUF

MOVCX,COUNT

REPEAT0:

MOVAL,[BX]

CALLHEXD

MOV[BX],AL

LOOPREPEAT0

ENDBEGIN

实验五8259中断控制器应用实验

1.实验目的

(1)学习中断控制器8259的工作原理。

(2)掌握可编程控制器8259的应用编程方法。

2.实验设备

PC微机一台、TD-PIT+实验系统一套。

3.实验内容

(1)利用PC机给实验系统分配的中断线,设计一个单中断应用。

使用单次脉冲模拟中断产生。

编写中断处理程序,在显示器屏幕上显示一个字符。

(2)利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。

编写程序对8259控制器的IR0和IR1中断请求进行处理。

4.实验原理

(1)8259控制器的介绍

中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。

它将中断源优先级排队及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,中断结构可以由用户编程来设定。

同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。

它的管理功能包括:

a)记录各级中断源请求;

b)判别优先级,确定是否响应和响应哪一级中断;

c)响应中断时,向CPU传送中断类型号。

8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。

8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。

(2)8259寄存器及命令的控制访问

在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。

对寄存器和命令的访问控制如表1所示。

表18259寄存器及命令的控制访问

(3)PC微机系统中的8259

在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2示。

两片8259A的端口地址为:

主片8259使用020H和021H两个端口;

从片使用0A0H和0A1H两个端口。

系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。

在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。

对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。

表2PC微机系统中的硬件中断

5.实验说明及步骤

(1)中断查询方式应用实验

8259支持查询方式检测中断请求,具体过程为:

设置8259OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。

如果有中断请求,则置ISR中的相应位并读优先级。

从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D0-D2)为最高优先级中断请求源的编码。

查询字格式如图5所示。

图58259OCW3查询字格式

本实验要求使用这种方法编写程序处理实验单元8259IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR0请求则在屏幕上显示字符“1”以示中断到来。

IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。

参考流程如图6所示,参考实验接线图如图7所示。

图6实验参考流程图

注意:

P=1的OCW3可作为向8259A发出的查询命令,表明用查询方式决定中断优先级的次序。

具体步骤:

①向8259A发P=1的OCW3命令(A0=0);

②同一地址(A0=0)读指令(查询字格式,图5),将起中断识别作用。

图7参考实验接线图

实验步骤如下:

a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。

b)运行Tdpit集成操作软件,查看系统资源分配情况,记录与所用片选信号对应的I/O端口始地址。

c)参考实验流程图编写程序,注意使用正确的端口地址,然后编译链接。

d)参考实验接线图连接实验线路。

e)运行程序,按动KK1+、KK1+按键,观察中断响应是否正常。

8259中断查询方式应用实验代码

***********根据查看端口资源修改下列符号值*******************

IOY0EQU9C00H;

片选IOY0对应的端口始地址

************************************************************

MY8259_ICW1EQUIOY0+00H;

实验系统中8259的ICW1端口地址

MY8259_ICW2EQUIOY0+04H;

实验系统中8259的ICW2端口地址

MY8259_ICW3EQUIOY0+04H;

实验系统中8259的ICW3端口地址

MY8259_ICW4EQUIOY0+04H;

实验系统中8259的ICW4端口地址

MY8259_OCW1EQUIOY0+04H;

实验系统中8259的OCW1端口地址

MY8259_OCW2EQUIOY0+00H;

实验系统中8259的OCW2端口地址

MY8259_OCW3EQUIOY0+00H;

实验系统中8259的OCW3端口地址

CODESEGMENT

CODE

MOVDX,MY8259_ICW1;

初始化实验系统中8259的ICW1

MOVAL,13H;

边沿触发、单片8259、需要ICW4

OUTDX,AL

MOVDX,MY8259_ICW2;

初始化实验系统中8259的ICW2

MOVAL,08H

OUTDX,AL

MOVDX,MY8259_ICW4;

初始化实验系统中8259的ICW4

MOVAL,01H;

非自动结束EOI

MOVDX,MY8259_OCW1;

初始化实验系统中8259的OCW1

MOVAL,0FCH;

打开IR0和IR1的屏蔽位

QUERY:

MOVAH,1;

判断是否有按键按下

BIOS调用

JNZQUIT;

ZF=0,有按键则退出

MOVDX,MY8259_OCW3;

向8259的OCW3发送查询命令,P=1

MOVAL,0CH

INAL,DX;

读出查询字(查询字格式,图5)

TESTAL,80H;

判断中断是否已响应

JZQUERY;

没有响应则继续查询

ANDAL,03H;

中断源请求编码,

CMPAL,00H

JEIR0ISR;

若为IR0请求,跳到IR0处理程序

JNEIR1ISR;

若为IR1请求,跳到IR1处理程序

JMPQUERY

IR0ISR:

MOVAL,30H;

IR0处理,显示字符0

MOVAH,0EH

INT10H

MOVAL,20H

INT10H

JMPEOI

IR1ISR:

MOVAL,31H;

IR1处理,显示字符1

INT10H;

BIOS调用,显示字符(功能号AH=0EH)

EOI:

MOVDX,MY8259_OCW2;

向实验系统中8259发送中断结束命令

JMPQUERY

QUIT:

MOVAX,4C00H;

结束程序退出

ENDSTART

实验六8255并行控制器应用实验1

(1)掌握8255的工作方式及应用编程。

(2)掌握8255的典型应用电路接法。

3.实验内容

(1)基本输入输出实验。

编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就改变。

(2)流水灯显示实验。

编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。

(2)实验原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。

8255可编程外围接口芯片具有A、B、C三个并行接口,能在以下三种方式下工作:

方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。

8255工作方式控制字和C口按位置位/复位控制字格式如图8所示。

图88255控制字格式

5.实验说明及步骤

本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。

用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

参考程序流程如图9所示。

图98255参考程序流程图

图108255参考接线图

实验步骤:

b)参考图10所示连接实验线路。

c)首先运行CHECK程序,查看I/O空间始地址。

d)利用查出的地址编写程序,然后编译链接。

e)运行程序,拨动开关,看数据灯显示是否正确。

8255基本输入输出实验代码

***********根据查看端口资源修改下列符号值****************

IOY0EQU9C00H;

*********************************************************

MY8255_AEQUIOY0+0

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

当前位置:首页 > 小学教育 > 语文

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

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