汇编语言程序设计.ppt

第4章 汇编语言程序设计; MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H ;加进位及符号位 MOV R3,A ;存高8位 END ; ——根据不同条件转向不同的处理程序;例1:求单字节有符号二进制数的补码(设二进制数在累加器A中,将其补码放回到A中) 。 分析: 正数补码是其本身,负数的补码是其反码加1。因此,程序首先判断被转换数符号,负数进行转换,正数则不变。;例2:设变量x以补码形式存放在片内RAM30H单元中,变量y与x的关系是:;A=?;例3:多分支程序(散转程序) 根据R7的内容转向相应的处理程序。设R7的内容为0~N,对应的处理程序的入口地址分别为PR0~PRN。 MOV DPTR,#TAB ;置表首地址 MOV A,R7 ;分支转移序号送A RL A ADD A,R7 ;分支转移序号乘以3 JMP @A+DPTR TAB:LJMP PR0 LJMP PR1 … … … LJMP PRN ;练习:两个无符号数比较大小 将片外RAM 0040H、0041H地址中的内容相比较,其中较大数存入片外RAM 0042H地址中。;;开始;例1:假设在片内RAM40H单元开始存放有8个无符号字节数,找出其中最大值,存入30H单元中。 MOV R0,#40H MOV R2,#7 MOV 30H,@R0 LOOP:INC R0 MOV A,@R0 CJNE A,30H,NEXT NEXT: JC LOP1 MOV 30H,A LOP1:DJNZ R2,LOOP END;例2:将内部数据存储器30H~7FH单元的内容传送到外部数据存储器以1000H开始的连续单元中去。 解: 30H~7FH共计80个单元,需传送80次数据。将R2作为循环计数寄存器。;例3 :将内部RAM中起始地址为data的数据串送到外部RAM中起始地址为buffer的存储区域中,直到发现‘$’字符,传送停止。----循环次数事先不知道先判断,后执行。;例4:编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1?s。 MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周×250 =500机周 DJNZ R6,DLP1 ; 500机周×20= 10000机周 RET 说明:MOV Rn指令为1个机器周期; DJNZ指令为2个机器周期; RET指令为2个机器周期; {[(2×250)+1+2]×20+1+2}×1?s=10063?s≈10ms;1.数制转换:136= B= H;12.34H= B。 2.MOV A, @R1指令中源操作数的寻址方式是 。 3.使用51单片机的片内ROM时,需将 引脚接 电平。 4.当晶振频率为12MHz时,一个机器周期为 。 5.若A=82H,R0=40H,CY=1,执行指令ADDC A,R0后,A= , CY= ,AC= ,OV= ,P= 。 6.执行下列程序段后,(P1)= H。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6

文档评论(0)

1亿VIP精品文档

相关文档