专业
专业.专注
专业
专业.专注
编程题(每小题8分,共16分)
设在内RAM 40H开始的存储区有若干个字符和数字,已知最后一个为 字符$ 只有一个,试着统计这些字符的数量,结果存储在30个中H单元 中。
参考程序:
ORG 0000H
;R1
;R1作为地址指针
;A作为计数器
;与号相比,不等转移
;找到$结束循环
;计数器加1
;指针加1
;循环
;再加上这个字符
;存结果
CLR A
LOOP: CJNE @R1,#24H,NEXT
SJMP NEXT1
NEXT: INC A
INC R1
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
用8XX51的P1 口接8个LED发光二极管,由INT打开一个消抖按钮 关,开始P1.0的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 $ ;等待中断
有100个符号连续存储在2000个符号中H为首地址的存储区中,试编 正数、负数和零数分别存储在30中H、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 $
编程20内部数据存储器H~24H单元压缩的BCD码转换成ASCH存放在 于25H单元的开始。
参考程序:注意压缩BCD一个字节占两位BCD码。
ORG 0000H
MOV R7,#05HMOV R0,#20HMOV R1,#25H;
MOV R7,#05H
MOV R0,#20H
MOV R1,#25H
;R0为源操作数地址
;R1为目的操作数地址
NE:MOV A,@R0
ANL A,#0FH ;先取低位BCD码
ADD A,#30H;将BCD码转换成 ASCU码
MOV @R1,A
INC R1
MOV A,@R0
ANL A,#0F0H ;取高位 BCD 码
SWAP A ;半字节交换
ADD A,#30H;将高位BCD码转换成ASCU码
MOV @R1,A
INC R0
INC R1
DJNZ R7,NE
SJMP $
END
编程题,加上课件第四章的例子。
三、程序解释(每小题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 ,L OOP
SJMP $
程序功能:10000个片外数据存储器H~1050H内容传输到电影中的数据存储 器 20H~70H 中。
ORG 0200H
MOV A , R0
ANL A , #0FH
MOV DPTR , #TAB
MOVC A , @A DPTR
MOV R0,A
SJMP $
TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H;0~9 的
ASCU码
DB 41H,42H,43H,44H,45H,46H ;A~F 的 ASC U 码
程序功能:通过查表实现R16进制数在0中转换为ASCU码
解释每个/-(或指令功能),并解释程序的功能。
*********************************
程序解释
ORG100H
MOV
A,R0
;R0的内容送
A
ANL
A,#0FH
MOV
R1,A
MOV
A,R0
SWAP
A
;A的内容呙低
4位交换
ANL
A,#0FH
MO