微处理器实验报告顺序程序设计:拆字和拼字
- 格式:doc
- 大小:57.50 KB
- 文档页数:2
班级:2学号:姓名:成绩:实验二拆字、拼字程序一实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二实验内容1.把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。
ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;屏敝高位INC DPTRMOVX @DPTR,A;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏敝高位MOVX @DPTR,A;送2002HSJMP $END2. 把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节ORG 0680HSE03: MOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH ;(2000H)内容屏敝高位SW AP A;交换MOV B,A;保存INC DPTRMOVX A,@DPTR ;(2001H)内容送AANL A,#0FH ;屏敝高位ORL A,B ;或INC DPTRMOVX @DPTR,A;送2002HSJMP $END三实验步骤编译、装载程序,以连续或单步方式运行程序,检查2000~20FFH中执行程序前后的变化。
四思考1.将2000的高低位分别送入3000H、3001H的高位, 3000H、3001H低位清零;ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;MOV DPTR,#3000HMOVX @DPTR,A;送3000HINC DPTRMOV A,BANL A,#0FHMOVX @DPTR,A;送3001HEND2.把片内20H,21H的高位拼在一起送到片内30H单元。
实验3 拆字、拼字子程序设计
1、实验内容
1)内部RAM 20H单元存放二位压缩的BCD码,
试将BCD码变成相应的ASCII码存放到以
40H单元为首地址的内部RAM单元
2)内部RAM 79H,7AH内存放着个位和十位两位
BCD码, 将它们变成压缩的BCD码存到R2内。
(以上程序要求取数、送数均用间接寻址)
3) 内部RAM 7AH,79H内存放两位BCD码高位在前,将它们拼成一个字节加1并进
行十进制凋整,然后再将个位送79H拾位送7AH。
要求伎用拼字、拆字子程完成。
2、实验步骤
1)打开PV32编程序。
汇编正确进入调试界面。
否则修改程序重新汇编直到通过。
2)打开DATD窗口给加数、被加数赋值
3)单步调试观察并记禄寄存器、内存的变化。
判断程序是否正确。
若发现问题重返编辑
界面,修改、存盘、汇编。
返回调试界面调试通过。
4)设断点调试、记禄结果。
3、实验报告
1)折字子程序流程图及程序清单
2)拼字子程序流程图及程序清单
3)标准BCD码与压缩BCD码的相同点与不同点是什么?
4)*第3问的流程图及程序清单(选做)。
西安交通大学实验报告课程:微机原理与接口技术实验实验名称:顺序程序设计第 1页共页系别:理学院应用物理系实验日期 2016年11月19日专业班级:应物42班组别____________ 实验报告日期 2016年月日姓名:茹世浩学号: 2140903034 报告退发 ( 订正、重做) 1.实验目的学习8086汇编语言程序的基本结构和顺序程序设计的基本方法。
2.实验设备微型电脑、、、3.实验原理顺序程序是控制流仅有一个走向的程序,它主要用于解决一些无需进行判断分支,也无需循环执行的简单问题。
本节的实验内容与乘法和除法运算有关。
无符号数乘法运算使用MUL指令,有符号数乘法运算使用IMUL指令。
乘法运算属于隐含操作数的运算,因此在使用乘法指令前,需要先将乘数放入AL〔8位乘法〕或AX〔16位乘法〕中。
乘法指令执行后,乘积在AX〔8位乘法〕或DX:AX〔16位乘法〕中。
无符号数除法运算使用DIV指令,有符号数除法运算使用IDIV 指令。
除法运算属于隐含操作数的运算,因此在使用除法指令前,需要先将被除数放入AX 〔8位除法〕或DX:AX〔16位除法〕中。
当除数为8位时,被除数应为16位;除数为16位时,被除数应为32位。
对无符号数除法,当被除数字长不够时,高位部分可直接补0;而对有符号数除法,当被除数字长不够时,必须使用符号扩展指令进行扩展。
除法运算执行后,结果在AX〔8位除法〕或DX:AX〔16位除法〕,其中AL〔8位除法〕或AX〔16位除法〕中是商,AH〔8位除法〕或DX〔16位除法〕中是余数。
4.实验内容在NUM变量中定义了5个有符号数〔字节类型〕,分别是U= 09H,V=16H,W=04H,X=17H,Y=05H,计算〔U+V-W*X〕/Y,将结果显示在屏幕上。
程序流程图如图错误!文档中没有指定样式的文字。
-1。
开始[NUM]=U,[NUM+1]=V,[NUM+2]=W,[NUM+3]=X,[NUM+4]=Y第一步:计算W*X1. [NUM+2]→AL〔数据W送AL〕2. AL*[NUM+3]→AL〔W*X乘积送AL〕→BL〔乘积备份到BL〕第二步:计算U+V-W*X1. [NUM]→AL〔数据U送AL〕2. AL+[NUM+1]→AL〔U+V之和送到AL〕3. AL-BL→AL〔U+V-W*X,结果送到AL〕第三步:计算〔U+V-W*X〕/Y1. AL符号扩展到AX2. AX / [NUM+4]→AX 〔〔U+V-W*X〕/Y,商在AL中〕第四步:显示结果的高4位1. AL中的结果暂存到BL2. AL逻辑右移4位〔取高4位〕3. AL的内容转换成ASCII码4. 显示第五步:显示结果的低4位1. BL中暂存的结果送到AL2. 保留AL中低4位,高4位清03. AL的内容转换成ASCII码4. 显示返回DOS图错误!文档中没有指定样式的文字。
一、实验目的1. 了解汉字拆字的基本原理和方法;2. 掌握微机在汉字拆字中的应用;3. 熟悉汉字拆字程序的设计与实现。
二、实验原理汉字拆字是将一个汉字分解成若干个基本部件(称为笔画)的过程。
汉字拆字在汉字识别、汉字编码等领域有着广泛的应用。
微机拆字实验主要利用计算机的强大处理能力,实现对汉字的自动拆分。
三、实验内容1. 实验环境:Windows操作系统,Python编程语言,PyQt5图形界面库。
2. 实验步骤:(1)搭建实验环境,安装Python和PyQt5。
(2)编写汉字拆字程序,主要包括以下模块:① 汉字笔画识别模块:根据汉字笔画特征,识别汉字的各个笔画;② 汉字拆字模块:根据汉字笔画识别结果,将汉字拆分成基本部件;③ 汉字部件编码模块:将拆分后的汉字部件进行编码,便于存储和检索;④ 用户界面模块:实现用户输入汉字,展示拆分结果等功能。
(3)编写实验程序,实现以下功能:① 用户输入汉字,程序自动进行拆字;② 展示拆分结果,包括拆分后的汉字部件和编码;③ 用户可以调整拆分参数,如笔画识别阈值等。
3. 实验结果分析:(1)通过实验,成功实现了汉字的自动拆分,证明了程序的正确性。
(2)实验结果表明,汉字拆字程序具有较高的准确性和稳定性,能够满足实际应用需求。
四、实验总结1. 通过本次实验,掌握了汉字拆字的基本原理和方法,了解了微机在汉字拆字中的应用。
2. 在实验过程中,学习了Python编程语言和PyQt5图形界面库,提高了编程能力。
3. 通过对汉字拆字程序的设计与实现,锻炼了逻辑思维和问题解决能力。
4. 本次实验为后续相关研究奠定了基础,有助于进一步探索汉字拆字技术。
五、实验改进与展望1. 优化汉字笔画识别模块,提高识别准确率。
2. 丰富汉字部件编码方式,便于存储和检索。
3. 研究基于深度学习的汉字拆字方法,提高拆字效果。
4. 将汉字拆字技术应用于实际场景,如汉字识别、汉字编码等。
总之,本次微机拆字实验使我们对汉字拆字技术有了更深入的了解,为今后的学习和研究奠定了基础。
微处理器原理与应用实验日志实验题目:顺序程序设计:拆字和拼字实验目的:1、掌握顺序程序编写方法2、掌握拆字和拼字方法3、学会编写和调试程序的过程和方法4、掌握C51编程方法。
实验要求:1、阅读、运行并调试已给的程序;2、模仿已给程序分别汇编程序和C程序完成拼字程序;实验主要步骤:1、启动计算机,进入Keil C51的集成开发环境;2、根据已给程序分别编辑汇编程序和C程序;3、编辑完成以后对程序进行编译,生成目标代码;4、运行、调试目标代码和进行结果检查;5、根据要求分别编写汇编程序和C程序;6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;7、修改内存单元中的内容在观察存储单元内容的变化;实验结果:汇编程序:ORG 0000HAJMP STARTORG 0100HSTART: MOV A,30HANL A,#0FHSW AP AMOV 32H,AMOV A,31HANL A,#0FHORL 32H,ASJMP $END#include""#include""void main(){DBYTE[0x30]=0x12;DBYTE[0x31]=0x34;DBYTE[0x30]<<=4; //20DBYTE[0x31]&=0x0f; //04DBYTE[0x32]=DBYTE[0x30]|DBYTE[0x31];}心得体会:在本次实验中,发现输入数据有两种方法,一种是在程序中直接赋值,另一种是直接双击0x0200这个单元,就可以对它赋值,最后运行结果一样,但后一种明显改动数据方便,这让我意识到了优化程序的重要性。
在第三个实验中,对用C语言编写的程序,不知道或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。
一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。
拆字拼字单片机原理及应用实验报告姓名:学号班级:指导教师:单片机原理及应用实验报告实验项目名称:拆字、拼字实验实验日期:2014年12月7日实验成绩:实验评定标准:一、实验目的掌握汇编语言设计和调试方法,掌握拆字和拼字的程序编写方法。
二、实验器材Keil-uVision4软件三、实验内容把7000H的内容拆开,高位送7000H低位,低位送7002H低位,7001H、7002H 高位清零,把7000H、7001H的低位相拼后,送入7002H中。
单步运行到BP1,观察7000H 和A 单元中内容是否为68,单步运行到BP2,观察7001H 单元中内容是否为6,单步运行到BP3,观察7002H 单元中内容是否为8,若是,程序对,若不是,反复修改程序直到正确为止。
同样可调试拼字程序。
五、实验结果及分析(附上编写的程序、执行的截屏及分析)实验参考程序:拆字程序:ORG 30H ;程序入口地址OV DPTR,#7000HMOV A,#68HMOVX @DPTR, A ;给7000H赋初值MOVX A, @DPTR ;(7000H)送AANL A, #0F0H ;取(7000H)的高位送7001HSWAP AINC DPTRMOVX @DPTR, AMOV DPTR,#7000HMOVX A, @DPTR ;(7000H)送A ANL A, #0FH ;取(7000H)的高位送7001HMOV DPTR, #7002HMOVX @DPTR, A拼字实验:ORG 0000HLJMP MAINORG 0680HMAIN: MOV DPTR,#7000H;(7000H)送A,屏蔽高位MOV A,#06HMOVX @DPTR,AMOV DPTR,#7001HMOV A,#08HMOVX @DPTR,AMOV DPTR,#7000HMOVXA,@DPTR;交换高位,送A ANL A,#0FHSWAP AMOV R0,AINC DPTRMOVX A,@DPTRANL A,#0FHORL A,R0INC DPTRMOVX @DPTR,ASJMP $END实验图片:图1图2图3图4图5图6图7图8图9图10实验中主要的程序代码如上所示,该程序展示的是拆字的过程,在右下角的区域可以观察到先显示的是68,之后显示68 06,最后显示68 06 08,是首先将68送到7000H,再将7000H送到A中,接下来便要进行高低位的交换并屏蔽掉高位后送到7001H,最后屏蔽高位后送到7002H即完成了此次任务。
《微机原理与接口技术》课程实验报告
一、实验目的和要求
实验目的:掌握汇编语言设计和调试方式。
实验要求:通过本实验,掌握8051汇编程序设计以及仿真实验的流程及方法。
二、实验环境
DVCC单片机仿真实验系统独立工作以及连PC机。
三、实验内容及实施
【实验内容】把7000H的内容拆开,高位送7001H低位,低位送7002H低位。
7001H、7002H高位清零,一般本程序用于把数据送显示缓冲区使用。
【源程序】
【实验步骤】
(1)先用存储器读写方法将7000H单元置成34H。
(2)用单步、断点或连续执行程序的方法从起始地址0050H开始运行程序(输人0050H后按STEP为单步,按EXEC为连续)。
(3)按MON键或RESET键退出。
(4)检查7001H和7002H单元中的内容应为03H和04H
四、实验结果
五、实验讨论
用断点方式调试本程序的方法:把光标指向语句左边,然后单击,会出现一个符号。
同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
通过本次实验,对单片机的RAM和ROM的使用有了更加透彻的理解,熟悉了仿真实验系统的键盘操作以及基本仿真软件的使用,并且逐步掌握汇编语言设计和调试方式。
单片机实验3 拆字、拼字子程序设计拆字和拼字是人类阅读、语言学习和表达中的基本技能。
在这个实验中,我们将设计一个单片机程序,通过拆字和拼字的子程序来练习和提高汉字的识别和组词能力。
一、实验目的1. 加深对单片机中汇编语言的理解和掌握。
2. 熟悉单片机的输入、输出、延时等基本指令。
3. 实现汉字的拆字和拼字的子程序,提高汉字识别和组词能力。
二、实验器材1. 单片机开发板(AT89C52)2. 八位数码管3. 九键键盘4. 连接线5. 电脑、Keil C51集成开发环境三、实验内容A.数码管显示编写一个数码管驱动程序,通过按键输入一个数字,将其显示在数码管上。
数码管由8个LED组成,每个LED对应一个二进制位。
因此,我们需要将输入的数字转换为二进制数,并控制相应的LED显示。
B.拆字子程序编写一个拆字子程序,将输入的汉字拆成单个的汉字拼音。
汉字的拼音有一个对应的二进制编码,可参考GB2312中的表格。
在程序中,我们需要首先读取键盘输入的汉字,然后将汉字转换为相应的二进制代码,并将其存储在单片机中。
接着,我们需要将二进制代码分解成单个的拼音,并依次显示在数码管上。
四、程序设计在程序中,我们首先需要定义数码管所对应的输出端口和数码管的位数。
```;定义IO端口和数码管位数MOV P0,#0MOV P2,#0x01MOV DPTR,#TABLEMOVX A,DPTRMOV P2,#0x00MOV R0,#0x00MOV R1,#0x01MOV R2,#0x00MOV R3,#0x00MOV R4,#0x00MOV R5,#0x00MOV R6,#0x00MOV R7,#0x00```在键盘输入数字后,我们需要将其转换为二进制数,并存储在单片机的寄存器中。
对于一个单独的数字,我们可以用以下程序将其转换为二进制码:```;循环显示DISPLAY:MOV P0,#0xFFCLR CJNB R0,SKIP1MOV P0,#0xFESKIP1:RRC AJNB R1,SKIP2MOV P0,#0xFDSKIP2:RRC AJNB R2,SKIP3MOV P0,#0xFBSKIP3:RRC AJNB R3,SKIP4MOV P0,#0xF7SKIP4:RRC ADJNZ R5,DISPLAY```在将汉字转换为二进制编码之后,我们需要编写一个循环程序来分解二进制编码,并将每个拼音对应的二进制代码显示在数码管上。
一、实验目的1. 掌握微机拼字程序的基本设计方法。
2. 熟悉C语言编程环境,提高编程能力。
3. 培养逻辑思维能力和程序调试能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言三、实验内容1. 设计一个微机拼字程序,实现用户输入一个字符串,程序自动识别并输出该字符串的每个字的拼音。
2. 程序应具有以下功能:(1)输入字符串:用户通过键盘输入一个字符串。
(2)拼音识别:程序识别字符串中的每个字,并输出对应的拼音。
(3)拼音输出:将识别出的拼音以列表形式输出。
四、实验步骤1. 创建C语言项目打开Visual Studio 2019,创建一个C语言项目,命名为“微机拼字程序”。
2. 编写程序代码(1)定义字符串变量和拼音数组```cchar str[100]; // 用户输入的字符串char pinyin[100][10]; // 存储拼音的数组```(2)编写输入函数,获取用户输入的字符串```cvoid input_str(char str) {printf("请输入一个字符串:");scanf("%s", str);}```(3)编写拼音识别函数,实现字到拼音的转换```cvoid identify_pinyin(char str, char pinyin[][10]) {int i = 0, j = 0;while (str[i] != '\0') {if (str[i] >= 'a' && str[i] <= 'z') {pinyin[j][0] = str[i];pinyin[j][1] = '\0';j++;} else if (str[i] >= 'A' && str[i] <= 'Z') {pinyin[j][0] = str[i];pinyin[j][1] = '\0';j++;} else {// 根据实际情况,此处添加其他字到拼音的转换规则 }}}```(4)编写输出函数,将识别出的拼音以列表形式输出```cvoid output_pinyin(char pinyin[][10], int len) {printf("拼音列表:\n");for (int i = 0; i < len; i++) {printf("%s\n", pinyin[i]);}}```(5)编写主函数,实现程序的整体逻辑```cint main() {char str[100];char pinyin[100][10];int len = 0;input_str(str);identify_pinyin(str, pinyin);len = strlen(pinyin[0]); // 假设每个字对应的拼音长度相同 output_pinyin(pinyin, len);}```3. 编译并运行程序在Visual Studio 2019中编译并运行程序,测试程序功能。
单片机实验报告实验项目名称:拆字程序,拼字程序姓名:学号:一、实验目的1、掌握基本的51汇编程序书写,编译;2、熟悉51指令的运用;3、掌握内RAM,外RAM区域数据操作。
二、实验内容及要求将20H单元的二进制代码转化为ASCLL码,保存在21H,22H单元中;将7030H,7031H中的二进制代码压缩后存放于7032H中。
三、实验步骤(a )二进制代码转化为ASCLL 码 (b) 二进制代码压缩四、主要代码(1)二进制代码转化为ASCLL 码 ORG 0000H SJMP MAIN ORG 0030H MAIN: MOV A,20H ANL A,#0FHCJNE A,#10,NEXT1 NEXT1: JNC NEXT2 ADD A,#30HSJMP DONE1NEXT2: ADD A,#37HDONE1: MOV 22H,AMOV A,20HANL A,#0F0HSWAP ACJNE A,#10,NEXT3NEXT3: JNC NEXT4ADD A,#30HSJMP DONE2NEXT4: ADD A,#37HDONE2: MOV 21H,ASJMP $(2) 二进制代码压缩ORG 0100HMAIN: MOV DPTR,#7030HMOVX A,@DPTRANL A,#0FHSWAP AMOV B,AINC DPTRMOVX A,@DPTRANL A,#0FHORL A,BINC DPTRMOVX @DPTR,ASJMP $END五、实验结果分析及思考1.二进制代码转化为ASCLL码仿真结果:2.二进制代码压缩仿真结果:。
微处理器原理与应用实验日志
实验题目:
顺序程序设计:拆字和拼字
实验目的:
1、掌握顺序程序编写方法
2、掌握拆字和拼字方法
3、学会编写和调试程序的过程和方法
4、掌握C51编程方法。
实验要求:
1、阅读、运行并调试已给的程序;
2、模仿已给程序分别汇编程序和C程序完成拼字程序;
实验主要步骤:
1、启动计算机,进入Keil C51的集成开发环境;
2、根据已给程序分别编辑汇编程序和C程序;
3、编辑完成以后对程序进行编译,生成目标代码;
4、运行、调试目标代码和进行结果检查;
5、根据要求分别编写汇编程序和C程序;
6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;
7、修改内存单元中的内容在观察存储单元内容的变化;
实验结果:
汇编程序:
ORG 0000H
AJMP START
ORG 0100H
START: MOV A,30H
ANL A,#0FH
SW AP A
MOV 32H,A
MOV A,31H
ANL A,#0FH
ORL 32H,A
SJMP $
END
#include"reg51.h"
#include"absacc.h"
void main()
{
DBYTE[0x30]=0x12;
DBYTE[0x31]=0x34;
DBYTE[0x30]<<=4; //20
DBYTE[0x31]&=0x0f; //04
DBYTE[0x32]=DBYTE[0x30]|DBYTE[0x31];
}
心得体会:
在本次实验中,发现输入数据有两种方法,一种是在程序中直接赋值,另一种是直接双击0x0200这个单元,就可以对它赋值,最后运行结果一样,但后一种明显改动数据方便,这让我意识到了优化程序的重要性。
在第三个实验中,对用C语言编写的程序,不知道或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。
一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。