51汇编程序练习题.doc

上传人:飞****2 文档编号:60091088 上传时间:2022-11-13 格式:DOC 页数:15 大小:589KB
返回 下载 相关 举报
51汇编程序练习题.doc_第1页
第1页 / 共15页
51汇编程序练习题.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《51汇编程序练习题.doc》由会员分享,可在线阅读,更多相关《51汇编程序练习题.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、单片机汇编程序设计练习一、存储器之间的数据传送1、编程实现将单片机内部RAM60H开始的连续32个单元置为FFH。 ORG 0000H MOV R0, #60H MOV R7, #20HLOOP: MOV A,R0 MOV A, #0FFH MOV R0, A INC R0 DJNZ R7, LOOP SJMP $ END2、编程实现将内部RAM30H开始的连续16个数传送到内部RAM50H开始的连续单元中。 ORG 0000H MOV R0, #30H MOV R1, #50H MOV R7, #10H LOOP: MOV A,R0 MOV R1, A INC R0 INC R1 DJNZ

2、R7, LOOP SJMP $ END3、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,数据块的长度为32个字节。ORG 0000HMOV R0,#30HMOV DPTR,#2000HMOV R7,#20HLOOP:MOVX A,DPTRMOV R0,AINC R0INC DPTRDJNZ R7,LOOPSJMP $END4、编程实现将单片机内部RAM30H为首地址的数据块传送到外部RAM2000H开始的单元中,数据块的长度存放于内部RAM的20H单元。ORG 0000HMOV R0,#30HMOV DPTR,#2000HMOV R7,20HLO

3、OP:MOV A,R0MOVX DPTR,AINC R0INC DPTRDJNZ R7,LOOPSJMP $END5、编程实现将单片机外部RAM2000H为首地址的数据块传送到单片机内部RAM30H开始的单元中,直到数据内容为0DH时停止传送。ORG 0000HMOV R0,#30HMOV DPTR,#2000HABC:MOVX A,DPTRCJNE A,#0DH,LOOPSJMP $LOOP:MOV R0,AINC R0INC DPTRSJMP ABCEND6、编程实现将ROM1000H地址的内容传送到内部RAM的25H单元。ORG 0000HMOV DPTR,#1000HMOV A,#00

4、HMOVC A,A+DPTRMOV 25H,ASJMP $END7、编程实现将ROM2000H开始的连续10个地址的内容传送到内部RAM的25H开始的单元。ORG 0000HMOV DPTR,#1000HMOV R0,#25HMOV R7,#0AHLOOP:MOV A,#00HMOVC A,A+DPTRMOV R0,AINC DPTRINC RDJNZ R7,LOOPSJMP $END8、编程实现将ROM1000H开始的连续100个地址的内容传送到外部RAM2000H开始的连续单元中。 ORG 0000H MOV DPTR,#1000H MOV R2,#20H MOV R3,#00H MOV

5、R7,#100LOOP: MOV A,#00H MOVC A,A+DPTR INC DPTR PUSH DPH PUSH DPL MOV DPH,R2 MOV DPL,R3 MOVX DPTR,A INC DPTR MOV R2,DPH MOV R3,DPL POP DPL POP DPH DJNZ R7,LOOP SJMP $ END二、查表程序设计1、编写查表程序,要查表的数据存放在R7中,其范围为09。编程查其平方值,并存放于40H。ORG 0000HMOV A,R7MOV DPTR,#2000HMOVC A,A+DPTRMOV 40H,A SJMP $ORG 2000HDB 00H,0

6、1H,04H,09H,10H,25DB 36,49,64,81END2、编写查表程序,要查表的数据存放在R7中,其范围为09。编程查其立方值,并存放于R6。ORG 0000HMOV R7,#09HMOV A,R7RL AMOV DPTR,#2000HMOVC A,A+DPTRMOV R6,AMOV A,R7RL AINC AMOVC A,A+DPTRMOV R5,A SJMP $ORG 2000HDB 00H,00H,00H,01H,00H,08H,00H,1BH,00H,40H,00H,7DHDB 00H,0D8H,01H,57H,02H,00H,02H,0D9HEND3、单片机外部ROM

7、TAB1地址开始存放一组ASCII码表,试用查表方法,将R2的内容(范围为0F)转换为与其对应的ASCII码,并从P1口输出。ORG 0000HTAB1 EQU 2000HMOV A,R2MOV DPTR,#TAB1MOVC A,A+DPTRMOV P1,AORG 2000H DB 30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HEND4、使用8051的P1口作为段控驱动共阳LED数码管,硬件连接如图。编程实现将8051 R7单元内容(在00H-09H之间)显示在数码管上。00H-09H的共阳字形代码如下表所示。(

8、60H)00H01H02H03H04H05H06H07H08H09H字形代码C0HF9HA4HB0H99H92H82HF8H80H90HORG 0000HMOV A,R7MOV DPTR,#2000HMOVC A,A+DPTRMOV P1,AORG 2000H DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND三、多字节无符号数的加减法1、编一个三字节无符号数的减法程序。被减数存放在内部RAM的30H开始的连续三个单元中(高位在高地址),减数存放在内部RAM的40H开始的连续三个单元中(高位在高地址),请将差存放在内部RAM的50H开始的连续三

9、个单元中(高位在高地址),借位存放在01H位地址ORG 0000HMOV R0,#30HMOV R1,#40HMOV R7,#03HCLR CLOOP:MOV A,R1SUBB A,R0MOV R0,AINC R0INC R1DJNZ R7,LOOPMOV 50H,30HMOV 51H,31HMOV 52H,32HMOV 01H,CSJMP $END2、编一个四字节无符号数的加法程序。被加数存放在内部RAM的25H开始的连续四个单元中(高位在高地址),加数存放在内部RAM的55H开始的连续四个单元中(高位在高地址),请将和存放在内部RAM的25H开始的连续四个单元中(高位在高地址),进位存放2

10、9H字节地址中。ORG 0000HMOV R0,#25HMOV R1,#55HMOV R7,#04HCLR CLOOP:MOV A,R1ADDC A,R0MOV R0,AINC R0INC R1DJNZ R7,LOOPMOV A,#00HADDC A,#00HMOV 29H,ASJMP $END3、编一个N字节无符号数的加法程序。被加数存放在内部RAM的符号地址AAA开始的连续单元中(高位在低地址),加数存放在内部RAM的符号地址BBB开始的连续单元中(高位在低地址),请将和存放在内部RAM的AAA开始的连续单元中,进位存放符号地址JWEI字节。ORG 0000HAAA EQU 4FHBBB

11、EQU 6FHN EQU 3JWEI EQU 00HMOV R0,#AAAMOV R1,#BBBMOV R7,#NCLR CLOOP:MOV A,R1ADDC A,R0MOV R0,ADEC R0DEC R1DJNZ R7,LOOPMOV A,#00HADDC A,#00HMOV JWEI,ASJMP $END四、多路散转1、请编程实现根据A的值进行多路散转的程序。即当A=0时,调用PRO0子程序;当A=1时,调用PRO1子程序,当A=10时,调用PRO10子程序。ORG 0000HMOV A,00HRL AMOV DPTR,#TABJMP A+DPTRTAB:AJMP PRO0AJMP PR

12、O1AJMP PRO2AJMP PRO3AJMP PRO102、请编程实现根据R7 的值进行128路散转的程序。即当(R7)=0时,调用CHULI0子程序;当(R7)=1时,调用CHULI1子程序,当A=128时,调用CHULI128子程序。五、软件定时程序设计计算下面程序的延时时间:1、 MOV R6,#TIME 1 LOOP:NOP 1 NOP 1 DJNZ R6,LOOP 2 计算当TIME=0、1、2、255时的延时时间TIME=0; T=(1+1+2)*256+1=TIME=1: T=1+1+2+1=TIME=2:T=(1+1+2)*2+1=TIME=255:T=(1+1+2)*25

13、5+1=2、 MOV R7,#TIME1 1LOOP0:MOV R6,#TIME2 1 LOOP1:NOP 1 NOP 1 DJNZ R6,LOOP1 2 DJNZ R7,LOOP0 2六、数据检索程序设计1、在内RAM20H3FH地址的32个单元中,存放一批数据,试检索是否有与R0寄存器内容相等的数,若检索成功,将该数据地址存放在R1,否则将FFH存放在R1中。ORG 0000HMOV R1,#20HMOV R7,#20HMOV R0,#21H MOV 10H,R0LOOP1:MOV A,R1CJNE A,10H,LOOPMOV R1,ASJMP $LOOP:INC R1 DJNZ R7,L

14、OOP1MOV R1,#0FFHSJMP $END2、在内RAM20H29H地址的10个单元中,存放一批数据,试检索是否含有立即数30H,若检索成功,将该数据地址存放在31H,否则将FFH存放在31H。ORG 0000HMOV R1,#20HMOV R7,#0AH LOOP1:MOV A,R1CJNE A,#30H,LOOPMOV 31H,ASJMP $LOOP:INC R1 DJNZ R7,LOOP1MOV 31H,#0FFHSJMP $END3、统计内RAM20H4FH单元中内容为“0”的个数,并把结果存入50H单元。ORG 0000HMOV R1,#20HMOV R7,#30HMOV 5

15、0H,#00H LOOP1:MOV A,R1CJNE A,#00H,LOOPINC 50HLOOP:INC R1 DJNZ R7,LOOP1SJMP $END七、极值查找1、将内部RAM50H、51H单元两个无符号数中较大的数存入60H单元。ORG 0000HMOV 50H,#10H MOV A,50HMOV51H,#40HMOV 60H,50HCJNE A,51H,$+3JC LOOPSJMP $LOOP:MOV 60H,51H SJMP $END2、在内部RAM 40-4FH中存在16个无符号数,找出其中的最小数,存放到50H单元。先画出程序框图,再编程。ORG 0000HMOV R0,#

16、40HMOV R7,#10HMOV 50H,R0LOOP1:INC R0MOV A,R0CJNE A,50H,$+3JNC LOOPMOV 50H,ALOOP:DJNZ R7,LOOP1MOV 50H,ASJMP $END3、内部RAM中有一个数据块,首地址为30H,长度存放在2BH单元,要求把其中的最大值找出,并放到以20H单元。ORG 0000HMOV R0,#30HMOV R7,2BHMOV 20H,R0LOOP1:INC R0MOV A,R0CJNE A,20H,$+3JC LOOPMOV 20H,ALOOP:DJNZ R7,LOOP1SJMP $END4、内部RAM以30H为首地址的

17、一个数据块,第一个数据为该数据长度。试求该数据的最大值,把结果放在内部RAM的70H单元中。画出程序流程图并编写程序。ORG 0000HMOV R0,#31HDEC 30HMOV R7,30HMOV 70H,R0LOOP1:INC R0MOV A,R0CJNE A,70H,$+3JC LOOPMOV 70H,ALOOP:DJNZ R7,LOOP1SJMP $END*5、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程统计其中大于0、等于0、小于0的数的个数,分别存放于70H、71H、72H。ORG 0000HMOV R0,#20HMOV 70H,#00H;大

18、于0MOV 71H,#00H;等于0MOV 72H,#00H;小于0MOV R7,1FHCLR CLOOP2:MOV A,R0CJNE A,#80H,$+3JNC LOOPINC 70HINC R0DJNZ R7,LOOP2SJMP $LOOP:CLR CSUBB A,#80HJZ LOOP1INC 72HINC R0DJNZ R7,LOOP2SJMP $LOOP1:INC 71HINC R0DJNZ R7,LOOP2END*6、内部RAM20H开始存放一组有符号的数,数据个数存放在内部RAM1FH单元中,请编程将其中大于0、等于0、小于0的数分别存放于70H、60H、50H开始的连续单元中。

19、ORG 0000HMOV R0,#30HMOV R2,#50H MOV R3,#60HMOV R4,#70HMOV R7,#0AHLP:MOV A,R0CJNE A,#80,$+3JNC LOOPMOV 10H,R4 MOV R1,10HMOV R1,AINC R4INC R0DJNZ R7,LPLOOP:CJNE A,#80H,LOOP1MOV 10H,R3MOV R1,10HMOV R1,AINC R3INC R0DJNZ R7,LPLOOP1:MOV 10H,R2MOV R1,10HMOV R1,AINC R2INC R0DJNZ R7,LPSJMP $END7、从内部RAM 20H开始存放一组有符号数,数据的个数为10个,求出其中最小值和最大值。ORG 0000HMOV R0,#20HMOV R7,#0AHCLR CMOV A,R0ADD A,#80HMOV 10H,AMOV 11H,ALOOP1:INC R0MOV A,R0ADD A,#80HCJNE A,10H,$+3JC LOOPMOV 10H,ALOOP:CJNE A,11H,$+3JNC LOOP2MOV 11H,ALOOP2:DJNZ R7,LOOP1MOV A,10HADD A,#80HMOV 10H,AMOV A,11HADD A,#80HMOV 11H,ASJMP $END

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁