1、实验五实验五 实验五 算术运算类指令编程应用一、实验目的(1) 掌握、×、÷、加1、减1、十进制调整指令和功能;逻辑运算类指令(2) 掌握各种指令的编程应用。二、实验设备单片机IDE集成开发软件KEIL三、实验要求验证“实验原理”一节中给出的实例程序,、×、÷、加1、减1、十进制调整指令,共有24条,一般影响PSW中的CY、AC、OV、P标志位。 逻辑运算类指令共24条,涉及A时,影响P标志。四、实验原理及实验内容作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。包括、×、÷、加1、减1、十进
2、制调整指令,共有24条,一般影响PSW中的CY、AC、OV、P标志位。1、加减法指令(12条)(1)指令助记符: ADD + ADDC 带C+ SUBB 带C-(2)操作数:如右图,以A为目的操作数 (3)指令描述举例:不带进位加法 ADD 4条ADD A, Rn ;(A) ←(A)+(Rn)带进位加法指令 ADDC 4条ADDC A,direct ;(A) ←(A)+(direct)+(CY)带进位减法指令 SUBB 4条SUBB A,Ri ;(A)←(A)-(Ri)-(CY)SUBB A,#data ;(A)←(A)- #data -(CY)
3、 实验内容3-11:设(A)=D3H,(30H)=E8H 执行: ADD A,30H 写出结果:CY=?,AC=?,P=?,OV=?,(A)=?实验内容3-12:设(A)=88H,(30H)=99H,CY=1 执行: ADDC A, 30H结果:CY=?,AC=?,P=?,OV=?,(A)= 实验内容3-13:设(A)=49H,CY=1,写出结果:CY=?,AC=?,P=0,OV=?,(A)=?实验内容3-14:试编制4位十六进制数加法程序,假定和数超过双字节(21H20H)+(31H30H)→ 42H41H40H分析:先低字节作不带进位求和,再作带进位高字节求和。 写出程序 2、
4、加1减1指令 助记符:INC,DEC操作数:A,direct,Ri,Rn,DPTR指令描述:(不影响PSW,即使有进位或借位,CY也不变,除A影响P标志)(1)INC:加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(2)DEC:减1 4条 DEC A ;(A) ←(A)1 DEC Rn ;(Rn) ←(Rn)1
5、 DEC Ri ;(Ri) ←(Ri)1 DEC direct ;(direct) ←(direct)实验内容3-15:编制下列减法程序,要求:(31H30H)(41H40H)→ 31H30H3、十进制调整指令格式:DA A指令用于两个BCD码加法运算的加6修正,只影响CY位。指令的使用条件:(1)只能紧跟在加法指令(ADD/ADDC)后进行(2)两个加数必须已经是BCD码(3)只能对累加器A中结果进行调整加6修正的依据:由CPU判CY、AC是否=1?A的高、低4位是否大于9? 例如:(A)=56H,(R5)=67H,(BCD码)执行: ADD A,R5 D
6、A A 结果:(A)=23H,(CY)=1 实验3-16:试编制十进制数加法程序(单字节BCD加法),假定和数为单字节,要求:(20H)+(21H)→ 22H 分析:流程如右图 写出程序4、乘除法指令唯一两条单字节4机器周期的指令。(1)8位无符号数乘法指令 MUL AB ;(B 158 )( A70)←(A)×(B) PSW: 1)若乘积大于256,OV=1;否则OV=0; 2)CY总是清“0”。例如:(A)=50H,(B)=A0H,执行MUL AB后结果:(B)=32H,(A)=00H,(OV)=1(2)8位无符号除法指令DIV A
7、B ; (A)←(A/B)的(商); (B)←(A/B)的(余数)PSW: 1)CY、OV,清“0” 2)若(B)=0,OV=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);流程如右图 请写出程序 三、逻辑运算指令 逻
8、辑运算类指令共24条,涉及A时,影响P标志。 1、 基本与、或、异或运算指令 (1)指令助记符:ANL、ORL、XRL (2)指令描述举例:逻辑“与”指令 6条ANL A, Rn ;(A)←(A)(Rn)ANL A, direct ;(A)←(A)(direct)逻辑“或”指令 6条ORL A, Ri ;(A)←(A)(Ri)ORL A, #data ;(A)←(A) data 逻辑“异或”指令 6条XRL direct,A ;(direct)←(direct)&
9、#8853;(A)XRL direct,#data ;(direct)←(direct)⊕ 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中放有两个B
10、CD数,编程,使这两个BCD码分别存到2000H和2001H的低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; CJN
11、E A, #data, rel; CJNE Rn, #data, rel; CJNE Ri, #data, rel;执行时:1)两操作数相等,顺序执行,且CY=0。 2)两操作数不相等,转移执行,且对于无符号数若:第一操作数第二操作数,CY=1,否则CY清“0”。目的地址:(PC)= rel4、减“1”不为0转移指令又称循环转移指令,主要用来构成循环结构,有2条: DJNZ Rn, rel;2字节指令,2周期指令 DJNZ direct,rel;3字节指令,2周期指令目的地址:(PC)= rel五、实验步骤1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果六、实验报告1、分别编写调用程序,然后在开发环境中编译运行,写出实验内容的结果2、给出各个程序的清单,要求有注释。3、MCS-51系列单片机控制转移指令有哪些?列出这些指令,并说明其功能。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1