1. 统计以片外300H开始的8个字节存储单元中偶数的个数,并将结果存于片内30H中。
2. 统计以TAB开始的6个字存储单元中奇数的个数。并将结果存于片外30H中。
3. 统计以片内40H开始的十个字节存储单元中正数、负数和零的个数,并将其分别存入X30H)、Y(50H)Z(60H)三个变量中
4. 出以片外40H开始的6个单元中第一个7的数的地址,并将其存入片内30H中。
5. TAB表中班上16位同学的平均成绩,并将结果存入片外300H
6. TAB表中6BCD码的和,并将结果存于片内30H31H中。
7. 片内40H开始10H单元中,统计每个单元1的位数,并将位数存于50H开始的单元中
8. 统计以片外3000H开始的十个字节存储单元中大于100数的个数。
9. 将片内200H开始的十个字节存储单元中数为8的清零。
10. 实现将存于片外30H开始的5个字节存储单元中的非组合型BCD码分别转换成ASCII码,结
果存于以片内40H开始的单元中。(不能用查表法)
11. 实现将存于TT表中的5个字节存储单元中的组合型(压缩型)BCD码分别转换成ASCII码,结果存于以片外2000H开始的单元中。
12. 求班上30名同学的平均成绩(只保留整数),并将结果存入片内30H(整数)中。
13. 在片内30H开始的存储区中,存放14H个带符号数。要求出其中最小的一个数,并存到片外30H单元中。
14. 在片内30H开始的存储区中,存放14H个无符号数。要求出其中最大的一个数,并存到片外30H单元中。
15. 用软件实现1S定时。
16. 将存于片外3000H开始的5个字节存储单元中的数从小到大排序后,存于以片外4000H开始的单元中。
17. 统计片外4000H开始的单元中1的个数。
18. 求以片内40H开始的十个字节存储单元中偶数的和。
19. 求以片外2000H开始的十个字节存储单元中BCD码的和
20. 将存于3000H开始的字符串移动到4000H开始的单元中,并测试字符串的长度。
21. 用查表法完成Y=X3
:将内部RAM单元中20H单元到2FH单元的数传到外部RAM中的2000H200FH单元中.

R2 10H,  R0 20H
DPTR 2000H

A @R0
@DPTR A
R0 (R0)+1
DPTR(DPTR+1


(R2)-1=0?

END
源程序:
        ORG    0000H
        MOV  R0,#20H
        MOV  DPTR,#2000H
        MOV    R2,#10H
    LOOP:MOV    A,@R0
        MOVX  @DPTR,A
        INC  R0
        INC  DPTR
        DJNZ  R2,LOOP
        SJMP  $
        END
设置进行数据传送的内部和外部RAM的首地址
设定循环次数
RAM地址加“1

传送类程序设计
注:被传送数的大小,格式 判断存在于片内还是片外
        要取数据的大小
        传递字或字符串长短及类型的不同
片内→片内
例:将片内40H单元中的数传到片内60H
          MOV 60H, 40H
片内片外

1:将片内40H传送到片外100H单元中
            MOV  A,            40H
            MOV  DPTR,    #0100H
            MOVX @DPTR,A
2:将片外60H单元中的数传送到片内40H单元中
          MOV  R0,#60H
          MOVX A,@R0
          MOV  40H,A
注;片外必须用指针。用累加器做中间传输。

片外→片外

1:将片外40H单元中的数传送到片外60H
        MOV  R0,    #40H
        MOV  R1,    #60H
        MOVX A,      @R0
        MOVX @R1,A
2:将片外60H单元中的数传送到片内40H单元中
          MOV  R0,#60H
          MOVX A,@R0
          MOV  40H,A
注;片外必须用指针。用累加器做中间传输。

片外→片外
1:将片外40H单元中的数传送到片外60H
        MOV  R0,    #40H
        MOV  R1,    #60H
        MOVX A,      @R0
        MOVX @R1,A
2:将片外400H单元中的数传送到片外600H
          MOV  DPTR,    #0400H
          MOVX A,          @DPTR
          MOV  DPTR ,  #0600H
          MOVX @DPTR,A
3:把以片外400H开始的十个数传送到以片外600H开始的十个数中 

        MOV R2,    #06H                                 
          MOV R3,    #00H                                   
          MOV DPTR,#0400H                               
          MOV R7,    #10                                     
    L1: MOV A,      @DPTR                             
          INC  DPTR字符串长度为0和50之间
          MOV R0,    DPL
          MOV R1,    DPH
          MOV DPL,  R3
          MOV DPH,  R2
          MOV @DPTR,A
          INC    DPTR
MOV  R2,  DPH
MOV  R3,  DPL
MOV  DPL, R0
MOV  DPH, R1
  DJNZ R7,    L1

统计程序的设计
个数统计
①统计正数 负数 0的个数
例:统计以片内10H开始的十个字节存储单元中正数,负数和0的个数。并将其分别存入X,Y,Z三个变量中。

ORG  3000H
        X  EQU  R5                 
        Y  EQU  R6
        Z  EQU  R7
        MOV  R0,#0AH
        MOV  R1,#10H
  L1:CLR  C
        MOV  X,#0
        MOV  Y,#0
        MOV  Z,#0
        MOV A,@R1
        RLC  A
        JZ  L3
        JC  L2
        INC  X
        SJMP  L4
  L2:INC  Y
        SJMP  L4
  L3:INC  Z
  L4: INC  R1
        DJNZ  R0,L1
        END

②统计奇数及偶数的个数
例:统计以片外2000H开始的十个字节存储单元中偶数的个数,存于片内30H中。

    ORG  1000H
    MOV  DPTR,#2000H
    MOV  R0,#0AH
    CLR  R1
L1:MOVX  A,@DPTR
      RRC  A
    JC  L2
    INC  R1
L2: INC  DPTR
    DJNZ  R0,L1
    END

③统计符合某类型的一类数的个数
例:将片内20H开始的十个字节存储单元中数为8的清零

ORG  1000H
    MOV  R0,#0AH
    MOV  R1,20H
L1:MOV  A,@R1
        CJNE  A,#8,L2
    MOV  @R1,#0
L2:INC  R1
    DJNZ  R0,L1
    END

分类统计
例:将片内以30H开始的十个字节存储单元中的正数取出,放入40H开始的单元中,负数放入50H开始的单元中,零放在60H开始的单元中。

    ORG  1000H
    MOV  R0,#30H
    MOV  R2,#0AH
    MOV  R3,#60H
    MOV  R4,#40H
    MOV  R5,#50H
L1:CLR C
    MOV  A,@R0
    CJNE  A,#0,L2
    MOV  43h,R3
    MOV  R1,43h
    MOV  @R1,A
    INC  R3
    SJMP  L4
L2:JC  L3
    MOV  43h,R4
    MOV  R1,43h
    MOV  @R1,A
    INC  R4
    SJMP  L4
L3:MOV  43h,R5
    MOV  R1,43h
    MOV  @R1,A
    INC  R5
L4:INC  R0
    DJNZ  R2,L1
    END

·代码转换类程序设计
数值进制转换
    二进制数,八进制数,十进制数,十六进制数,BCD码及ASCII码之间的转换。
例:实现将存于TT表中的5个字节存储单元中的组合型(压缩型)BCD码分别转换成ASCII码,结果存于以片内50H开始的单元中。

      ORG  1000H
      MOV  DPTR,#TT
      MOV  R2,#05H

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。