- 5
- 0
- 约2.47千字
- 约 16页
- 2021-11-10 发布于河南
- 举报
第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中。 ——根据不同条件转向不同的处理程序 二.分支结构程序 编写分支程序主要在于正确使用转移指令(条件转移指令、比较转移指令、位操作转移指令)。 分支程序有:单分支结构、双分支结构、多分支结构。 例1:求单字节有符号二进制数的补码(设二进制数在累加器A中,将其补码放回到A中) 。 分析: 正数补码是其本身,负数的补码是其反码加1。因此,程序首先判断被转换数符号,负数进行转换,正数则不变。 JNB ACC.7, AAA ;(A)0,不需要转换 MOV C, ACC.7 ;保存符号 MOV 00H, C ;保存符号 CPL A ADD A, #01H MOV C, OOH MOV ACC.7, C ;恢复符号 AAA: RET 例2:设变量x以补码形式存放在片内RAM30H单元中,变量y与x的关系是: 编程根据x的值求y值并放回原单元。 分析:根据x的大小来决定y的值。 取x、判断x的大小、给y赋值、存y A=? y=x+5 0 0 y=20H y=x 0 取x 即(30H) A 开始 存y 即y 30H 结束 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的内容为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地址中。 ——按某种控制规律重复执行的程序 三.循环结构程序 循环程序一般由: 初始化部分 循环体部分--处理部分、修改部分、控制部分 结束部分 其结构一般有两种: 先进入处理部分,再控制循环 至少执行一次循环体 先控制循环,再进入处理部分 循环体是否执行,取决于判断结果。 开始 设置循环初值 循环处理 循环修改 结束处理 结束 循环结束? 开始 设置循环初值 循环处理 循环修改 结束处理 结束 循环结束? Y N 先执行后判断 先判断后执行 例1:假设在片内RAM40H单元开始存放有8个无符号字节数,找出其中最大值,存入30H单元中。 MOV R0,#40H MOV R2,#7 MOV 30H,
原创力文档

文档评论(0)