微处理器实验报告

上传人:M****1 文档编号:511927812 上传时间:2022-09-30 格式:DOCX 页数:14 大小:532.49KB
返回 下载 相关 举报
微处理器实验报告_第1页
第1页 / 共14页
微处理器实验报告_第2页
第2页 / 共14页
微处理器实验报告_第3页
第3页 / 共14页
微处理器实验报告_第4页
第4页 / 共14页
微处理器实验报告_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《微处理器实验报告》由会员分享,可在线阅读,更多相关《微处理器实验报告(14页珍藏版)》请在金锄头文库上搜索。

1、微处理器实验报告实验 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 DPT

2、RDJNZ R2,LOOPNOPSJMP $END运行结果如下图所示:在memoryl中,在Address控件填上D:0x30,可查看内部RAM 30h单元开始的值,将30h-39h置为10h-19h。:OxOluD:0x0115D:0x90:0:D:0XC0:0:D:0xD8:8:说1 Call Stack |犀UxOlOaC:0x010E 121D. 00006050S Project | 旨 Registers |:OxOlOEC:0x0110C:0x0111C:0x0112C:0x0113C:0x011406MOV R2f #0AH07LOOP:MOV A, R108MOVX DPTR

3、,A09INC R110INC DPTR11DJNZ R2,L00F12NOPSl3SJMP $L3.asmAddress:D:0x30:0:D:0x48:8:D:0x60:0:D:0x78:8:实验2:熟悉并使用算术逻辑操作类指令 题 2.编写程序,将 6 位压缩 BCD 码 123456 与 6 位 BCD 码 567890 相加,结果仍用 BCD 码表示。第一组 BCD 码放在 30H 开始连续的内部存储器单元内,第二组 BCD 码放在 40H 开始连续的内部存储器单元内,相加结果放在 50H 开始的连续的内部 存储器单元内。解:程序如下:ORG 0000HAJMP STARTORG 0

4、100HSTART:MOV 30H,#56HMOV 31H,#34HMOV 32H,#12HMOV 40H,#90HMOV 41H,#78HMOV 42H,#56HMOV R0,#30HMOV R1,#40HMOV R2,#03HMOV R3,#50HLOOP:MOV A,R0ADD A,R1DA AMOV R1,AINC R0INC R1INC R3DJNZ R2,LOOPNOPSJMP $END运行结果如下:实验3:顺序程序设计:拆字和拼字题 1 . 拆字程序69H存放在片外RAM中0200H地址上。编写程序,将69H拆开,高位6送0201H地址的低位,低位9送0202H地址的低位;020

5、1H、0202H地址的高位清零,如图所示:0200H0201H0202H06 H09 H解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV DPTR,#0200HMOVX A,DPTRMOV B,ASWAP AANL A,#0FHINC DPTRMOVX DPTR,AINC DPTRMOV A,BANL A,#0FHMOVX DPTR,ALOOP: SJMP LOOPEND运行结果如下:File Edit View Project Flash Debug Peripherals Tools SVCS Window 旦 elpA,#OxOFDPTRfALOO

6、P(C:OH1)Command早 x Mlemory 10x0202C:0x01112500001250|c: axaiac 14:|c:OxO10E 15:|C: 0x0110 16:Ic: 0x0111MOVA,#0FHANLMOVX DPTRrAMOVX07MOV BrAOSSWAP A09ANL Ar#0FH10INC DPTR11MOVX DPTR,A12INC DPTR13MOV AfB14ANL Ar#0FB15MOVX DPTR,A16LOOP: SJMP LOOPRunning with Code Size Limit: 2KLoad C: WUsexsWdellWDeskt

7、opW新建文件夹Wtt6n0x000200:69060900000000000000000x000217:00000000000000000000000x00022E:00000000000000000000000x000245:0000000000000000000000OxOO025C:00000000000000000000000x000273:00000000000000000000000x0002SA:00000000000000000000000X0002A1:0000000000000000000000Address: |X:(k0200题2.拼字程序分别编写汇编语言程序和C程序

8、,把片内RAM30H、31H两个字节的低位分别 送入 32H 的高位和低位,过程与拆字程序相反。假设(30H) =12H, (31H)=34H,运行程序后(32H) =24H提示:使用逻辑或ORL指令,例如10H和02H相或,结果为12H解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV A,30HANL A,#0FHSWAP AMOV B,31HANL B,#0FHORL A,BMOV 32H,ALOOP: SJMP LOOPEND运行结果如下:该程序的C51程序如下:#include#includevoid main()DBYTE0x30=0x12;D

9、BYTE0x31=0x34;DBYTE0x030&=0x0f;DBYTE0x030=4;DBYTE0x031&=0x0f;DBYTE0x32 = DBYTE0x030+DBYTE0x031;运行结果如下:File Edit View Project Flash Debug Peripherals Tools SVCS Window Help手 /i /:囱:0X0400xOT xOOOO C:0x0400 4120.00020600:0x0401:0x0402:0x0403:0x0404:0x0405:0x040:0x0407C:0x0408C:0x0409Address: |DD:0x30:

10、0D:0x48:8D:0x60:0D:0x78:8D:0x90:0D:0xA8:8D:OxCO:0 D:0xD8:8曲 Call Stack | 窟实验 4:分支和循环程序设计题 1. 分支程序设计:(1)有两个 8 位无符号数 NA、NB 分别存放在内部 RAM 的 40H,41H 单元, 当NA=NB时将该单元置Oxff。源程序如下。请画出该程序流程图,并比较汇编语言和 C51 程序编写的不同。汇编语言程序:开始ORG 0000HORG 0100HSTART:MOVA ,40HCJNEA, 41H, LOOP1AJMPLOOP2LOOP1:JC LOOP3LOOP2:MOV42H, #0F

11、FHAJMPLOOPLOOP3 :MOV42H,#88HAJMP STARTLOOP:40卄 NA41* NB(42H)0X88(42H) jOXFFAJMP LOOPENDC51 程序如下: #include #include void main()unsigned char na,nb,f;na=DBYTE0x0040; nb=DBYTE0x0041; if(nanb) f=0x88 ;else f=0xff;DBYTE0x0042=f;解:流程图如上。整体上看,汇编程序使用了多重循环,而C程序只应用了选择结构语句,显得更加简洁。(2)修改上汇编语言程序,实现两个16位无符号数的比较:当N

12、A=NB时将该单元置Oxff。NA、NB分 别存放在内部RAM的40H, 41H及50H, 51H单元。解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV A ,40HCJNE A, 41H, LOOP1AJMP LOOP2LOOP1:JC LOOP3LOOP2:MOV 42H, #0FFHAJMP LOOPLOOP3 :MOV 42H,#88HLOOP:AJMP LOOPEND运行结果如下:题 2. 循环程序设计(1)在片内 RAM 的 10H 单元存放一个 8 位无符号二进制数,要求将其每一位 转换成相应的ASCII码,并以高位在前,低位在后的顺序依次存放到片内RAM以 11H 单元为首的连续单元中,编制相应的程序。分析:用带进位的循环左移指令RLC,通过对C标志的判断,可知该位为1还是0。解:该程序的 C51 程序为:#includereg51.h#includeabsacc.hvoid main()int j;unsigned char i;unsigned char point=0x11; for(i=0x01,j=0; j 8; i=1,j+) if(DBYTE0x10&i)DBYTEpoint = 31;elseDBYTEpoint = 30;point+;运行结果如下:Address:Symbols

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号