《汇编语言知识学习程序设计2.ppt》由会员分享,可在线阅读,更多相关《汇编语言知识学习程序设计2.ppt(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第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,一.顺序结构程序 程序逐条执行 【例】已知16位二进制负数的原码存放在R1R0中,试求其补码,并将结果存在R3R2中。,根据不同条件转向不同的处理程序,二.分支结构程序,编写分支程序主要在于正确使用转移指令(条件转移指令、比较转移指
2、令、位操作转移指令)。 分支程序有:单分支结构、双分支结构、多分支结构。,例1:求单字节有符号二进制数的补码(设二进制数在累加器A中,将其补码放回到A中) 。 分析: 正数补码是其本身,负数的补码是其反码加1。因此,程序首先判断被转换数符号,负数进行转换,正数则不变。,JNBACC.7, AAA;(A)0,不需要转换 MOVC, ACC.7;保存符号 MOV00H,C;保存符号 CPLA ADDA, #01H MOVC, OOH MOVACC.7, C;恢复符号 AAA:RET,例2:设变量x以补码形式存放在片内RAM30H单元中,变量y与x的关系是:,编程根据x的值求y值并放回原单元。,分析
3、:根据x的大小来决定y的值。 取x、判断x的大小、给y赋值、存y,MOV A,30H JZ NEXT ANL A,#80H JZ LP MOV A,#05H ADD A,30H MOV 30H,A SJMP LP NEXT:MOV 30H,#20H LP:SJMP $,例3:多分支程序(散转程序) 根据R7的内容转向相应的处理程序。设R7的内容为0N,对应的处理程序的入口地址分别为PR0PRN。 MOV DPTR,#TAB ;置表首地址 MOV A,R7 ;分支转移序号送A RL A ADD A,R7 ;分支转移序号乘以3 JMP A+DPTR TAB:LJMP PR0 LJMP PR1 LJ
4、MP PRN,练习:两个无符号数比较大小 将片外RAM 0040H、0041H地址中的内容相比较,其中较大数存入片外RAM 0042H地址中。,按某种控制规律重复执行的程序,三.循环结构程序,循环程序一般由: 初始化部分 循环体部分-处理部分、修改部分、控制部分 结束部分 其结构一般有两种: 先进入处理部分,再控制循环 至少执行一次循环体 先控制循环,再进入处理部分 循环体是否执行,取决于判断结果。,先执行后判断,先判断后执行,例1:假设在片内RAM40H单元开始存放有8个无符号字节数,找出其中最大值,存入30H单元中。 MOV R0,#40H MOV R2,#7 MOV 30H,R0 LOO
5、P:INC R0 MOV A,R0 CJNE A,30H,NEXT NEXT: JC LOP1 MOV 30H,A LOP1:DJNZ R2,LOOP END,例2:将内部数据存储器30H7FH单元的内容传送到外部数据存储器以1000H开始的连续单元中去。 解: 30H7FH共计80个单元,需传送80次数据。将R2作为循环计数寄存器。,MOVR0, #30H MOVDPTR, #1000H MOVR2, #50H LOP:MOVA, R0 MOVXDPTR, A INCR0INCDPTR DJNZR2,LOPEND,13,例3 :将内部RAM中起始地址为data的数据串送到外部RAM中起始地址
6、为buffer的存储区域中,直到发现$字符,传送停止。-循环次数事先不知道先判断,后执行。,MOV R0,#data MOV DPTR,#buffer LOOP1:MOV A,R0 CJNE A,#24H,LOOP2 ;判断是否为字符 SJMP LOOP3 ;是,转结束 LOOP2:MOVX DPTR,A ;不是,传送数据 INC R0 INC DPTR SJMP LOOP1 ;传送下一数据 LOOP3:END,例4:编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1s。 MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置
7、内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周250 =500机周 DJNZ R6,DLP1 ; 500机周20= 10000机周 RET 说明:MOV Rn指令为1个机器周期; DJNZ指令为2个机器周期; RET指令为2个机器周期; (2250)+1+220+1+21s=10063s10ms,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 SETB P1.7 7.假定(50H)=0A4H,执行下列指令: MOV SP,#30H PUSH 50H POP 40H 结果:SP的内容为 ,40H单元的内容为 。 8.书86页习题4-4。,
限制150内