分享

实验五

 昵称3865354 2010-11-15

实验五 算术运算类指令编程应用

一、实验目的

(1) 掌握+、-、×÷、加1、减1、十进制调整指令和功能;逻辑运算类指令

(2) 掌握各种指令的编程应用。

二、实验设备

单片机IDE集成开发软件KEIL

三、实验要求

验证“实验原理”一节中给出的实例程序,+、-、×÷、加1、减1、十进制调整指令,共有24条,一般影响PSW中的CYACOVP标志位。       逻辑运算类指令共24条,涉及A时,影响P标志。

四、实验原理及实验内容

作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。

包括+、-、×÷、加1、减1、十进制调整指令,共有24条,一般影响PSW中的CYACOVP标志位。

1、加减法指令(12条)

1)指令助记符:

          ADD      +

          ADDC   C+

          SUBB    C-

2)操作数:如右图,以A为目的操作数
 

 3)指令描述举例:

不带进位加法 ADD  4

ADD     A Rn              ;(AA+Rn

带进位加法指令 ADDC  4

ADDC   Adirect   ;(AA+direct+CY

带进位减法指令  SUBB  4

SUBB    A@Ri           ;(AA-((Ri))-CY

SUBB    A#data        ;(AA- #data -CY

 

实验内容3-11设(A=D3H,(30H=E8H

   执行:     ADD      A30H       

写出结果:CY=?,AC=?,P=?,OV=?,(A=

实验内容3-12:设(A=88H,(30H=99HCY=1

 执行:  ADDC  A  30H

结果:CY=?,AC=?,P=?,OV=,(A=

 

实验内容3-13:设(A=49HCY=1

写出结果:CY=?,AC=?,P=0OV=,(A=?

实验内容3-14:试编制4位十六进制数加法程序,假定和数超过双字节

21H20H+31H30H→ 42H41H40H

分析:先低字节作不带进位求和,再作带进位高字节求和。

 写出程序

      

2、加11指令                           

助记符:INCDEC

操作数:Adirect@RiRnDPTR

指令描述:不影响PSW,即使有进位或借位,CY也不变,除A影响P标志)

1INC:加1  5

              INC       A        ;(A   A+1

              INC       Rn     ;(Rn Rn+1

              INC    @Ri      ;((Ri))      ((Ri))+1

              INC    direct     ;(direct    direct+1

              INC       DPTR  ;(DPTR     DPTR+1

2DEC:减1   4

              DEC      A        ;(A   A—1

              DEC      Rn     ;(Rn Rn—1

              DEC    @Ri    ;((Ri))      ((Ri))—1

              DEC    direct   ;(direct     direct

实验内容3-15:编制下列减法程序,要求:

31H30H41H40H→ 31H30H

3、十进制调整指令

格式:DA      A

指令用于两个BCD码加法运算的加6修正,只影响CY位。指令的使用条件:

1)只能紧跟在加法指令(ADD/ADDC)后进行

2)两个加数必须已经是BCD

3)只能对累加器A中结果进行调整加6修正的依据:由CPUCYAC是否=1A的高、低4位是否大于9

       例如:(A=56H,(R5=67H,(BCD码)执行:

              ADD             AR5         

              DA         A                     

结果:(A=23H,(CY=1         

实验3-16:试编制十进制数加法程序(单字节BCD加法),假定和数为单字节,要求:(20H+21H→ 22H

    分析:流程如右图

       写出程序

4、乘除法指令

唯一两条单字节4机器周期的指令。

18位无符号数乘法指令

       MUL       AB     ;(B 15~8 )( A7~0A×B

       PSW   1)若乘积大于256OV=1;否则OV=0

                     2CY总是清0”

例如:(A=50H,(B=A0H,执行MUL  AB

结果:(B=32H,(A=00H,(OV=1

28位无符号除法指令

DIV  AB          AA/B)的(商); BA/B)的(余数)

PSW   1CYOV,清0”

                     2)若(B=0OV=1

例如:(A=2AH,(B=05H,执行DIV  AB

结果:(A=08H,(B=02H,(OV=0

实验内容3-17:编制将A中的数转换成三位BCD码程序,百位放在20H,十位、个位放在21H中。

分析:(A/100→商(百位)    20H);

余数/10   商(十位)21H);    

余数 (个位)21H);

流程如右图  

请写出程序

 

 三、逻辑运算指令

              逻辑运算类指令共24条,涉及A时,影响P标志。

 1 基本与、或、异或运算指令

           1)指令助记符:ANLORLXRL

 2)指令描述举例:

逻辑指令   6

ANL      A Rn             ;(AARn

ANL       A direct     ;(AAdirect

逻辑指令   6

ORL             A @Ri    ;(AA((Ri))

ORL             A #data   ;(AA∨ data

 

逻辑异或指令    6

XRL             directA           ;(directdirectA

XRL             direct#data        ;(directdirect⊕ data

当用于修改输出口(P0P3)时,direct指口锁存器的内容而不是端口引脚电平。

2、对A简单逻辑指令

1)清零与取反

              CLR   A    0

              CPL         A    求反

2循环移位指令

              RL      A   

              RLC   A       

              RR      A   

              RRC   A   

 

实验内容3-18按要求编程完成下列各题

1)选通工作寄存器组中0区为工作区。

2)利用移位指令实现累加器A的内容乘6

3)将ACC的低4位送P1口的低4位,P1口的高4位不变。

请写出程序

实验内容3-19:设在外RAM 2000H中放有两个BCD数,编程,使这两个BCD码分别存到2000H2001H的低4位中。

请写出程序

四、控制转移指令22条)

无条件转移应用

2、条件转移指令

              根据某种条件判断转移的指令,执行时:

条件满足时,转移执行;

条件不满足时,顺序执行;

1)判A转移,2字节

              JZ       rel             ;条件:(A= 0

              JNZ    rel             ;条件:(A≠0

 2)判Bit转移,3字节

              JB         bit rel    ;条件:(bit= 1

              JNB   bit rel    ;条件:(bit= 0

              JBC   bit rel    ;条件:(bit= 1转移,并清 bit

3、比较不相等转移指令

              CJNE             A         direct      rel

              CJNE             A         #data      rel

              CJNE     Rn        #data      rel

              CJNE          @Ri #data     rel

执行时:

1)两操作数相等,顺序执行,且CY=0

       2)两操作数不相等,转移执行,且对于无符号数若:第一操作数<第二操作数,CY=1,否则CY0”。目的地址:PC= rel

4、减1”不为0转移指令

又称循环转移指令,主要用来构成循环结构,有2条:

       DJNZ             Rn      rel2字节指令,2周期指令

       DJNZ             directrel3字节指令,2周期指令

目的地址:PC= rel

五、实验步骤

1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果

六、实验报告

1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果

2、给出各个程序的清单,要求有注释。

3MCS-51系列单片机控制转移指令有哪些?列出这些指令,并说明其功能。

 

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多