实验指导书Word文档格式.docx
《实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验指导书Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
若给出LST文件名则生成相应*.lst文件。
f.汇编无误后,按F3输入文件名↙对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.exe可执行文件。
g.按F5,输入*.exe可执行文件名↙,填入程序段地址CS:
0000↙及偏移地址IP:
2000↙,PC开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用U0000:
2000↙命令进行反汇编,检查程序是否正确装入。
显示信息
键入信息
>
U2000
2000BF0035MOVDI,3500
U↙
2003B91000MOVCX,0010
┅
h.当发现源程序输入错误或需要调整时,在调试界面下可用A命令来修改,如修改2000句为MOVDI,3500的操作如下:
A2000↙
0000:
2000
MOVDI,3500
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
3500101_
Space
3500202_
-
3500303_
2.系统操作练习
(2)
将内存3500H单元开始的0-15共16个数据传递到3600H单元开始的数据区中。
STACKSEGMENTSTACK
)
CODESEGMENT
MOVSI,3500H;
建立源地址指针
MOVDI,3600H;
建立目标地址指针
MOVCX,0008H;
字数送入CX寄存器中
MOVAX,[SI];
取源数据一字送入AX中
MOV[DI],AX;
将源数据送入目标地址单元中
INCSI;
修正指针
INCSI
INCDI
DECCX;
修改循环次数
JNZA1;
判断是否传送完毕
JMPA2
CODEENDS;
ENDSTART;
(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)E3500↙,在3500-350F单元中分别送入00、01、02…。
(3)G=0000:
2000↙,运行以上程序,按CTRL+C中断,返回监控。
(4)D3600↙,显示结果:
3600000102…。
实验二数码转换编程及程序调试
1.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
2.熟悉键盘使用方法。
3.熟悉调试程序的方法
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
表2-1数码对应关系
十六进制数
BCD码
二进制机器码
ASCII码
七段码
共阳
共阴
0000
30H
40H
3FH
1
0001
31H
79H
06H
2
0010
32H
24H
5BH
3
0011
33H
4FH
4
0100
34H
19H
66H
5
0101
35H
12H
6DH
6
0110
36H
02H
7DH
7
0111
37H
78H
07H
8
1000
38H
00H
7FH
9
1001
39H
18H
67H
A
1010
41H
08H
77H
B
1011
42H
03H
7CH
C
1100
43H
46H
D
1101
44H
21H
5EH
E
1110
45H
F
1111
0EH
71H
1.将ASCII码表示的十进制数转换为二进制数
十进制表示为:
┅┅┅┅┅┅┅┅┅
(1)
Di代表十进制数1,2,3,┅9,0;
上式转换为:
┅┅┅┅┅┅┅┅┅
(2)
由式
(2)可归纳十进制数转换为二进制数的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。
程序流程及参考程序如下:
(规定:
被转换的ASCII码十进制数存放在3500H-3504H单元中,转换结果存在于3510H-3511H单元中。
)
STACKSEGMENTSTACK
DW64DUP(?
CODESEGMENT
MOVSI,3500H
MOVDI,3510H
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
IMULBX
ADDAL,[SI+01]
INCSI
LOOPA1
MOV[DI],AX
JMPA2
CODEENDS
ENDSTART
(2)在3500-3504H单元存入十进制数12的ASCII码,即E3500↙,并输入3030303132。
2000↙,运行以上程序,并用CTRL+C来中断程序,返回监控状态。
(4)用D3510↙查看结果,应为:
35100C00。
(5)反复试几组数,考察程序的正确性。
2.将十进制数的ASCII码转换为BCD码
设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换为BCD码后,再按位分别存入350AH起始的内存单元内。
若输入的不是十进制数的ASCII码,则对应存放结果的单元内容为“FF”。
由表2-1可知,一字节ASCII码取其低四位即变为BCD码。
MOVCX,0005H;
循环计数器赋初值
ASCII码首地址
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
MOVAL,BL;
结果或错误标志送入AL
MOV[DI+0AH],AL
INCDI
A3:
JMPA3
(1)输入程序并检查无误,经汇编,连接后装入系统。
(2)在3500-3504H单元中存放五位十进制数的ASCII码,即:
E3500↙,并输入3132333435。
2000↙,运行以上程序。
(4)用D3510↙查看结果,显示结果应为:
350A000102030405CC…
四.思考题
程序2将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?
为什么?
实验三运算类编程实验
1.掌握使用运算类指令编程及调试方法。
2.掌握运算类指令对各状态标志位的影响及其测试方法。
8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1所示的数据类型进行算术运算。
表3-1数据类型算术运算表
数制
二进制
带符号
无符号
组合
非组合
运算符
+-×
+-
操作数
字节、字、多精度
字节(二位数字)
字节(一位数字)
1.十进制数的BCD码减法运算
计算下X-Y=Z,其中,X、Y、Z均为BCD码。
STACKSEGMENTSTACK
DATASEGMENT
XDW?
;
请在此处给X赋值
YDW?
;
ZDW?
DATAENDS
CODE,DS:
DATA
MOVAX,DATA
MOVDS,AX
MOVCX,0002H
MOVSI,OFFSETX
MOVDI,OFFSETZ
SBBAL,[SI+02H]
DAS
PUSHF
ANDAL,0FH
POPF
MOV[DI],AL
CODEENDS
(1)输入实验程序并检查无误,经汇编,连接后装入系统。
(设CS:
0000H,IP:
2000H)
(2)用U0000:
2000查看MOVAX,XXXX(DATA)语句,即得到数据段段地址DS:
XXXX。
用E命令EXXXX:
0000↙给X,Y赋值存入40和12的BCD码:
00040201。
(4)DXXXX:
0004↙,显示计算结果:
0802CC…。
四、思考题
编写两个数值长度不等的BCD码相加的程序。
实验四分支程序设计实验
1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。
设计一数据块间的搬移程序。
设计思想:
程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图4-1所示。
图4-1
对于两个数据块分离的情况,如图4-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。
但对于有部分重迭的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得到以下结论:
当源数据块首址>
目的块首址时,从数据块首地址开始传送数据。
当源数据块首址<
目的块首址时,从数据块末地址开始传送数据。
MOVCX,0010H;
取搬家字节数(16个字节)
MOVSI,3100H;
取源块首址
MOVDI,3200H;
取目的块首址
CMPSI,DI;
从首址开始?
JAA2;
是,转移
ADDSI,CX;
否,以末地址开始搬家
ADDDI,CX
DECSI
DECDI
MOVAL,[SI];
从首址开始搬家
DECCX
JNEA1
JMPA3
JNEA2
(1)按实验流程图设计编写实验程序。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。
(3)用E命令在以SI为起址的单元中填入16个数。
(4)G=0000:
(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同。
(6)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。
为什么当源数据块首址>
目的块首址时,应从数据块首址开始传送数据;
而当源数据块首址<
目的块首址时,应从数据块末地址开始传送数据?
实验五循环程序设计
1.加深对循环结构的理解。
2.掌握循环结构程序设计的方法。
3.熟练掌握调试循环程序的方法。
1.编制程序使S=1+2×
3+3×
4+4×
5+…+N(N+1),直到N(N+1)项大于200为止。
DW64DUP(?
ASSUMECS:
MOVDX,0001H
MOVBL,02H
MOVAL,BL
INCBL
MULBL
ADDDX,AX
CMPAX,00C8H
JNAA1
A2:
INT03H
(1)按流程图编制实验程序。
(4)RAX↙,显示结果。
2.求某数据区内复数的个数
设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。
MOVDI,3000H;
设数据区首址
MOVCL,[DI];
送数据个数
XORCH,CH;
CH清0
MOVBL,CH;
BL清0
INCDI;
指针指向第一个数据
MOVAL,[DI]
TESTAL,80H;
数据首位是否为1
JEA2
INCBL;
负数个数累加
MOV[DI],BL;
存结果
(3)E3000↙输入数据如下:
3000=06(数据个数)
3001=12、88、82、90、22、33。
G=0000:
(4)D=3007↙,显示结果03。
修改程序2,使其能分别求出数据区中正数、零和负数的个数。
实验六子程序设计实验
1.学习子程序的定义和调用方法。
2.掌握子程序、子程序的嵌套、递归子程序的结构。
3.掌握子程序的程序设计、编制及调用。
1.求无符号字节序列中的最大值和最小值
设有一字节序列,其存储首址为3000H,字节数为08H。
利用子程序的方法编程求出该序列中的最大值和最小值。
STACKSEGMENT
MOVSI,3000H
MOVCX,0008H
CALLbranch
branch:
JCXZA4
PUSHSI
PUSHCX
PUSHBX
MOVBH,[SI]
MOVBL,BH
LODSB
CMPAL,BH
JBEA2
MOVBH,AL
CMPAL,BL
JAEA3
MOVBL,AL
MOVAX,BX
POPBX
POPCX
POPSI
A4:
RET
主程序
子程序
(1)根据流程图编写出相应的程序。
(3)E30000↙,输入8个字节的数据:
D9、07、8B、C5、EB、04、9D、F9。
(5)RAX↙,显示结果,AX=F904,AH中为最大值,AL中为最小值。
程序说明:
该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。
当循环操作结束时,将BH送AH,将BL送AL,作为返回值,并恢复BX原先内容。
1.若求有符号字节型序列中的最大值和最小值,如何修改程序?
2.子程序执行完毕后要返回程序调用,它返回调用程序的什么地方,是靠什么指令、什么方法返回的?
实验七存储器扩展实验
1.学习掌握存储器扩展方法和存储器读/写。
2.了解6264RAM特性。
(一)系统中的存储器扩展单元
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运行方式
方式
×
H
未选中(掉电)
高阻
L
输出禁止
读
OUT
写
IN
2.系统实验单元中的6264线路如图7-1所示
图7-16264引脚及实验单元中的6264