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

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

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

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

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

新微机原理实验指导书

微机原理实验指导书

 

实验一系统认识实验

实验二静态存储器扩展实验

实验三8259中断控制实验

实验四8254(8253)定时/计数器应用实验

实验五8255并行接口实验

实验六DMA特性及8237应用实验

附录1Wmd86V5.2联机软件使用说明

附录2系统编程信息

 

实验一系统认识实验

ASCII(美国标准信息交换码)表

其中:

NUL空,SOH标题开始,STX正文结束,ETX本文结束,

EOT传输结果,ENQ询问,ACK承认,BEL响铃,

BS退一格,HT横向列表,LF换行,VT垂直制表,

FF走纸控制,CR回车,SO移位输出,SI移位输入,

DLE数据链换码,DC1设备控制1,DC2设备控制2,DC3设备控制3,

DC4设备控制4,NAK否定,SYN空传同步,ETB组传送结束,

CAN作废,EM纸尽,SUB减,ESC换码,

FS文字分隔,GS组分隔,RS记录分隔,US单元分隔,

SP空格,DEL作废,

2.1.1实验目的

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

2.1.2实验设备

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

2.1.3实验内容

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

2.1.4实验步骤

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

2.根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言和寄存器类型,这里我们设置成“汇编语言”和“16位寄存器”,如图2.1、图2.2所示。

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

本章选择16位寄存器。

图2.1语言环境设置界面

图2.2寄存器设置界面

3.语言和寄存器选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2.3所示。

默认文件名为Wmd861。

图2.3新建文件界面

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

图2.4程序编辑界面

5.点击

,编译文件,若程序编译无误,则可以继续点击

进行链接,链接无误后方可以加载程序。

编译、链接后输出如图2.5所示的输出信息。

图2.5编译输出信息界面

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

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

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

点击

下载程序。

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

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

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

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

如图2.6所示。

图2.6加载成功显示界面

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

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

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

图2.7内存地址单元数据显示

9.点击按钮

运行程序,待程序运行停止后,通过D0000:

3000命令来观察程序运行结果。

如图2.8所示。

图2.8运行程序后数据变化显示

10.也可以通过设置断点,断点显示如图2.9所示,然后运行程序,当遇到断点时程序会停下来,然后观察数据。

可以使用E0000:

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

图2.9断点设置显示图2.10修改内存单元数据显示界面

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

2.1.5操作练习

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

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

 

数制转换实验

2.2.1实验目的

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

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

2.2.2实验设备

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

2.2.3实验内容及步骤

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

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

计算机与外设间的数制转换关系如图2.11所示,数制对应关系如表2.1所示。

图2.11数制转换关系

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

十进制表示为:

(1)

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

上式转换为:

(2)

由式

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

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

表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

程序流程图如图2.12所示。

实验参考程序如下。

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

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

SBBAX,30H

INCSI

LOOPA1

A2:

JMPA2

CODEENDS

ENDSTART

图2.12转换程序流程图

实验步骤:

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

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

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

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

0100。

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

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

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

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

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

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

A2-2.ASM)

SSTACKSEGMENTSTACKDW64DUP(?

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

MOVAX,4C00H

INT21H;程序终止

CODEENDS

ENDSTART

实验步骤

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

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

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

(3)运行程序,待程序运行停止。

(4)在调试窗口键入D350A,显示运行结果,应为:

0000:

350A0102030405CC…

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

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

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

五位十进制数可表示为:

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:

MOVAX,4C00H

INT21H;程序终止

CODEENDS

ENDSTART

实验步骤

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

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

(3)运行程序,待程序运行停止。

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

3030303132。

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

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

由表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

MOVAX,4C00H

INT21H;程序终止

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

MOVAX,4C00H

INT21H;程序终止

CODEENDS

ENDSTART

实验步骤

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

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

先键入E3500,然后输入0102030405060708。

(3)先运行程序,待程序运行停止。

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

0C22384E。

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

2.2.4思考题

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

为什么?

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

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

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

 

运算类编程实验

2.3.1实验目的

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

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

3.学习使用软件监视变量的方法。

2.3.2实验设备

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

2.3.3实验内容及步骤

80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表2.2所示的数据类型进行算术运算。

表2.2数据类型算术运算表

数制

二进制

BCD码

带符号

无符号

组合

非组合

运算符

+、-、×、÷

+、-

+、-、×、÷

操作数

字节、字、多精度

字节(二位数字)

字节(一位数字)

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

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

实验程序参考如下。

本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结果存入高地址存储单元中。

由于低16运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。

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

A3-1.ASM)

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

PUBLICXH,XL,YH,YL,ZH,ZL;设置全局变量

DATASEGMENT

XLDW?

;X低位

XHDW?

;X高位

YLDW?

;Y低位

YHDW?

;Y高位

ZLDW?

;Z低位

ZHDW?

;Z高位

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,XL

ADDAX,YL;X低位加Y低位

MOVZL,AX;低位和存到Z的低位

MOVAX,XH

ADCAX,YH;高位带进位加

MOVZH,AX;存高位结果

JMPSTART;在此行设置断点,以观察变量值

CODEENDS

ENDSTART

实验步骤

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

(2)程序装载完成后,点击‘变量区’标签将观察窗切换到变量监视窗口。

(3)点击

,将变量XH,XL,YH,YL,ZH,ZL添加到变量监视窗中,然后修改XH,XL,YH,YL的值,如图2.13所示,修改XH为0015,XL为65A0,YH为0021,YL为B79E。

(4)在JMPSTART语句行设置断点,然后运行程序。

(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E。

(6)修改XH,XL,YH和YL的值,再次运行程序,观察实图2.13变量监视窗口

验结果,反复测试几组数据,验证程序的功能。

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

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

实验程序参考例程。

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

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

PUBLICX,Y,Z;定义全局变量

DATASEGMENT

XDW?

YDW?

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

JMPSTART;设置断点,以方便观察变量。

CODEENDS

ENDSTART

实验步骤

(1)输入程序,编译、链接无误后装入系统。

(2)点击

将变量X,Y,Z添加到变量监视窗中,并为X,Y赋值,假定存入40与12的BCD码,即X为0400,Y为0102。

(3)在JMPSTART语句行设置断点,然后运行程序。

(4)程序遇到断点后停止运行,观察变量监视窗,Z应为0208。

(5)重新修改X与Y的值,运行程序,观察结果,反复测试几次,验证程序正确性。

3.乘法运算

实现十进制数的乘法运算,被乘数与乘数均以BCD码的形式存放在内存中,乘数为1位,被乘数为5位,结果为6位。

实验程序参考例程。

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

SSTACKSEGMENTSTACK

DW64DUP(?

SSTACKENDS

DATASEGMENT

DATA1DB5DUP(?

);被乘数

DATA2DB?

;乘数

RESULTDB6DUP(?

);计算结果

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

CALLINIT;初始化目标地址单元为0

MOVSI,OFFSETDATA2

MOVBL,[SI]

ANDBL,0FH;得到乘数

CMPBL,09H

JNCERROR

MOVSI,OFFSETDATA1

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

LOOPA1

A2:

MOVAX,4C00H

INT21H;程序终止

;===将RESULT所指内存单元清零===

INIT:

MOVSI,OFFSETRESULT

MOVCX,0003H

MOVAX,0000H

A3:

MOV[SI],AX

INCSI

INCSI

LOOPA3

RET

;===错误处理===

ERROR:

MOVSI,OFFSETRESULT;若输入数据不符合要求则RESULT所指向内存单元全部写入E

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

当前位置:首页 > 自然科学 > 物理

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

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