试验数制转换试验Word文档下载推荐.docx
《试验数制转换试验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《试验数制转换试验Word文档下载推荐.docx(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
INCSI
LOOPA1
A2:
JMPA2
CODEENDS
ENDSTART
1.2.3实验步骤
(1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系统;
(2)待转换数据存放于数据段,根据自己要求输入,默认为30H,30H,32H,35H,36H;
(3)运行程序,然后停止程序;
(4)查看AX寄存器,即为转换结果,应为:
0100;
(5)反复试几组数据,验证程序的正确性。
1.3.十六进制数转换为ASCII码
1.3.1实验原理
由表1-2-1中十六进制数与ASCII码的对应关系可知:
将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。
将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。
自行绘制流程图。
1.3.2实验程序清单
CODE
MOVCX,0004H
MOVDI,3500H;
十六进制数源地址
MOVDX,[DI]
MOVAX,DX
ANDAX,000FH;
取低4位
CMPAL,0AH
JBA2;
小于0AH则转A2
ADDAL,07H;
在A~FH之间,需多加上7H
ADDAL,30H;
转换为相应ASCII码
MOV[DI+0DH],AL;
结果存入目标地址
DECDI
PUSHCX
MOVCL,04H
SHRDX,CL;
将十六进制数右移4位
POPCX
A3:
JMPA3
1.3.3实验步骤
(1)编写程序,经编译、链接无误后装入系统;
(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B20;
(3)先运行程序,然后再停止运行;
(4)键入D350A,显示结果为:
0000:
350A32303342CC…;
(5)反复输入几组数据,验证程序功能。
实验二循环程序设计实验
2.1.1实验目的
1.加深对循环结构的理解;
2.掌握循环结构程序设计的方法以及调试方法。
2.1.2实验设备
2.1.3实验内容及步骤
2.2求某数据区内负数的个数
2.2.1实验原理
设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。
实验程序流程图如图1-5-2所示。
图2-1程序流程图
2.2.2实验程序清单
MOVDI,3000H;
数据区首地址
MOVCL,[DI];
取数据个数
XORCH,CH
MOVBL,CH
INCDI;
指向第一个数据
MOVAL,[DI]
TESTAL,80H;
检查数据首位是否为1
JEA2
INCBL;
负数个数加1
INCDI
MOV[DI],BL;
保存结果
2.2.3实验步骤
(1)按实验流程编写实验程序;
(2)编译、链接无误后装入系统;
(3)键入E3000,输入数据如下:
3000=06(数据个数)
3001=12
3002=88
3003=82
3004=90
3005=22
3006=33
(4)先运行程序,然后停止程序运行;
(5)查看3007内存单元或寄存器BL中的内容,结果应为03;
(6)可以进行反复测试来验证程序的正确性。
2.3学生成绩名次表
2.3.1实验原理
将分数在1~100之间的30个成绩存入首地址为3000H的单元中,3000H+I表示学号为I的学生成绩。
编写程序,将排出的名次表放在3100H开始的数据区,3100H+I中存放的为学号为I的学生名次。
2.3.2实验程序清单
MOVAX,0000H
MOVDS,AX
MOVES,AX
MOVSI,3000H;
存放学生成绩
MOVCX,001EH;
共30个成绩
MOVDI,3100H;
名次表首地址
CALLBRANCH;
调用子程序
MOVAL,1EH
SUBAL,CL
INCAL
MOVBX,DX
MOV[BX+DI],AL
A4:
JMPA4
;
===扫描成绩表,得到最高成绩者的学号===
BRANCH:
PUSHCX
MOVCX,001EH
MOVAL,00H
MOVBX,3000H
MOVSI,BX
CMPAL,[SI]
JAEA3
MOVAL,[SI]
MOVDX,SI
SUBDX,BX
INCSI
LOOPA2
ADDBX,DX
MOV[BX],AL
RET
2.3.3实验步骤
(1)绘制流程图,并编写实验程序;
(3)将30个成绩存入首地址为3000H的内存单元中;
(4)调试并运行程序;
(5)检查3100H起始的内存单元中的名次表是否正确。
实验三、8255并行接口实验--流水灯显示实验
3.1实验目的
1.学习并掌握8255的工作方式及其应用;
2.掌握8255典型应用电路的接法。
3.2实验设备
3.3实验内容
流水灯显示实验。
编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
3.4实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图2-6-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。
图3-18255内部结构及外部引脚图
3.5实验步骤
流水灯显示实验
使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
实验接线图如图2-6-5所示。
实验步骤如下所述:
(1)按图2-6-5连接实验线路图;
(2)编写实验、框图、程序,经编译、链接无误后装入系统;
(3)运行程序,观察LED灯的显示,验证程序功能;
(4)自己改变流水灯的方式,编写程序。
图3-38255流水灯实验接线图
8255在此系统中的端口地址为:
0640H、0642H、0644H、0646H
3.6实验程序清单
DW32DUP(?
CODE
MOVDX,0646H
MOVAL,80H
OUTDX,AL
MOVBX,8001H
AA1:
MOVDX,0640H
MOVAL,BH
RORBH,1
MOVDX,0642H
MOVAL,BL
ROLBL,1
CALLDELAY
JMPAA1
DELAY:
MOVCX,0F000H
AA2:
PUSHAX
POPAX
LOOPAA2
3.7思考题
1、改变流水灯的方式,例如:
左右移动等。
2、端口地址为:
0640H、0642H、0644H、0646H,为何都为偶地址?
3、8255的两个控制字共用一个端口地址,如何区别?