8086实验指导书免费.docx
《8086实验指导书免费.docx》由会员分享,可在线阅读,更多相关《8086实验指导书免费.docx(35页珍藏版)》请在冰豆网上搜索。
8086实验指导书免费
8086实验指导书免费
实验一系统认识实验
一、实验目的
掌握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.掌握使用运算类指令编程