第三章指令系统及汇编语言程序设计.docx

您所在的位置:网站首页 3fh转十进制 第三章指令系统及汇编语言程序设计.docx

第三章指令系统及汇编语言程序设计.docx

2023-04-01 04:52| 来源: 网络整理| 查看: 265

第三章指令系统及汇编语言程序设计.docx

《第三章指令系统及汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第三章指令系统及汇编语言程序设计.docx(20页珍藏版)》请在冰豆网上搜索。

第三章指令系统及汇编语言程序设计.docx

第三章指令系统及汇编语言程序设计

第三章指令系统及汇编语言程序设计

3-1选择题

1、MOVX A,@DPTR指令中源操作数的寻址方式是( B     )

(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址

2、  ORG 0003H

LJMP2000H

ORG000BH

LJMP3000H当CPU响应外部中断0后,PC的值是(    B   )

(A)0003H(B)2000H(C)000BH(D)3000H

3、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(   D  )

(A)2000H(B)2001H(C)2002H(D)2003H

4、51执行完MOV A,#08H后,PSW的一位被置位(   D    )

(A)C(B)F0(C)OV(D)P

5、下面条指令将MCS-51的工作寄存器置成3区(   B  )

(A)MOV PSW,#13H(B)MOV PSW,#18H

(C)SETB PSW.4 CLRPSW.3 (D)SETBPSW.3 CLRPSW.4

6、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(   C   )

(A)/PSEN(B)ALE(C)/RD(D)/WR

7、MOVC,#00H的寻址方式是(    A    )

(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址

8、ORG0000H

  AJMP0040H

  ORG0040H

  MOVSP,#00H

当执行完左边的程序后,PC的值是(      C  )

(A)0040H(B)0041H(C)0042H(D)0043H

9、对程序存储器的读操作,只能使用(   D    )

(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令

10、MCS-51单片机可分为两个优先级别。

各中断源的优先级别设定是利用寄存器(   B   )

(A)IE  (B)IP   (C)TCON    (D)SCON

11、在寄存器间接寻址方式中,指定寄存器中存放的是(    B      )

(A)操作数  (B)操作数地址  (C)转移地址  (D)地址偏移量

12、在MCS—51中,需双向传递信号的是(       B      )

 (A)地址线 (B)数据线    (C)控制线   (D)电源线

13、下列指令中于进位标志位CY无关的指令有(     D      )

(A)移位指令 (B)位操作指令  (C)十进制调整指令  (D)条件转移指令

14、在程序储存器的读操作,只能使用(     D      )

(A)MOV指令   (B)PUSH指令  (C)MOVX指令  (D)MOVC指令

15、以下运算中对溢出标志OV没有影响或不受OV影响的运算是(     A       )

(A)逻辑运算 (B)符号数加减法运算 (C)乘法运算  (D)除法运算

16、指令AJMP的跳转范围是(C)

(A)256B  (B)1KB (C)2KB (D)64KB

 

3-2判断题

1、MCS-51的相对转移指令最大负跳距是127B。

(   ×        )

2、当MCS-51上电复位时,堆栈指针SP=00H。

(     ×       )

3、调用子程序指令(如:

CALL)及返回指令(如:

RET)与堆栈有关但与PC无关。

( ×  )

4、MOV @R1,#80H。

(    √   )

5、INC DPTR   (      √     )

6、DEC DPTR (     ×   )   

7、CLR R0   (     ×     )  

8、ANL R1,#0FH   (     ×    )

9、ADDC A,C      (      ×    )

10、XOR P1,#31H  (   √   )

11、MOV28H,@R2      (    ×)

12、CLR     R0            (  ×  )

13、CPLR5             (   ×  )

14、MOV R0,R1          (      ×)

15、PUSH    DPTR          (   ×   )

16、PUSH    R1          (   ×   )

17、RLC     R0             ( ×      )

18、DJNZ@R1,32H        (  ×     )

19、寄存器DPTR可拆开成两个独立的寄存器DPH与DPTL使用。

(   √ )

3-3填空题

1、JBC bit rel指令是对位bit进行判断,若bit=1则转移,并对该位  清零          。

2、指令POP B的源操作数是    SP        ,是 寄存器间接寻址 寻址方式,目的操作数是     B         ,是   寄存器寻址          寻址方式。

3、已知SP=25H,PC=4345H,(24H)=12H,(25H)=34H,(26H)=56H,当执行RET指令后,SP=   23H      ,PC= 3412H           。

4、指令是由    操作码    和           操作数  构成。

5、MCS-51单片机有立即数寻址  、  直接寻址、 寄存器寻址、 寄存器间接寻址、   变址寻址    、  相对寻址、  位寻址七种寻址方式。

6、MOVC A,@A+DPTR第二操作数采用是   变址   寻址方式

7、执行ANLP1,# 0F H后,可对P1口的高四位清零。

8、若执行XRL P1,# 11000000B后,可对P1口的高两位取反。

9、堆栈必须遵循“ 后进先出 ”的原则。

10、JZe的操作码地址为1000H,e=20H,它转移的目标地址为1022H。

11、MOVA,40H指令对于源操作数的寻址方式是直接寻址。

12、已知A=0F8H,当执行ADDA,#0A9H指令后,PSW中的OV=、CY=、AC=、P=。

若是有符号数,A中的结果用十进制表示是

[解答]OV:

0、CY:

1、AC:

1、P:

1A:

-95

3-4问答题与编程题

1、8051单片机指令系统按功能可分为几类?

答:

MCS-51单片机指令系统按功能可分为5类:

     

(1)数据传送指令 

     

(2)算术运算指令

    (3)逻辑运算和移位指令    

     (4)控制转移指令  

(5)位操作指令

 2、什么叫寻址方式?

具有几种寻址方式?

它们的寻址范围如何?

答:

寻址方式:

寻址方式就是寻找指令中操作数或操作数所在地址的方式。

也就是如何找到存放操作数的地址,把操作数提取出来的方法。

  MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:

 

 寻址方式

使用的变量

    寻址范围

立即寻址

 

程序存储器

直接寻址

 

内部RAM低128个字节;

特殊功能寄存器SFR

寄存器寻址

R0~R7;A、B、DPTR、C

 

寄存器间接寻址

@R0、@R1、SP

内部RAM、堆栈指针SP

@R0、@R1、@DPTR

外部RAM

变址寻址

@A+PC、@A+DPTR

程序存储器

相对寻址

PC+偏移量

程序存储器

位寻址

 

内部RAM低128B位寻址区

可位寻址的特殊功能寄存器位

 3、堆栈的功能是什么?

有什么操作原则?

栈顶地址如何指示?

答:

堆栈是存储器中的特殊群体。

在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。

   堆栈操作无论是存入或取出数据,均只能依次存人或依次取出,不能越位,必须遵循“先进后出"、“后进先出”的原则。

堆栈指针SP指出栈顶存储单元的地址

4、什么是汇编?

什么是汇编语言?

它有什么特点?

4、答:

汇编:

汇编语言源程序在交付计算机执行之前,需要先翻译成目标程序,这个翻译过程叫汇编。

汇编语言:

是用助记符替代机器语言中的操作码,用16进制数替代二进制代码。

特点是比较直观,易于记忆和检查,可读性较好。

但是计算机执行时,必须将汇编语言翻译成机器语言,不同的微处理器有不同的汇编语言。

 5、什么叫指令周期?

答:

指令周期:

指执行一条指令所占用的全部时间。

通常一个指令周期含1~4个机器周期。

 6、什么是指令?

什么是程序?

答:

指令:

人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。

程序:

一系列指令的有序集合称为程序。

7、什么是进位和溢出?

答:

两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。

例如将正数3FH和负数D0H相加,其结果不会超出8位字长的表示范围,所以其结果10FH中的进位是正常进位(也就是模)。

但是,若正数3FH与正数70H相加,其结果为AFH,最高位为"1",成了负数的含义,这就不合理了,这种情况称为溢出。

 8、“DA A”指令的作用是什么?

怎样使用?

答:

这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。

用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。

9、片内RAM20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?

 答:

虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。

位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。

MOVC,bit

MOVbit,C

CLRbit

SETBbit

CPLbit

ANLC,bit

ANLC,/bit

JBbit,rel

JNBbit,rel

 10、8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令?

在实际使用是应怎样考虑?

答:

在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。

长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。

长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。

AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。

 13、在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?

使用中有何不同?

答:

使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。

使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。

14、设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?

答:

结果为:

(A)=30H (R0)=50H (50H)=00H (51H)=30H

15、堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。

执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?

答:

结果为:

(61H)=24H        (62H)=10H      (30H)=00H

          (31H)=0FFH       DPTR=2410H  SP=60H

 16、在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。

分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。

MOV A,40H

MOV R0,A

MOV P1,#0F0H

MOV @R0,20H

MOV 50H,R0

MOV A,@R0

MOV P2,P1

答:

 指令                      源操作数的寻址方式        执行指令后的结果

MOVA,40H              直接寻址                 (A)=50H

MOVR0,A               寄存器寻址               (R0)=50H

MOVP1,#80H            立即寻址                 (P1)=80H

MOV@R0,20H           寄存器间接寻址           (50H)=30H

MOVDPTR,#2000H       立即寻址                 (DPTR)=2000H

MOV40H,30H            直接寻址                 (40H)=40H

MOVR0,30H             直接寻址                 (R0)=40H

MOVD0H,R0             直接寻址                 (D0H)=40H

MOV10H,#10H           立即寻址                 (10H)=10H

MOVA,@R0              寄存器间接寻址            (A)=50H

MOVP2,P1                寄存器寻址               (P2)=80H

17、完成以下的数据传送过程。

(1)R1的内容传送到R0。

(2)片外RAM20H单元的内容送R0。

(3)片外RAM20H单元的内容送片内RAM20H

(4)片外RAM1000H单元的内容送片内RAM20H

(5)片外RAM20H单元的内容送R0。

(6)片外RAM2000H单元的内容送片内RAM20H

(7)片外RAM20H单元的内容送片外RAM20H

答:

(1)R1的内容传送到R0;

       MOV    A, R1

         MOV    R0,      A

(2)片外RAM20H单元内容送R0;

         MOV       DPTR,    #0020H

         MOVX   A,        @DPTR

         MOV      R0,     A

(3)片外RAM20H单元的内容送片内RAM20H单元;

        MOV     DPTR,    #0020H

          MOVX    A,     @DPTR

          MOV     20H,   A

(4)片外RAM1000H单元的内容送片内RAM20H单元;

          MOV  DPTR,    #1000H

          MOVX    A,           @DPTR

          MOV        20H,      A

(5)ROM2000H单元的内容送R0单元;

          MOV     A,   #00H

          MOV  DPTR,  #2000H

          MOVC    A,      @A+DPTR

          MOV        R0H,   A

(6)ROM2000H单元的内容送片内RAM20H单元;

          MOV     A,   #00H

          MOV  DPTR,  #2000H

          MOVC    A,      @A+DPTR

MOV      20H,   A

(7)ROM2000H单元的内容送片外RAM20H单元。

          MOV     A,   #00H

          MOV  DPTR,  #2000H

          MOVC    A,      @A+DPTR

          MOV   DPTR,  #0020H

          MOVX @DPTR,  A

 

18、设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。

(以上均为低位字节,高位在高字节)。

18、解:

           ORG 0000H      

               LJMP START   

               ORG 0030H     

START:

  MOV A,22H 

               ADD A,32H  

               DAA                 

               MOV 42H,A 

                 MOV A,23H

                 ADDC A,33H

                 DA  A           

                 MOV 43H,A

                 SJMP$             

                  END    

19、编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。

20、已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。

请编出求数据块中各数累加和并存入SUM单元的程序。

20、编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。

21、把内部RAM中起始地址为DATA的数据串传送到外部RAM以BUFFER为首地址的区域,直到发现“$“字符的ASCⅡ码为止。

同时规定数据串的最大长度为32个字节。

22、设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在于22H单元中,编出程序。

23、设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数、负数、零的个数。

24、编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCⅡ存放在于25H开始的单元。

25、试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。

26、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256

27、用查表法编一子程序,将R3中的BCD码转换成ASCII码。

28、片内RAM40H开始的单元内有10个字节的无符号二进制数,编程找出其中最大值并存于50H单元中.

29、编制一个循环闪烁灯的程序。

有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。

画出电路图。

30、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。

31、编制一个循环闪烁的程序。

有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。

画出电路图。

32、利用89C51的P1口控制8个发光二极管LED。

相邻的4个LED为一组,使2组每隔0.5s交替发亮一次,周而复始。

试编写程序。

19—32编程答案:

19、解:

           ORG0000H

              LJMPMAIN

              ORG0030H

MAIN:

 MOVR7,#20H

              MOVR1,#40H

              MOVDPTR,#3000H

              LOOP:

MOVA,@R1

              MOVX@DPTR,A

              INCR1

              INCDPTR

              DJNZR7,LOOP

              SJMP$

                 END

 

20、解:

参考程序:

          ORG0200H

                LEN:

DATA20H

                SUM:

DATA21H

            BLOCK:

 DATA22H

                    CLRA            ;A清零

                    MOVR2,LEN       ;块长度送R2

                    MOVR1,#BLOCK    ;块始址送R1

                    INCR2           ;R2←块长+1

                    SJMPCHECK

            LOOP:

  ADDA,@R1        ;A←A+(R1)

                    INCR1           ;修改数据块指针R1

            CHECK:

 DJNZR2,LOOP

                    MOVSUM,A        ;存累加和

                              END

 

20、解:

           ORG0000H

              LJMPMAIN

              ORG0030H

MAIN:

 MOVR0,#30H

              MOVR1,#00H

              MOVR2,#00H

              MOVR3,#07H

LP2:

     MOVA,@R0

              ADDA,R2

              MOVR2,A

              



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3