顺序程序设计:拆字和拼字

  • 格式:doc
  • 大小:60.50 KB
  • 文档页数:4

下载文档原格式

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

微处理器原理课实验日志

一、实验题目:顺序程序设计:拆字和拼字

二、实验结果

本次实验目的是为了掌握顺序程序的编写方法,掌握拆字和拼字的方法,学会编写和调试程序的过程和方法以及掌握C51编写方法。

实验一、实现拆字功能,阅读理解程序并完成程序的填空。最后运行程序,验证是否正确。程序如下:

ORG 0000H

AJMP START

ORG 0100H

START:

MOV DPTR,#0200H ;指定的字节

MOVX A,@DPTR

MOV B,A;数据暂存

SW AP A(1);A中数据高位和低位交换

ANL A,#0FH ;屏敝高位

INC DPTR

MOVX @DPTR,A

INC DPTR

MOV A,B

ANL A,#0FH (2)

MOVX @DPTR,A

LOOP: SJMP LOOP

END

运行程序,然后对X:0200H赋值,点击分步运行,就能观察到0201H、0202H值的变化。结果如下:

实验二、学习用C语言编写拆字程序,理解XBYTE,DBYTE等语句的含义。程序如下:

#include"reg51.h"

#include"absacc.h"

void main()

{

XBYTE[0x0200]=0x69;

XBYTE[0x0201]=XBYTE[0x0200];

XBYTE[0x0201]>>=4; ; 将0201H中的数右移4位

XBYTE[0x0202]=XBYTE[0x0200];

XBYTE[0x0202]&=0x0f;

}

运行结果如下:

实验三,拼写程序,题目为:分别编写汇编语言程序和C程序,把片内RAM30H 、31H两个字节的低位分别送入32H的高位和低位,

过程与拆字程序相反。

假设(30H)=12H, (31H)=34H,运行程序后(32H)=24H 第一、用汇编语言编写的程序如下:

ORG 0000H

AJMP START

ORG 0100H

START:

MOV 30H, #12H

MOV 31H, #34H

MOV A, 30H

ANL A, #0FH

SW AP A

MOV 32H, A

MOV A,31H

ANL A,#0FH

ORL 32H,A

LOOP: SJMP LOOP

END

运行结果如下:

第二、用C语言编写的程序:

#include"reg51.h"

#include"absacc.h"

void main()

{ DBYTE[0x30]=#0x12;

DBYTE[0x31]=#0x34;

DBYTE[0x32]=DBYTE[0x30];

DBYTE[0x32]&=0x0f;

DBYTE[0x32]<<=4;

DBYTE[0x31]&=0x0f;

DBYTE[0x32]|=DBYTE[0x31];

}

运行结果如下:

三、实验过程中的问题及解决方案

在本次实验中,遇到的问题是在第一个实验中不知道怎么把值69用汇编语句,实现对外部存储单元的赋值。最后在老师的讲解下,直接双击0x0200这个单元,就可以对它赋值,最后运行。

在第三个实验中,对用C语言编写的程序,不知道怎么或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。