您好,欢迎来电子发烧友网! ,新用户?[免费注册]

当前位置:电子发烧友网 > 图书频道 > 电子 > 《单片机原理与应用》 > 第4章 汇编语言程序设计

第5节 思考与练习

 

4.1              请解释下列名词:

机器码  助记符  操作码  操作数  源程序目标程序  汇编程序  汇编语言  汇编语言程序汇编指令  汇编  机器汇编  人工汇编

4.2   经过汇编后,下列各条语句舶标号将是什么数值?

ORG    2000H

TABLE:   DS    10 WORD:

  DS    15,20,25,30

FANG:   EQU    1000H

BEGIN:   MOV    A,R0

4.3    下列程序段经汇编后,从2000H开始的各有关存储单元的内容将是什么?

        ORG    2000H

TAB:DS    5

        DB    10H,10

        DW    2100H

        ORG    2050H

        DW    TAB

        DB    "WORK”

4.4   下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么?

       ORG    1000H

TABl:EQU    1234H

TAB2:EClU   3000H

       DB    “START”

       DW    TABl,TAB2

4.5    综述汇编语言程序的书写格式。

4.6    要将片内RAM  0FH单元的内容传送去专用寄存器B,对0FH单元的寻址可有三种办法;

    (1)寄存器寻址    (2)寄存器间址    (3)直接寻址

    请分别编出相应程序,比较其字节数、机器周期数和优缺点。

4.7   试编程:引用“与”运算,判断某8位二进制数是奇数还是偶数.

4.8   试编程:引用‘或”运算,使任意8位二进制数的符号位必为“1’。

4.9   设ROM、片内RAM,片外RAM各有关单元的内容示如下图,问执行下列程序段后(A)=?

0000  AJMP    030H

      ORG    0030H

0030  MOV    R0,#32H

      MOV    A,@R0

      MOV    R1,A

      MOVX   A,@R1

      MOVC   A,@A+DPTR

4.10  若在片内RAM 30H单元中有2位压缩的BCD码95H,问执行下列程序后,片内RAM 30H单元的内容是什么?31H、32H的内容又是什么?并写出BCD码十进制调整的过程。

MOV    R0,#30H

MOV    A,@R0

ANL    A,#OFH

MOV    R3,A

MOV    A,@R0

SWAP   A

ANL    A,#0FH

ADD    A,R3

DA     A

MOV    @R0,A

MOV    R3,A

INC    R0

ANL    A,#0FH

MOV    @R0,A

INC    R0

MOV    A,R3

ANL    A,  #0FOH

SWAP  A

MOV    @R0,A

RET

4.11    试编程;将两个4位二进制数并存于一个字节。

4.12    试编程:将存于片内RAM 40H、41H单元中的16位数求补,结果放回原单元(低字节放40H单元)。

4.13    试编程:有两双字节压缩的BCD码数相加,设该两待加数分别按先低后高原则存放在30H、31H和40H、4lH单元,和要求放回30H、3lH单元。

4.14    试编程:将累加器A内容低4位送片外RAM 7AH单元,高4位送片外RAM 7BH单元,?AH、7BH单元的高4位均清零。

4.15    试编程:将片内RAM 50H、5lH单元两个无符号数中较小的数存于60H单元。

4.16    试编程:将片内RAM 60H~69H单元中的10个数相加,和的低8位存人7EH,高8位存人7FH。

4.17    试编程:统计从片内RAM 60H单元起所存60个数中“0”的个数,并存人工作寄存器R7。

4.18    试绪程:将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单元起的内存区间去.

4.19    试编程:将ROM中以TAB为初址的32个单元的内容依次传送到片外RAM以00H为初址的区域去(规定用查表指令)。

4.20   试编写一段于程序,将片外RAM 20H单元中压缩的BCD码转换成共阴的七段笔划信息码,存于片内RAM 20H、21H单元,以待显示(七段笔划信息码的最高位为o)。

4.21   请编一将A中内容乘10的程序,要求:

    (1)不可用MUL指令

    1) 乘积≤255    2) 乘积>255

    (2)可用MUL指令

    1) 乘积≤255    2) 乘积>255

规定乘积放在片内RAM的30H单元或30H、3lH单元。

4.22   设晶振为12MHx,请详细剖析(包括计算)下列程序段的性质和用途:

0B0  79  63     DELAY:    MOV  R1,#63H

0B2  00            DLl:    NOP

0B3  00                    NOP

0B4  D9  FC                DJNZ  R1,DLl

0B6  22                    RET

4.23    请编写一个能延时1.5ms的子程序,要列出计算。Tcy=1us。

4.24   阅读下列程序,

    (1)说明该程序的功能。

    (2)填出所缺的机器码。

    (3)试修改程序,使片内RAM的内容达到右下图所示的结果.

                        MOV  R2,#0AH

                        MOV  R0,#50H

                        CLR   A

            LOOP:      MOV  @R0,A

                        INC   RO

                        DJNZ  R2,LOOP

                        DONE;

 

4.25     阅读下列程序,并要求:

    (1)说明程序的功能。

    (2)写出涉及的寄存器及片内RAM单元的最后结果。

        MOV    R0,#40H

        MOV    A,@R0

        INC     R0

        ADD    A,@R0

        INC     R0

        MOV    @R0,A

        CLR     A

        ADDC  A,#0

        INC    R0

        MOV    @R0,A

4.26   阅读下列程序,写出程序执行后片外RAM 8000H和8002H单元以及R1、R3、R4的内容.

    ORG    0200H

    MOV    DPTR,#DAT

    MOV    R0,#0

    MOV    R1,#1

    MOV    R2,#2

    MOVX   A,@DPTR

    MOV    R3,A

    INC     DPTR

    MOVX  A,@DPTR

    ORL    A,R3

    JZ    HERE

    MOV   DPTR,#DAT

LOOPl:MOV    R3,  #8

LOOP2:MOVX  A,@DPTR

    ANL    A,R1

    MOV    R4,A

    JZ    NEXT

    INC    R0

NEXT:  MOV    A,R1

    RL    A

    MOV   R1,A

    DJNZ  R3,LOOP2

    INC    DPTR

    DJNZ    R2,LOOPl

    MOV    A,R0

    MOVX  @DPTR,A

HERE:SJMP    HERE

    ORG    8000H

DAT:   DW    4B9FH

    DB    0

    END