- 17
- 0
- 约2.21万字
- 约 29页
- 2021-08-26 发布于湖北
- 举报
最新大学考试必备复习资料
编程题 (每题8分,共16分)
设在内RAM 40H开始的存储区有假设干个字符和数字,最后一个为字符“$“〔并且只有一个,试统计这些字符数字的个数,结果存入30H单元中。
参考程序:
ORG 0000H
START: MOV R1,#40H ;R1作为地址指针
CLR A ;A作为计数器
LOOP: CJNE @R1,#24H,NEXT ;与“$〞号比拟,不等转移
SJMP NEXT1 ;找到“$“结束循环
NEXT: INC A ;计数器加1
INC R1 ;指针加1
SJMP LOOP ;循环
NEXT1: INC A ;再参加〞$〞这个字符
MOV 30H,A ;存结果
END
试编一程序,分别统计在内部RAM的30H~50H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在51H和52H单元中。
参考程序:
ORG 0000H
MOV 51H ,#0H
MOV 52# ,#0H
MOV R1 ,#30H
MOV R0 ,#20H
MOV A,@R1
INC R1
ANL A , #01H
JZ LOOP1
INC 51H
SJMP LOOP2
LOOP1: INC 52H
LOOP2: DJNZ R0 , LOOP3
RET
3.用8XX51的P1口接8个LED发光二极管,由 INT0接一消抖按键开关,开始的LED亮,以后由INT0按键每中断一次,下一个LED亮,顺序下移,且每次只一个LED亮,周而复始。请编制程序。
参考程序:
ORG 0000H
AJMP MAIN
ORG 0003H
RL A ;中断效劳
MOV P1,A
RETI
MAIN: MOV A,#0FFH
MOV P1,A ;第一灯亮
SETB EA
SETB EX0 ;允许INT0外部中断
SETB IT0 ;中断触发方式为下降沿触发
SJMP $ ;等待中断
4.设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数并分别存放在30H、31H、32H单元中。
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV DPTR ,#2000H
MOV R1,#100
L4: MOVX A,@DPTR
INC DPTR
CJNE A,#0,L1
INC 32H
SJMP L2
L2: JC L3
INC 30H
SJMP L2
L3: INC 31H
L2: DJNZ R1,L4
SJMP $
5.编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCⅡ存放在于25H开始的单元。
参考程序:注意压缩的BCD码为一个字节占两位BCD码。
ORG 0000H
MOV R7,#05H ;R7为转换字节数
MOV R0,#20H ;R0为源操作数地址
MOV R1,#25H ;R1为目的操作数地址
NE: MOV A,@R0
ANL A,#0FH ;先取低位BCD码
ADD A,#30H ;将BCD码转换成ASCⅡ码
MOV @R1,A
INC R1
MOV A,@R0
ANL A,#0F0H ;取高位BCD码
SWAP A ;半字节交换
ADD A,#30H ;将高位BCD码转换成ASCⅡ码
MOV @R1,A
INC R0
INC R1
DJNZ R7,NE
SJMP $
END
编程题,另外加上第4章课件上的例子。
三、程序解释〔每题5分,共10分〕
1.
ORG 0200H
MOV DPTR,#1000H
MOV R0,#20H
LOOP: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CJNE R0,#71H,LOOP
SJMP $
程序功能:把片外数据存储器1000H~1050H中的内容传送到片内数据存储器 20H~70H中。
2. ORG 0200H
MOV A,R0
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV R0,A
SJMP $
TAB: D
原创力文档

文档评论(0)