《汇编语言程序设计讲课.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计讲课.pdf(12页珍藏版)》请在三一文库上搜索。
1、汇 编 语 言 程 序 设 计 两个内容 分支程序设计 循环程序设计 你午睡了吗? 开始 结束 认真听课睡会再听课 YESNO 开始 体重减到90斤了吗? 减肥进行时. 没有,早着呢 结束 成功了 分支程序设计 变量X的符号函数可用下式表示: y = 1 当当x 0 -1 当当x 0 0 当当x = 0 分支程序设计 SIGEFSIGEF MOVMOV A , XA , X SUBB A , 0SUBB A , 0 JZJZZEROZERO JNCJNCPLUSPLUS MOVMOV Y , 0FFHY , 0FFH JMPJMPCONTICONTI ZERO: MOVZERO: MOV Y
2、, 0Y , 0 JMPJMPCONTICONTI PLUS:PLUS: MOVMOV Y , 1Y , 1 CONTI:CONTI: A=0 则跳转 C=0 则跳转 循环程序设计 循环初态 循环结束条件 循环体 三 个 基 本 概 念 循环程序设计 提出问题 分析问题 解决问题 两个32位的BCD码相加,用循环程序实现 Binary - Coded Decimal 1、指针 2、计数器 3、跳转指令 1、理解BCD码 2、画好程序流程图 3、预测编程可能出现的问题 编写代码,实现具体的问题 开始 取第一个BCD数的 字节存至寄存器 准备第一个BCD数 的循环初始环境 准备第二个BCD数 的循
3、环初始环境 取第二个BCD数的 字节存至累加器并 且从寄存器中取第 一个BCD数相应字 节相加 善后工作 结束 循环四次 循环四次 循环程序设计编码实现 ORG00H LJMPMAIN ORG30H COUNTEQU04H MAIN:MOVDPTR ,#BCD1 MOVR0 , #BCD11 MOVR2 , #COUNT LOP1:MOVA , #0 MOVCA , A+DPTR MOVR0 , A INCDPTR INCR0 DJNZR2 , LOP1 定义程序的入口 定义符号COUNT 将BCD1的地址 送至数据指针 将循环次数送至 寄存器R2,R2充 当计数器 从程序区取第一个 BCD数
4、的第一个字 节送到累加器A 使数据指针地址+1, 指向下一个地址 跳转指令、寄存器寻 址方式,先是寄存器 -1,不为0,满足条 件跳转 MOVDPTR , #BCD2 MOVR0 , #BCD11 MOVR1 , #SUM MOVR3 , #COUNT CLRC LOP2:MOVA , #0 MOVC A , A+DPTR ADDCA , R0 DAA MOVR1 , A INCDPTR INCR0 INCR1 DJNZR3 , LOP2 将第一个BCD数的 地址赋值给数据指 针 将循环次数送至 R3 , 此时R3充当 计数器的功能 与第一个BCD数的 相应字节相加 MOVA , #00H A
5、DDCA , #00H MOVR1 , A J1:JMPJ1 ORG20H BCD1EQU20H DB44H , 55H , 66H , 77H BCD2:DB55H , 44H , 55H , 88H ORG60H BCD11EQU60H DS4 ORG70H SUMEQU70H DS5 END 最后一次可能产生 的进位位相加 存进位位 给符号定义一个值 用DB伪指令在程 序区中预置数据 在RAM中保留4字 节单元 模拟暂停指令 32位BCD数相加程序小结 4、常翻阅 P62 的指令集小结 1、读取ROM中的数据时 ( eg . 变址寻址) 使用MOVC指令 2、EQU语句给符号定义一个值后 不能改变或重新定义该值了 3、相加时,考虑到可能进位的情况 使用ADDC指令 第四章 汇编语言程序设计 标识符、 保留字、 表达式. 常用如EQU、 DB、DS、ORG 1、顺序结构 2、分支结构 3、循环结构 谢 谢 观 赏
链接地址:https://www.31doc.com/p-3334105.html