预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《微处理器原理与应用》实验报告 实验四 一、实验名称: 分支和循环程序设计 二、实验目的: 1、掌握分支程序编写方法 2、掌握循环程序设计的方法和技巧 3、学习程序调试的基本过程和方法 三、实验内容: 1.分支程序设计: (1)有两个8位无符号数NA、NB分别存放在内部RAM的40H,41H单元,当NA<NB时,将内部RAM的42H单元置为0x88;当NA>=NB时将该单元置0xff。源程序如下: 汇编语言程序: ORG0000H AJMPSTART ORG0100H START: MOVA,40H//把(40H)中的值赋给累加器A CJNEA,41H,LOOP1//判断累加器A与41H中数。如果A=(41H),则顺序执行,如果A>=(41H),则Cy=0,否则Cy=1。如果A<(41H),则执行跳转语句LOOP1。 AJMPLOOP2//跳转到LOOP2 LOOP1: JCLOOP3//如果Cy=0,顺序执行,如果Cy=1,跳转到LOOP3 LOOP2: MOV42H,#0FFH//(42H)中赋值0xff AJMPLOOP//跳转到LOOP LOOP3: MOV42H,#88H//(42H)中赋值0x88 LOOP: AJMPLOOP END C51程序如下: #include<reg51.h>#include<absacc.h>voidmain(){unsignedcharna,nb,f;na=DBYTE[0x0040];//把(0x0040)中的数赋给nanb=DBYTE[0x0041];//把(0x0041)中的数赋给nb if(na<nb)f=0x88;//判断大小, elsef=0xff; DBYTE[0x0042]=f;//给(0x0042)赋值f } (2)修改上汇编语言程序,实现两个16位无符号数的比较:当NA<NB时,将内部RAM的42H单元置为0x88;否则,当NA>=NB时将该单元置0xff。NA、NB分别存放在内部RAM的40H,41H及50H,51H单元。 提示:MCS-51指令系统没有16位比较指令,只能使用8位比较指令,于是应先比较两数的高8位,若NA的高8位小于NB的高8位,则说明NA<NB;将内部RAM的42H单元置为0x88。若NA高8位大于NB的高8位,则说明NA>NB;将42H单元置0xff。若NA的高8位等于NB的高8位,则再比较两者的低8位,方法同上(当NA=NB时,也将42H单元置0xff)。 2.循环程序设计 (1)在片内RAM的10H单元存放一个8位无符号二进制数,要求将其每一位转换成相应的ASCII码,并以高位在前,低位在后的顺序依次存放到片内RAM以11H单元为首的连续单元中,编制相应的程序。 分析:用带进位的循环左移指令RLC,通过对C标志的判断,可知该位为1还是0。 ORG0000H AJMPSTART ORG0100H START: MOVR2,#08H//R2中赋值08H,控制八位二进制数的转换 MOVR0,#10H//R0中赋值(10H)这个地址, MOVA,@R0//把地址(10H)中的数送到累加器A中 INCR0//R0中的地址变量加一 XUNHUAN: RLCA//带标志位Cy左移一位 JCLOOP1//判断标志位,如果Cy=0,顺序执行,如果Cy=1,跳转到LOOP1 MOV@R0,#30H//对R0中的地址变量赋值 AJMPLOOP2 LOOP1: MOV @R0,#31H//对R0中的地址变量赋值 LOOP2: INCR0//R0中的地址变量加一 DJNZR2,XUNHUAN//判断R2-1!=0时跳转到XUNHUAN LOOP:SJMPLOOP END (2)编写该程序的C51程序。 提示:要判断一个字节中第i位(i=7-0)的值是0或1,可用第i位值为1的字节数与之按位相与,若结果为0,表明该位为0,反之为1。例如:数0x82,即10000010,要判断第7位的值,可将0x82与0x80(即10000000,第7位为1)按位相与,结果不为0,所以0x82的第7位值为1。. 要在片内RAM0x11地址连续存放转换后的ASCII码,可定义一个指向无符号单字节数的指针,将该指针的初值设为0x11,后在循环体内加1即可。 四、实验步骤: 1、分支程序的设计 阅读理解源程序的汇编语言代码和C语言代码。 在理解了8位数据的大小比较的基础上,编写汇编程序和C语言程序对16位的数据的大小进行比较。 2、循环程序的设计 (1)对一个片内的地址中的8位二进制数,转换成ACSII码,并依次存放在一个连续的地址单元中。阅读理解这个汇编