1、实验指导书实验一 系统认识实验一、 实验目的掌握TDN86/51教学系统的基本操作二、 实验设备TDN86/51教学实验系统一台三、 实验内容及步骤1 系统认识实验(1)(1) 程序的输入与修改从3500H内存单元开始建立0-15共16个数据。实验步骤a. 使用串行通讯电缆将实验系统与PC微机相连。b. 将位于线路板右下角的系统状态选择开关拨至86档,开启实验系统。c. 在系统软件所在目录下键入MD86,选择对应串口号,进入集成操作软件环境,出现系统提示符“”。按下F1功能键,进入全屏幕编辑界面,按ALT+F建立新文件(NEW),即可开始输入源程序。实验程序及流程如下:STACK SEGMEN
2、T STACK ;8088宏汇编程序 DW 64 DUP() ;定义堆栈段STACK ENDSCODE SEGMENT ;定义代码段 ASSUME CS:CODESTART: MOV DI,3500H ;程序开始设数据区首址 MOV CX,0010H ;字节数送入CX中 MOV AX,0000H SAHFA1: MOV DI,AL ;写入一字节 INC DI ;修改地址指针 INC AX ;修改数据 DAA ;十进制调整 LOOP A1 ;未填完转移A2: JMP A2 CODE ENDS ;代码段结束 END START ;程序段结束d. 输入程序后,按F2保存程序(规定扩展名为*.asm)
3、,使用ALT+X返回集成软件环境。e. 按F2,输入源程序名(省略扩展名,系统默认为.asm),对源程序进行汇编,生成目标文件(*.obj)及错误信息文件(*.m)。若给出LST文件名则生成相应*.lst文件。f. 汇编无误后,按F3输入文件名对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.exe可执行文件。g. 按F5,输入*.exe可执行文件名,填入程序段地址CS:0000及偏移地址IP:2000,PC开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用U0000:2000命令进行反汇编,检查程序是否正确装入。显示信息键入信息U20002000 BF0035 MOV
4、 DI,3500U2003 B91000 MOV CX,0010Uh. 当发现源程序输入错误或需要调整时,在调试界面下可用A命令来修改,如修改2000句为MOV DI,3500的操作如下:显示信息键入信息A20000000:2000 MOV DI,35000000:2003(2) 运行程序系统提供了单步运行、设断点运行、连续运行等方式,具体操作如下:a. 单步运行:其操作如下表,每运行一条指令后会显示下一条待执行指令并以蓝底白字显示变化寄存器的内容,重复T(或按F4键)就可一步一步地运行,直至程序结束。b. 连续运行:在“”提示符下键入G=0000:2000(在系统默认段地址CS=0000情况
5、下也可直接键入G=2000)可连续运行程序,在运行过程中,可通过CTRL+C终止程序运行,返回监控状态;也可通过CTRL+S暂停程序运行,按任意键继续。c. 断点运行:在程序中可用B命令定义断点,系统规定至多定义10个断点,例如:显示信息键入信息B0: 20091:上例中定义了2009地址为断点,每次键入GB=0000:2000程序连续运行至断点时,程序中断并显示当前各寄存器内容。GB是G命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。(3) 内存单元内容的显示:使用D=0000:3500可查看3500H-350FH单元中的内容是否为0-15共16个数。(4) 内存单元内容的修改:
6、若要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地址方向移动地址,而“”键则向反方向移动地址;用来响应,就退出E命令。显示信息键入信息E35000000:35000 00_01space0000:35001 01_Space0000:35002 02_0000:35003 03_2 系统操作练习(2)将内存3500H单元开始的0-15共16个数据传递到3600H单元开始的数据区中。实验程序及流程如下:STACK SEGMENT STACK DW 64 DUP() STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV SI,35
7、00H ;建立源地址指针 MOV DI,3600H ;建立目标地址指针 MOV CX,0008H ;字数送入CX寄存器中A1: MOV AX,SI ;取源数据一字送入AX中 MOV DI,AX ;将源数据送入目标地址单元中 INC SI ;修正指针 INC SI INC DI INC DI DEC CX ;修改循环次数 JNZ A1 ;判断是否传送完毕A2: JMP A2 CODE ENDS ;代码段结束 END START ;程序段结束实验步骤(1) 输入程序并检查无误,经汇编、连接后装入系统。(2) E3500,在3500-350F单元中分别送入00、01、02。(3) G=0000:20
8、00,运行以上程序,按CTRL+C中断,返回监控。(4) D3600 ,显示结果:3600 00 01 02 。实验二 数码转换编程及程序调试一、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。2. 熟悉键盘使用方法。3. 熟悉调试程序的方法二、实验设备TDN86/51教学实验系统一台三、 实验内容及步骤计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外
9、设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。表2-1 数码对应关系十六进制数BCD码二进制机器码ASCII码七段码共阳共阴00000000030H40H3FH10001000131H79H06H20010001032H24H5BH30011001133H30H4FH40100010034H19H66H50101010135H12H6DH60110011036H02H7DH70111011137H78H07H81000100038H00H7FH91001100139H18H67HA101041H08H77HB101142H03H7CHC110043H46H39HD110144H
10、21H5EHE111045H06H79HF111146H0EH71H1. 将ASCII码表示的十进制数转换为二进制数十进制表示为:(1)Di代表十进制数1,2,3,9,0;上式转换为:(2)由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。程序流程及参考程序如下:(规定:被转换的ASCII码十进制数存放在3500H-3504H单元中,转换结果存在于3510H-3511H单元中。)STACK SEGMENT STACK DW 64 DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODEST
11、ART: MOV SI,3500H MOV DI,3510H MOV BX,000AH MOV CX,0004H MOV AH,00H MOV AL,SI SUB AL,30HA1: IMUL BX ADD AL,SI+01 SUB AL,30H INC SI LOOP A1 MOV DI,AXA2: JMP A2CODE ENDS END START实验步骤(1) 输入程序并检查无误,经汇编、连接后装入系统。(2) 在3500-3504H单元存入十进制数12的ASCII码,即E3500,并输入30 30 30 31 32。(3) G=0000:2000,运行以上程序,并用CTRL+C来中断程
12、序,返回监控状态。(4) 用D3510查看结果,应为:3510 0C 00。(5) 反复试几组数,考察程序的正确性。2. 将十进制数的ASCII码转换为BCD码设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换为BCD码后,再按位分别存入350AH起始的内存单元内。若输入的不是十进制数的ASCII码,则对应存放结果的单元内容为“FF”。由表2-1可知,一字节ASCII码取其低四位即变为BCD码。实验程序及流程如下:STACK SEGMENT STACK DW 64 DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODESTART:
13、 MOV CX,0005H ;循环计数器赋初值 MOV DI,3500H ;ASCII码首地址A1: MOV BL,0FFH ;将错误标志送入BL MOV AL,DI ;送ASCII码至AL CMP AL,3AH ;比较AL与3AH JNB A2 ;不低于3AH则转A2 SUB AL,30H ;低于3AH则取ASCII码低4位 JB A2 ;低于30H则转A2 MOV BL,AL ;否则AL内容送入BL,取代FFHA2: MOV AL,BL ;结果或错误标志送入AL MOV DI+0AH,AL INC DI LOOP A1A3: JMP A3 CODE ENDS END START实验步骤(1
14、) 输入程序并检查无误,经汇编,连接后装入系统。(2) 在3500-3504H单元中存放五位十进制数的ASCII码,即:E3500,并输入31 32 33 34 35。(3) G=0000:2000,运行以上程序。(4) 用D3510查看结果,显示结果应为:0000:350A 00 01 02 03 04 05 CC (5) 反复试几组数,考察程序的正确性。四思考题程序2将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少为什么实验三 运算类编程实验一、实验目的1掌握使用运算类指令编程及调试方法。2掌握运算类指令对各状态标志位的影响及其测试方法。二、实验设备TD
15、N86/51教学实验系统一台三、实验内容及步骤8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1所示的数据类型进行算术运算。表3-1 数据类型算术运算表数 制二进制BCD码带符号无符号组合非组合运算符+ - + -+ - 操作数字节、字、多精度字节(二位数字)字节(一位数字)1十进制数的BCD码减法运算 计算下X-Y=Z,其中,X、Y、Z均为BCD码。实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP()STACK ENDSDATA SEGMENTX DW ;请在此处给X赋值Y DW ;请在此处给X赋值Z DW DATA ENDSCOD
16、E SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H SAHF MOV CX,0002H MOV SI,OFFSET X MOV DI,OFFSET ZA1: MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV DI,AL INC DI INC SI LOOP A1A2: JMP A2CODE ENDS END START实验步骤(1) 输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(2) 用U0000:20
17、00查看MOV AX,XXXX(DATA)语句,即得到数据段段地址DS:XXXX。用E命令EXXXX:0000给X,Y赋值存入40和12的BCD码:00 04 02 01。(3) G=0000:2000,运行以上程序。(4) DXXXX:0004,显示计算结果:08 02 CC 。(5) 反复试几组数,考察程序的正确性。四、 思考题 编写两个数值长度不等的BCD码相加的程序。实验四 分支程序设计实验一、实验目的1掌握分支程序的结构。2掌握分支程序的设计、调试方法。二、实验设备TDN86/51教学实验系统一台三、实验内容及步骤设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数
18、据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图4-1所示。图4-1对于两个数据块分离的情况,如图4-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重迭的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得到以下结论:当源数据块首址目的块首址时,从数据块首地址开始传送数据。当源数据块首址目的块首址时,应从数据块首址开始传送数据;而当源数据块首址目的块首址时,应从数据块末地址开始传送数据实验五 循环程序设计一、实验目的1加深对循环结构的理解。2掌握循环结构程序设计的方法。3熟练掌握调试循环程序的方法。二、实验设备
19、TDN86/51教学实验系统一台三、实验内容及步骤1编制程序使S=1+23+34+45+N(N+1),直到N(N+1)项大于200为止。实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV DX,0001H MOV BL,02HA1: MOV AL,BL INC BL MUL BL ADD DX,AX CMP AX,00C8H JNA A1 A2: INT 03HCODE ENDS END START实验步骤(1) 按流程图编制实验程序。(2) 输入实验程序并检查无误,
20、经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3) G=0000:2000,运行以上程序。(4) RAX,显示结果。2求某数据区内复数的个数 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV DI,3000H ;设数据区首
21、址 MOV CL,DI ;送数据个数 XOR CH,CH ;CH清0 MOV BL,CH ;BL清0 INC DI ;指针指向第一个数据A1: MOV AL,DI TEST AL,80H;数据首位是否为1 JE A2 INC BL ;负数个数累加A2: INC DI LOOP A1 MOV DI,BL ;存结果 INT 03HCODE ENDS END START实验步骤(1) 按流程图编制实验程序。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3) E3000输入数据如下:300006(数据个数)300112、88、82、90、22、33。
22、G=0000:2000,运行以上程序。(4) D3007,显示结果03。(5) 反复试几组数,考察程序的正确性。四思考题 修改程序2,使其能分别求出数据区中正数、零和负数的个数。实验六 子程序设计实验一、实验目的1学习子程序的定义和调用方法。2掌握子程序、子程序的嵌套、递归子程序的结构。3掌握子程序的程序设计、编制及调用。二、实验设备TDN86/51教学实验系统一台三、实验内容及步骤1求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。实验程序及流程如下:STACK SEGMENT DW 64 DUP()
23、STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV SI,3000H MOV CX,0008H CALL branch INT 03Hbranch: JCXZ A4 PUSH SI PUSH CX PUSH BX MOV BH,SI MOV BL,BHA1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3A2: CMP AL,BL JAE A3 MOV BL,ALA3: LOOP A1 MOV AX,BX POP BX POP CX POP SIA4: RETCODE ENDS END START主程序子程序实验步骤(
24、1) 根据流程图编写出相应的程序。(2) 输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3) E30000,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。(4) G=0000:2000,运行以上程序。(5) RAX,显示结果,AX=F9 04,AH中为最大值,AL中为最小值。程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,
25、作为返回值,并恢复BX原先内容。四、思考题1若求有符号字节型序列中的最大值和最小值,如何修改程序2子程序执行完毕后要返回程序调用,它返回调用程序的什么地方,是靠什么指令、什么方法返回的实验七 存储器扩展实验一、实验目的1学习掌握存储器扩展方法和存储器读/写。 2了解6264RAM特性。二、实验设备TDN86/51教学实验系统一台三、实验内容及步骤(一)系统中的存储器扩展单元16264RAM介绍 静态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所示。A0A12地址线D0D7双向数据线CE1片选线1CE2片选线2WE写允许线OE读允许线表7-1 6264运行方式WECE1CE2OE方式D0D7H未选中(掉电)高阻L未选中(掉电)高阻HLHH输出禁止高阻HLHL读OUTLLHH写INLLHL写IN
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2