实验指导书.docx

上传人:b****7 文档编号:8747454 上传时间:2023-02-01 格式:DOCX 页数:37 大小:226.46KB
下载 相关 举报
实验指导书.docx_第1页
第1页 / 共37页
实验指导书.docx_第2页
第2页 / 共37页
实验指导书.docx_第3页
第3页 / 共37页
实验指导书.docx_第4页
第4页 / 共37页
实验指导书.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

实验指导书.docx

《实验指导书.docx》由会员分享,可在线阅读,更多相关《实验指导书.docx(37页珍藏版)》请在冰豆网上搜索。

实验指导书.docx

实验指导书

实验一系统认识实验

一、实验目的

掌握TDN86/51教学系统的基本操作

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

1.系统认识实验

(1)

(1)程序的输入与修改

从3500H内存单元开始建立0-15共16个数据。

实验步骤

a.使用串行通讯电缆将实验系统与PC微机相连。

b.将位于线路板右下角的系统状态选择开关拨至86档,开启实验系统。

c.在系统软件所在目录下键入MD86↙,选择对应串口号,进入集成操作软件环境,出现系统提示符“>”。

按下F1功能键,进入全屏幕编辑界面,按ALT+F建立新文件(NEW),即可开始输入源程序。

实验程序及流程如下:

STACKSEGMENTSTACK;8088宏汇编程序

DW64DUP(?

);定义堆栈段

STACKENDS

CODESEGMENT;定义代码段

ASSUMECS:

CODE

START:

MOVDI,3500H;程序开始设数据区首址

MOVCX,0010H;字节数送入CX中

MOVAX,0000H

SAHF

A1:

MOV[DI],AL;写入一字节

INCDI;修改地址指针

INCAX;修改数据

DAA;十进制调整

LOOPA1;未填完转移

A2:

JMPA2

CODEENDS;代码段结束

ENDSTART;程序段结束

d.输入程序后,按F2保存程序(规定扩展名为*.asm),使用ALT+X返回集成软件环境。

e.按F2,输入源程序名↙(省略扩展名,系统默认为.asm),对源程序进行汇编,生成目标文件(*.obj)及错误信息文件(*.m)。

若给出LST文件名则生成相应*.lst文件。

f.汇编无误后,按F3输入文件名↙对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.exe可执行文件。

g.按F5,输入*.exe可执行文件名↙,填入程序段地址CS:

0000↙及偏移地址IP:

2000↙,PC开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用U0000:

2000↙命令进行反汇编,检查程序是否正确装入。

显示信息

键入信息

>

U2000

2000BF0035MOVDI,3500

U↙

2003B91000MOVCX,0010

U↙

h.当发现源程序输入错误或需要调整时,在调试界面下可用A命令来修改,如修改2000句为MOVDI,3500的操作如下:

显示信息

键入信息

>

A2000↙

0000:

2000

MOVDI,3500

0000:

2003

(2)运行程序

系统提供了单步运行、设断点运行、连续运行等方式,具体操作如下:

a.单步运行:

其操作如下表,每运行一条指令后会显示下一条待执行指令并以蓝底白字显示变化寄存器的内容,重复T↙(或按F4键)就可一步一步地运行,直至程序结束。

b.连续运行:

在“>”提示符下键入G=0000:

2000↙(在系统默认段地址CS=0000情况下也可直接键入G=2000↙)可连续运行程序,在运行过程中,可通过CTRL+C终止程序运行,返回监控状态;也可通过CTRL+S暂停程序运行,按任意键继续。

c.断点运行:

在程序中可用B命令定义断点,系统规定至多定义10个断点,例如:

显示信息

键入信息

>

B↙

[0:

]

2009

[1:

]

>

上例中定义了2009地址为断点,每次键入GB=0000:

2000↙程序连续运行至断点时,程序中断并显示当前各寄存器内容。

GB是G命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。

(3)内存单元内容的显示:

使用D=0000:

3500↙可查看3500H-350FH单元中的内容是否为0-15共16个数。

(4)内存单元内容的修改:

若要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地址方向移动地址,而“-”键则向反方向移动地址;用↙来响应,就退出E命令。

显示信息

键入信息

>

E3500↙

0000:

3500000_

01space

0000:

3500101_

Space

0000:

3500202_

0000:

3500303_

>

2.系统操作练习

(2)

将内存3500H单元开始的0-15共16个数据传递到3600H单元开始的数据区中。

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVSI,3500H;建立源地址指针

MOVDI,3600H;建立目标地址指针

MOVCX,0008H;字数送入CX寄存器中

A1:

MOVAX,[SI];取源数据一字送入AX中

MOV[DI],AX;将源数据送入目标地址单元中

INCSI;修正指针

INCSI

INCDI

INCDI

DECCX;修改循环次数

JNZA1;判断是否传送完毕

A2:

JMPA2

CODEENDS;代码段结束

ENDSTART;程序段结束

实验步骤

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

(2)E3500↙,在3500-350F单元中分别送入00、01、02…。

(3)G=0000:

2000↙,运行以上程序,按CTRL+C中断,返回监控。

(4)D3600↙,显示结果:

3600000102…。

实验二数码转换编程及程序调试

一、实验目的

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

2.熟悉键盘使用方法。

3.熟悉调试程序的方法

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

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

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

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

 

表2-1数码对应关系

十六进制数

BCD码

二进制机器码

ASCII码

七段码

共阳

共阴

0

0000

0000

30H

40H

3FH

1

0001

0001

31H

79H

06H

2

0010

0010

32H

24H

5BH

3

0011

0011

33H

30H

4FH

4

0100

0100

34H

19H

66H

5

0101

0101

35H

12H

6DH

6

0110

0110

36H

02H

7DH

7

0111

0111

37H

78H

07H

8

1000

1000

38H

00H

7FH

9

1001

1001

39H

18H

67H

A

1010

41H

08H

77H

B

1011

42H

03H

7CH

C

1100

43H

46H

39H

D

1101

44H

21H

5EH

E

1110

45H

06H

79H

F

1111

46H

0EH

71H

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

十进制表示为:

┅┅┅┅┅┅┅┅┅

(1)

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

上式转换为:

┅┅┅┅┅┅┅┅┅

(2)

由式

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

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

程序流程及参考程序如下:

(规定:

被转换的ASCII码十进制数存放在3500H-3504H单元中,转换结果存在于3510H-3511H单元中。

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVSI,3500H

MOVDI,3510H

MOVBX,000AH

MOVCX,0004H

MOVAH,00H

MOVAL,[SI]

SUBAL,30H

A1:

IMULBX

ADDAL,[SI+01]

SUBAL,30H

INCSI

LOOPA1

MOV[DI],AX

A2:

JMPA2

CODEENDS

ENDSTART

实验步骤

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

(2)在3500-3504H单元存入十进制数12的ASCII码,即E3500↙,并输入3030303132。

(3)G=0000:

2000↙,运行以上程序,并用CTRL+C来中断程序,返回监控状态。

(4)用D3510↙查看结果,应为:

35100C00。

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

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

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

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

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

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0005H;循环计数器赋初值

MOVDI,3500H;ASCII码首地址

A1:

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

MOVAL,[DI];送ASCII码至AL

CMPAL,3AH;比较AL与3AH

JNBA2;不低于3AH则转A2

SUBAL,30H;低于3AH则取ASCII码低4位

JBA2;低于30H则转A2

MOVBL,AL;否则AL内容送入BL,取代FFH

A2:

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

MOV[DI+0AH],AL

INCDI

LOOPA1

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

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

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

E3500↙,并输入3132333435。

(3)G=0000:

2000↙,运行以上程序。

(4)用D3510↙查看结果,显示结果应为:

0000:

350A000102030405CC…

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

四.思考题

程序2将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?

为什么?

实验三运算类编程实验

一、实验目的

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

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

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

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

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

数制

二进制

BCD码

带符号

无符号

组合

非组合

运算符

+-×

+-

+-×

操作数

字节、字、多精度

字节(二位数字)

字节(一位数字)

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

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

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

XDW?

;请在此处给X赋值

YDW?

;请在此处给X赋值

ZDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,00H

SAHF

MOVCX,0002H

MOVSI,OFFSETX

MOVDI,OFFSETZ

A1:

MOVAL,[SI]

SBBAL,[SI+02H]

DAS

PUSHF

ANDAL,0FH

POPF

MOV[DI],AL

INCDI

INCSI

LOOPA1

A2:

JMPA2

CODEENDS

ENDSTART

实验步骤

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

(设CS:

0000H,IP:

2000H)

(2)用U0000:

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

XXXX。

用E命令EXXXX:

0000↙给X,Y赋值存入40和12的BCD码:

00040201。

(3)G=0000:

2000↙,运行以上程序。

(4)DXXXX:

0004↙,显示计算结果:

0802CC…。

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

四、思考题

编写两个数值长度不等的BCD码相加的程序。

实验四分支程序设计实验

一、实验目的

1.掌握分支程序的结构。

2.掌握分支程序的设计、调试方法。

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

设计一数据块间的搬移程序。

设计思想:

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

源数据块和目的数据块在存储中可能有三种情况,如图4-1所示。

图4-1

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

但对于有部分重迭的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得到以下结论:

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

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

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0010H;取搬家字节数(16个字节)

MOVSI,3100H;取源块首址

MOVDI,3200H;取目的块首址

CMPSI,DI;从首址开始?

JAA2;是,转移

ADDSI,CX;否,以末地址开始搬家

ADDDI,CX

DECSI

DECDI

A1:

MOVAL,[SI];从首址开始搬家

MOV[DI],AL

DECSI

DECDI

DECCX

JNEA1

JMPA3

A2:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

DECCX

JNEA2

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

(1)按实验流程图设计编写实验程序。

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

(设CS:

0000H,IP:

2000H)

(3)用E命令在以SI为起址的单元中填入16个数。

(4)G=0000:

2000↙,运行以上程序。

(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同。

(6)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。

四、思考题

为什么当源数据块首址>目的块首址时,应从数据块首址开始传送数据;而当源数据块首址<目的块首址时,应从数据块末地址开始传送数据?

实验五循环程序设计

一、实验目的

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

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

3.熟练掌握调试循环程序的方法。

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

1.编制程序使S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0001H

MOVBL,02H

A1:

MOVAL,BL

INCBL

MULBL

ADDDX,AX

CMPAX,00C8H

JNAA1

A2:

INT03H

CODEENDS

ENDSTART

实验步骤

(1)按流程图编制实验程序。

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

(设CS:

0000H,IP:

2000H)

(3)G=0000:

2000↙,运行以上程序。

(4)RAX↙,显示结果。

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

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

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

实验程序及流程如下:

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDI,3000H;设数据区首址

MOVCL,[DI];送数据个数

XORCH,CH;CH清0

MOVBL,CH;BL清0

INCDI;指针指向第一个数据

A1:

MOVAL,[DI]

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

JEA2

INCBL;负数个数累加

A2:

INCDI

LOOPA1

MOV[DI],BL;存结果

INT03H

CODEENDS

ENDSTART

实验步骤

(1)按流程图编制实验程序。

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

(设CS:

0000H,IP:

2000H)

(3)E3000↙输入数据如下:

3000=06(数据个数)

3001=12、88、82、90、22、33。

G=0000:

2000↙,运行以上程序。

(4)D=3007↙,显示结果03。

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

四.思考题

修改程序2,使其能分别求出数据区中正数、零和负数的个数。

实验六子程序设计实验

一、实验目的

1.学习子程序的定义和调用方法。

2.掌握子程序、子程序的嵌套、递归子程序的结构。

3.掌握子程序的程序设计、编制及调用。

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

1.求无符号字节序列中的最大值和最小值

设有一字节序列,其存储首址为3000H,字节数为08H。

利用子程序的方法编程求出该序列中的最大值和最小值。

实验程序及流程如下:

STACKSEGMENT

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVSI,3000H

MOVCX,0008H

CALLbranch

INT03H

branch:

JCXZA4

PUSHSI

PUSHCX

PUSHBX

MOVBH,[SI]

MOVBL,BH

A1:

LODSB

CMPAL,BH

JBEA2

MOVBH,AL

JMPA3

A2:

CMPAL,BL

JAEA3

MOVBL,AL

A3:

LOOPA1

MOVAX,BX

POPBX

POPCX

POPSI

A4:

RET

CODEENDS

ENDSTART

主程序

子程序

实验步骤

(1)根据流程图编写出相应的程序。

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

(设CS:

0000H,IP:

2000H)

(3)E30000↙,输入8个字节的数据:

D9、07、8B、C5、EB、04、9D、F9。

(4)G=0000:

2000↙,运行以上程序。

(5)RAX↙,显示结果,AX=F904,AH中为最大值,AL中为最小值。

程序说明:

该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。

当循环操作结束时,将BH送AH,将BL送AL,作为返回值,并恢复BX原先内容。

四、思考题

1.若求有符号字节型序列中的最大值和最小值,如何修改程序?

2.子程序执行完毕后要返回程序调用,它返回调用程序的什么地方,是靠什么指令、什么方法返回的?

实验七存储器扩展实验

一、实验目的

1.学习掌握存储器扩展方法和存储器读/写。

2.了解6264RAM特性。

二、实验设备

TDN86/51教学实验系统一台

三、实验内容及步骤

(一)系统中的存储器扩展单元

1.6264RAM介绍

静态RAM是由MOS管组成的触发器电路,每个触发器可以存放1位信息。

只要不掉电,所存储的信息就不会丢失。

因此,静态RAM工作稳定,不需要外加刷新电路,使用方便。

但一般SRAM的每一个触发器是由6个晶体管组成,SRAM芯片的集成度不会太高,目前较常用的有6216(2K*8位),6264(8K*8位),62256(32K*8位)。

6264RAM有8192个存储单元,每个单元为8位字长。

6264的引脚如图7-1所示,WE、OE、CE1、CE2的共同作用决定了芯片的运行方式,如表7-1所示。

A0~A12

地址线

D0~D7

双向数据线

CE1

片选线1

CE2

片选线2

WE

写允许线

OE

读允许线

表7-16264运行方式

WE

CE1

CE2

OE

方式

D0~D7

×

H

×

×

未选中(掉电)

高阻

×

×

L

×

未选中(掉电)

高阻

H

L

H

H

输出禁止

高阻

H

L

H

L

OUT

L

L

H

H

IN

L

L

H

L

IN

2.系统实验单元中的6264线路如图7-1所示

图7-16264引脚及实验单元中的6264

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

当前位置:首页 > 高等教育 > 农学

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

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