80x86微机原理实验指导.docx
《80x86微机原理实验指导.docx》由会员分享,可在线阅读,更多相关《80x86微机原理实验指导.docx(44页珍藏版)》请在冰豆网上搜索。
80x86微机原理实验指导
80x86微机原理与接口技术
实验指导书
长安大学信息学院电子通信实验室
第1章80X86微机原理及其程序设计实验
本章主要介绍汇编语言程序设计,通过实验来学习80X86的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。
1.1系统认识实验
1.1.1实验目的
掌握TD-PITE80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
1.1.2实验设备
PC机一台,TD-PITE实验装置一套。
编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
1.1.3实验内容
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
MOVCX,16
MOVSI,3000H
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
D0000:
3500
>
>0000:
350012CCCCCCCCCCCCCC
>0000:
3508CCCCCCCCCCCCCCCC
>0000:
3510CCCCCCCCCCCCCCCC
>0000:
3518CCCCCCCCCCCCCCCC
>0000:
3520CCCCCCCCCCCCCCCC
>0000:
3528CCCCCCCCCCCCCCCC
>0000:
3530CCCCCCCCCCCCCCCC
>0000:
3538CCCCCCCCCCCCCCCC
>0000:
3540CCCCCCCCCCCCCCCC
>0000:
3548CCCCCCCCCCCCCCCC
>E0000:
3500
>
>0000:
3500=12_23B
>0000:
3501=CC_DD
>
>E0000:
3500
>
>0000:
3500=23_
>0000:
3501=DD_12B
>
>E0000:
3501
>
>0000:
3501=12_1B
>
>E0000:
3501
>
>0000:
3501=1B_
>
>D0000:
3600
>
>0000:
360012CCCCCCCCCCCCCC
>0000:
3608CCCCCCCCCCCCCCCC
>0000:
3610CCCCCCCCCCCCCCCC
>0000:
3618CCCCCCCCCCCCCCCC
>0000:
3620CCCCCCCCCCCCCCCC
>0000:
3628CCCCCCCCCCCCCCCC
>0000:
3630CCCCCCCCCCCCCCCC
>0000:
3638CCCCCCCCCCCCCCCC
>0000:
3640CCCCCCCCCCCCCCCC
>0000:
3648CCCCCCCCCCCCCCCC
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:
MOVAX,0000H
MOVDS,AX
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单元中存放,即:
键入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
将十六位