微处理器实验报告顺序程序设计:拆字和拼字

合集下载

实验二拆字、拼字程序

实验二拆字、拼字程序

班级: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 拆字、拼字子程序设计

单片机实验3  拆字、拼字子程序设计

实验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 拆字、拼字子程序设计

单片机实验3 拆字、拼字子程序设计

单片机实验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 熟悉并使用传送类指令题3. 模仿test1.Asm的循环结构,编写多字节数据的传送程序,把内部RAM的30H--39H单元置为10H-19H,然后传送到外部RAM的0100H--0109H单元。

提示:(1)用寄存器作内部RAM指针,用DPTR作外部RAM指针。

(2)设置内部RAM的30H--39H单元的值为10H-19H:解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV R1,#10HMOV DPTR,#0100HMOV R2,#0AHLOOP:MOV A,@R1MOVX @DPTR,AINC R1INC DPTRDJNZ R2,LOOPNOPSJMP $END运行结果如下图所示:在memory1中,在Address 控件填上D:0x30,可查看内部RAM 30h单元开始的值,将30h-39h 置为10h-19h。

实验2:熟悉并使用算术逻辑操作类指令题2.编写程序,将6位压缩BCD码123456与6位BCD码567890相加,结果仍用BCD码表示。

第一组BCD码放在30H开始连续的内部存储器单元内,第二组BCD 码放在40H开始连续的内部存储器单元内,相加结果放在50H开始的连续的内部存储器单元内。

解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV 30H,#56HMOV 31H,#34HMOV 32H,#12HMOV 40H,#90HMOV 41H,#78HMOV 42H,#56HMOV R0,#30HMOV R1,#40HMOV R2,#03HMOV R3,#50H LOOP:MOV A,@R0ADD A,@R1DA AMOV @R1,AINC R0INC R1INC R3DJNZ R2,LOOP NOPSJMP $END运行结果如下:实验3:顺序程序设计:拆字和拼字题1 .拆字程序69H存放在片外RAM中0200H地址上。

拼字拆字实验报告

拼字拆字实验报告

一、实验目的1. 了解拼字拆字的基本概念和原理。

2. 掌握拼字拆字的方法和技巧。

3. 培养学生的观察力、思维力和动手能力。

二、实验内容1. 拼字:将给定的汉字拆分成若干部分,按照一定的顺序重新组合成新的汉字。

2. 拆字:将给定的汉字拆分成若干部分,分析每个部分的意义,从而理解整个汉字的含义。

三、实验步骤1. 准备实验材料:汉字卡片、铅笔、纸张等。

2. 将学生分成若干小组,每组选取一名组长。

3. 给每组发放一定数量的汉字卡片,要求学生在规定时间内完成拼字和拆字的任务。

4. 学生根据拼字规则,将汉字卡片上的汉字拆分成若干部分,重新组合成新的汉字。

5. 学生根据拆字规则,分析汉字卡片上的汉字,找出每个部分的意义,理解整个汉字的含义。

6. 学生将拼字和拆字的结果记录在纸张上。

7. 教师对学生的拼字和拆字结果进行批改和讲解。

8. 学生总结实验过程中的经验和教训。

四、实验结果与分析1. 实验结果在本次实验中,学生通过拼字拆字,掌握了以下汉字:(1)拼字:朋+明=梦,心+目=快,口+牛=吹,木+子=李等。

(2)拆字:明=日+月,快=忄+夬,吹=口+欠,李=木+子等。

2. 实验分析(1)拼字方面,学生在实验过程中表现出了较强的观察力和思维力。

通过观察汉字的结构,他们能够快速找到合适的部分进行组合,形成新的汉字。

(2)拆字方面,学生在分析汉字结构时,能够准确找出每个部分的意义,从而理解整个汉字的含义。

这表明学生的汉字基础较为扎实。

(3)在实验过程中,部分学生在拼字和拆字时出现了一些错误。

这主要原因是他们对汉字结构的认识不够深入,以及对拼字规则和拆字规则掌握不熟练。

五、实验结论1. 通过本次实验,学生掌握了拼字拆字的基本概念、方法和技巧。

2. 实验结果表明,拼字拆字是一种有效的汉字学习方式,有助于提高学生的汉字素养。

3. 在今后的教学中,教师应注重培养学生的观察力、思维力和动手能力,提高学生的汉字应用能力。

六、实验建议1. 教师在讲解拼字拆字时,应结合具体实例,让学生充分理解汉字的结构和意义。

实验二 拆字程序、拼字程序

实验二  拆字程序、拼字程序

单片机原理及其接口技术实验报告实验二:拆字程序、拼字程序学院:基础与信息工程学院专业:电子信息工程专业学号:姓名:日期:一.实验要求:将20H单元的二进制代码转化为ASCII码,保存在21H,22H 单元中;将7030H,7031H中的二进制代码压缩后存放于7032H中二.实验目的:1、掌握基本的51汇编程序书写、编译2、熟悉51指令的运用3、掌握内RAM,外RAM区域数据操作三.程序与流程图程序一:ROG 0000HSJMP MAINORG 0030HMAIN: MOV A,20HANL A,OFHCJNE A,#10,NEXT1NEXT1: JNC NEXT2ADD A,#30HSJMP DONENEXT2: ADD A,#37H DONE: MOV 21H,AMOV A,20HANL A,#0H0HSWAP ACJNE A,#10,NEXT3 NEXT3: JNC NEXT4ADD A,#30HSJMP DONE1 NEXT4: ADD A,#37H DONE1:MOV 22H,ASJMP $END程序二:ORG 0700H MAIN: MOV DPTR,#7030H MOVX A,@DPTRANL A,#0FHSWAP AMOV B,AINC DPTRMOVX A,@DPTRANL A,#0FHORL A,BINC DPTRMOVX @DPTR,ASJMP $END四.实验感受:我的感受是:1更加了解了汇编语言2单片机学习更加有目的性3学会了准备实验。

顺序程序设计实验报告

顺序程序设计实验报告

一、实验目的1. 理解顺序结构程序设计的基本概念和原理。

2. 掌握顺序结构程序设计的基本方法和步骤。

3. 通过实际编程,提高程序设计能力和逻辑思维能力。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验内容本次实验主要涉及顺序结构程序设计,包括以下内容:1. 输入输出操作2. 数据类型和变量3. 运算符和表达式4. 简单算法实现四、实验步骤1. 创建一个新的C++项目,命名为“顺序程序设计实验”。

2. 在项目中创建一个名为“main.cpp”的源文件。

3. 编写以下程序:```cpp#include <iostream>using namespace std;int main() {// 输入输出操作int a, b;cout << "请输入两个整数:" << endl;cin >> a >> b;cout << "第一个整数为:" << a << endl; cout << "第二个整数为:" << b << endl; // 数据类型和变量int sum = a + b;float average = (a + b) / 2.0;char grade = 'A';// 运算符和表达式int max = (a > b) ? a : b;int min = (a < b) ? a : b;// 简单算法实现if (sum > 10) {cout << "和大于10" << endl;} else {cout << "和小于等于10" << endl;}cout << "平均数为:" << average << endl; cout << "最大值为:" << max << endl;cout << "最小值为:" << min << endl;cout << "成绩为:" << grade << endl;return 0;}```4. 编译并运行程序,观察结果。

MCS-51单片机实验4-1拆字与拼字程序

MCS-51单片机实验4-1拆字与拼字程序

A只CC是BCD 码,每个
数字不会超过0808039H,可
2以0不H 用屏蔽0,8直H 接相
加,实验中的程序,
21H 03H
适合0至F所有十六进
2制2数H 的拆解8与3拼H合。
B
0003HH
实验一、拆字与拼字程序
【实验目的】
掌握顺序结构程序设计方法 掌握数字的拆解与拼合方法(含BCD码)
【接线方式】
暂无
实验一、拆字与拼字程序
【实验内容及要求】
编写程序,实现以下功能 1、将片内RAM的20H内容拆开,高位送21H,低 位送22H。 编写程序, 2、将20H的低位、21H的低位送22H的高位、低 位。
【实验流开程始图】
(20H)送A,
A内数据高低 四位交换
屏蔽高四位保 留低四位
A送21H
(20H)送A 屏蔽高四位保
留低四位
A送22H
结束
开始 (20H)送
A, A内数据屏蔽高四
位保留低四位 A内数据高低
四位交换
A送B
(21H)送A
屏蔽A高四位 保留低四位
A加B送A
A加B送A
结束
【程序代码及运行结果 拆字程序】
ORG 0000H MOV A,20H
ACC
SWAP A
ANL A,#0FH MOV 21H,
20H
A MOV A,20H
21H
ANL A,#0FH
22H
MOV 22H,A
803388HH
83H
08H 03H
SJMP $
【程序代码及运行结果 拼字程序】
ORG
0000H
MOV A,20H
ANL A,#0FH

微机接口技术

微机接口技术

成都理工大学核技术与自动化工程学院实验报告课程名称:微机原理与接口技术姓名:李文国学号: 200706080109专业:辐射防护与环境工程学期: 2009-2010(2)任课教师:方方2010年4月28日软件实验(2)名称:拆字和拼字程序实验人员:李文国指导老师:方方等实验地点: H201 实验时间: 2010.4.7一、实验目的进一步熟悉汇编语言指令和汇编语言设计方法及调试方法。

二、实验设备EMU8086编程仿真软件三、实验内容本次实验分为拆字和拼字两个独立的程序。

拆字程序:将21000H单元内容拆开,高4位送21001H单元的低位,低4位送21002H单元的低位,21001H单元和21002H单元高位清零。

拼字程序:将21000H、21001H单元的低4位分别送入21002H单元的高低位。

四、实验步骤在21000H-21002H单元预置任意数,然后在EMU8086环境下,完成源程序的编制,编译通过后调入仿真器运行,最后查看21000H-21002H单元内容的变换情况。

在调试程序时,可以运用单步或断点方式运行程序。

需要注意,运行程序之前需对源数据存储单元预制数值。

对某一单元预置数可以通过程序赋值或直接双击该内存单元进行修改的2种方法实现。

五、程序流程图六、程序及运行结果拆字程序:MOV AX,2100HMOV DS,AXMOV BX,0HMOV AL,65H ;通过程序赋值MOV [BX],ALMOV DL,ALAND AL,0F0HSAR AL,4INC BXMOV [BX],ALMOV AL,DLAND AL,0FHINC BXMOV [BX],AL拼字程序:MOV AX,2100HMOV DS,AXMOV BX,0HMOV AL,23HMOV [BX],ALMOV AL,67HMOV [BX+1],ALMOV AH,[BX]AND AH,0FHSHL AH,4MOV AL,[BX+1]AND AL,0FHOR AL,AHMOV [BX+2],AL图一拆字结果图二拼字结果注释:如果图片无法显示完整,请将鼠标移到图上点击右键,点击“文字环绕---四周型环绕”即可。

实验报告--拆字

实验报告--拆字

实验报告--拆字微机原理实验报告一.实验内容拆字实验。

把片外7000H单元的内容拆开,高位送7001H单元的低位,低位送7002H 单元的低位。

7001H、7002H高位清零。

在实际应用中,本程序一般用于把数据送显示缓冲区时使用。

二.实验时间2014年12月9日三.实验过程(1)画程序框图(2)根据程序框图写实验程序试验程序如下:ORG 0050HMOV DPTR,#7000H;MOVX A,@DPTR;MOV B,A;SWAP A;ANL A,#0FH;INC DPTR;MOVX @DPTR,A;MOV A,B;INC DPTR;ANL A,#0FH;MOVX @DPTR,A;END(3)调试操作1.在试验机上按下复位,PCDBG键。

2.在DVCC试验系统上点击联接,调试,解决程序中出现的错误。

3.在试验机上按下复位,输入地址7000H,按下MEM,输入数据34H,再按MEM进行保存。

4.根据提示点击动态调试里的连续单步运行程序5.在试验机上或在窗口里的显示外部数据来检查7001H和7002H中是否分别为03H和04H。

四.附录(程序中出现的错误及改错方法)1.开始程序如下:ORG 0050H;MOV DPTR,#7000H;MOVX A,@DPTR;SWAP A;ANL A,#0FH;INC DPTR;MOVX @DPTR,A;DEC DPTR;MOVX A,@DPTR;INC DPTR;INC DPTR;ANL A,#0FH;MOV @DPTR,A;END开始时想通过DPTR的移动来实现取存不同的数据,但红色部分出现‘syntax error’;查算术运算指令表知,并不存在DEC DPTR指令,故修改,将放在A里面存放的#7000H先复制在B中进行保存,程序如三.(2)所示。

2.调试三.(2)时在END指令行出现“beyond body”错误,在英文状态下重新输入END 错误消失。

五.实验分工1.编写程序:丁娜2.程序调试:潘丽伊3.撰写报告:丁娜、潘丽伊。

实验报告格式1-拆字、拼字实验

实验报告格式1-拆字、拼字实验

单片机原理及应用实验报告实验项目名称:拆字、拼字实验实验日期:2012年11月26日实验成绩:实验评定标准:1)实验结果是否正确A()B()C()2)实验结果分析A()B()C()3)实验报告是否按照规定格式A()B()C()一、实验目的掌握汇编语言的设计和调试方法,掌握拆字和拼字的程序编写方法。

二、实验器材PC一台keil软件一套三、实验内容把7000H的内容拆开,高位送到7001H低位,低位送7002H低位,7001H、7002H高位清零,把7000H、7001H的低位相拼后,送入7002H中。

拆字程序如下:MOV DPTR,#7000HMOV A,#68HMOVX @DPTR,AMOVX A,@DPTRANL A,#0F0HSW AP AINC DPTRMOVX @DPTR,AMOV DPTR,#7000HMOVX A,@DPTRANL A,#0FHMOV DPTR,#7002H MOVX @DPTR,A拼字程序:LJMP MAINMAIN: MOV 50H,#20H MOV 51H,#16HMOV 52H,#10HMOV 53H,#2AHMOV 54H,#29HMOV 55H,#06HMOV 56H,#1AHMOV 57H,#0EHMOV 58H,#0ACHMOV 59H,#03HMOV 60H,#01HMOV R0,#50HMOV R3,#9HLP0: CLR 7FHMOV A,R3MOV R2,AMOV R0,#50HLP1:MOV 20H,@R0 MOV A,@R0INC R0MOV 21H,@R0CLR CSUBB A,21HJC LP2MOV @R0,20HDEC R0MOV @R0,21HINC R0SETB 7FHLP2:DJNZ R2,LP1JNB 7FH,LP3DJNZ R3,LP0LP3:SJMP $END四、实验结果拆字实验结果:拼字实验结果五、实验结果分析拆字实验调试程序时,单步运行到BP1,观察到7000H和A单元中内容是68,单步运行到BP2,观察到7001H单元中内容为6,单步运行到BP3,观察到内容为8。

微机实验指导

微机实验指导

实验一拆字、拼字程序一、实验目的1. 掌握屏蔽一个字节中的高四位或低四位内容的方法,熟悉移位指令的用法。

2.掌握汇编语言设计和调试方法。

二、实验条件与内容实验条件:1. PⅡ以上的PC计算机,及操作系统Windows XP。

2. Masm for Windows 集成实验环境 V6.0版本。

实验内容:(1)把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H 的高位清零,一般本程序用于把数据送显示缓冲区时用。

(2)把4000H、4001H的低位分别送入4002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。

三、程序框图拆字程序框图拼字程序框图四、实验过程与步骤在汇编语言环境下分别将拆字程序和拼字程序进行录入,并对程序进行编译。

在DEBUG下对程序分别进行调试:(1)在程序运行前,检查4000H~4002H中内容情况。

(2)用连续或单步方式运行程序,之后检查4000H~4002H内容变化情况。

思考题1. MOV指令在应用时应注意哪些事项?2. 单字和双字在存储器中是怎样存放的?请举例进行说明。

拆字程序清单:CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV BX,4000H ;把地址单元4000H给BX寄存器MOV [BX],5BH ;把所要拆字内容置为5BHMOV AL,[BX] ;把4000H单元的内容给ALMOV AH,AL ;再4000H单元的内容给AHMOV CL,04 ;设置移位次数为4SHR AH,CL ;AH的内容右移4位ADD BX,01 (或INC BX) ;地址单元加1MOV [BX],AH ;把高位字送给4001H单元AND AL,0FH ;屏蔽掉AL中的高四位ADD BX,01 (或INC BX) ;地址单元加1MOV [BX],AL ;把低位字送给4002H单元HLTCODES ENDS ;程序结束END START此程序运行的结果是:(用D DS:4000)13C9:4000 5B 05 0B 00 00……拼字程序清单:CODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATASMOV DS,AXMOV BX,4000H ;把地址单元4000H给BX寄存器 MOV [BX],0F6H ;把4000H单元所要拼的字置为F6H MOV [BX+1],28H ;把4001H单元所要拼的字置为28H MOV AH,[BX] ;把4000H单元的内容给AHMOV AL,[BX+1] ;把4001H单元的内容给ALAND AL,0FH ;屏蔽掉AL中的高四位MOV CL,4 ;设置移位次数为4SHL AL,CL ;AL的内容左移4位AND AH,0FH ;屏蔽掉AH中的高四位OR AL,AH ;进行拼字INC BX ;地址单元加1MOV [BX],AL ;将拼好的字保存在4002H单元HLTCODES ENDS ;程序结束END START此程序运行的结果是:(用D DS:4000)13C9:4000 F6 28 68 00 00……思考题1. MOV指令在应用时应注意哪些事项?答:①MOV指令的目的操作数不允许用立即数方式;②MOV指令的目的操作数不允许用CS寄存器;③除源操作数为立即数的情况外,两个操作数中必须有一个是寄存器;④不允许MOV指令在两个存储单元之间直接传递数据;⑤不允许在两个段寄存器之间直接传递信息;⑥MOV指令使用操作数为段寄存器、或地址单元不能为非法数;⑦MOV指令不影响标志寄存器FLAG中的标志位。

实验四 拆字

实验四  拆字

实验四拆字、拼字实验一、实验目的掌握拆字和拼字的程序编写方法。

二、实验原理及实验内容拆字程序:把7000H的内容拆开,高位送7001H地址的低位,低位送7002H地址的低位,7001H、7002H、中。

图7-3实验参考流程图调试方法:单步运行到BP1,观察7000H和A单元中内容是否为68,单步运行到BP2,观察7001H单元中内容是否为6,单步运行到BP3,观察7002H单元中内容是否为8,若是,程序对,若不是,反复修改程序直到正确为止。

同样,可调试拼字程序。

三、参考程序汇编程序:(拆字程序)ORG 0000HAJMP MAINMAIN: MOV SP,#60H /*设置堆栈指针为RAM地址60H*/MOV DPTR,#7000H /*设置存放数据的地址*/MOV A,#68MOVX @DPTR,A /*68送7000H单元*/MOVX A,@DPTRINC DPTRPUSH Acc /*将68压栈*/SW AP A /*高低位交换*/ANL A,#0FH /*屏蔽高四位*/MOVX @DPTR,A /*8送7001H的低四位*/INC DPTRPOP Acc /*68出栈*/ANL A,#0FH /*屏蔽高四位*/MOVX @DPTR,A /*6送7002H的低四位*/END(拼字程序)ORG 0000HAJMP MAINMAIN: MOV DPTR,#7000H /*设置存放数据的地址*/MOV A,#56MOVX @DPTR,A /*置7000H内容为56*/MOVX A,@DPTRSW AP A /*高低位交换*/ANL A,#0F0H /*屏蔽低四位*/MOV R1,AMOV B,R1INC DPTRMOV A,#98MOVX @DPTR,A /*置7000H内容为98*/MOVX A,@DPTRANL A,#0FH /*屏蔽高四位*/MOV R2,BORL A,R2INC DPTRMOVX @DPTR,AENDC语言程序:#include<reg51.h>#include<stdio.h>#include<absacc.h>#include<intrins.h>main(){//拆字程序XBYTE[0x7000] = 0x34;XBYTE[0x7001] = XBYTE[0x7000] & 0x0f; //取低位赋值给0x7001地址XBYTE[0x7002] = XBYTE[0x7000]>>4; //取高位赋值给0x7002地址//拼字程序XBYTE[0x7000] = 0x34;XBYTE[0x7001] = 0x56;//0x7000地址的低位作为0x7002的高位,0x7001地址的低位作为0x7002的低位XBYTE[0x7002] = ((XBYTE[0x7000] & 0x0f)<<4) + (XBYTE[0x7001] & 0x0f);while(1){;}}四、实验仪器和设备Keil软件;五、实验结果和数据分析1、如何将多个单元中的内容拆开?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微处理器原理与应用实验日志
实验题目:
顺序程序设计:拆字和拼字
实验目的:
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语言编写的程序,不知道或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。

一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。

相关文档
最新文档