微机原理微型计算机程序设计.pptVIP

  • 53
  • 0
  • 约 26页
  • 2017-03-31 发布于江苏
  • 举报
微机原理微型计算机程序设计

【例1】延时程序,在实际应用中一般作为子程序调用,现在我们把延时1s的程序设计成子程序。 程序内容如下:(省略段的定义) DELAY1S: PUSHF       PUSH BX       PUSH CX       MOV BX,3E8H ;1000D LP2:  MOV CX,176H LP1:   PUSHF ;无意义消耗时间     POPF ;无意义消耗时间 LOOP  LP1;延时1ms DEC BX      JNZ LP2;延时1s       POP CX        POP BX       POPF      RET 从上面的子程序我们可以看出:子程序中因为用到了BX,CX和标志寄存器,所以程序一开始就用了3条PUSH指令,把这些寄存器内容压进堆栈,以保护CPU的现场;而在返回前,它又用了3条POP指令(遵循“先入后出”的原则)把栈中内容弹回到寄存器中去。当然,这些保护现场和恢复现场的工作在主程序不怕丢失这些内容时,可以不用,或者放在主程序中解决,但一般来说,放在子程序中更妥当,也更通用些。 * * 第6章 微型计算机的程序设计 主要内容 程序设计步骤 简单程序(顺序结构) 分支程序(分支结构) 循环程序(循环结构) 子程序 6.1 程序设计步骤 汇编语言程序设计步骤: (1)分析问题:已知条件、要解决的问题、功能/性能要求等。 (2)建立数学模型:把问题数学化、公式化,便于计算机处理。 (3)确定算法:简单、速度快、精度高、代码量小、编程容易。 (4)绘制程序流程图:用箭头、框图、菱形图等表示程序结构。 (5)内存空间分配:为程序或数据分配内存空间。 (6)编制程序与静态检查:程序结构层次简单、清楚、易懂。 (7)程序调试:利用调试软件DEBUG进行调试。 特点:顺序执行每条指令,执行过程中不发生跳转。 6.2 简单程序(顺序结构) 和数高8位 10055H 和数低8位 10054H 加数高8位 10053H 加数低8位 10052H 被加数高8位 10051H 被加数低8位 10050H 内容 内存地址 【例6.1】用数据运算指令,对两个16位数做加法运算。这两个数从地址10050H开始连续存放,低位在低地址一端,结果放在这两个数之后。 例6.1的程序: MOV AX,1000H    MOV DS,AX    ; DS=1000H   MOV SI,50H    ; 被加数指针SI=50H   MOV DI,52H    ; 加数指针DI=52H   MOV BX,54H    ; 和的指针BX=54H  CLC         ; 清CF   XOR AX,AX    ; 清AX   MOV AX,[SI]  ; 取一个字到AX ADC AX,[DI]  ; AX←AX+[DI]+CF   MOV [BX],AX  ; 存一个字到[BX]   HLT   ; 暂停 6.2 简单程序(顺序结构) 问题:该程序能否简化?如何简化? 简化的程序: MOV AX,1000H    MOV DS,AX    ; DS=1000H  MOV AX,[50H]  ; 取被加数到AX ADD AX,[52H]  ; AX←被加数+加数   MOV [54H],AX  ; 存和数到[54H]   HLT   ; 暂停 例题6.2:P139自学 6.2 简单程序(顺序结构) 6.3 分支程序 分支程序是利用条件转移指令实现程序执行次序改变的一种程序结构形式,即当程序执行到某一指令后,根据某个条件是否满足,分别执行不同的指令序列。 一般来说,分支程序经常是先用比较指令或数据操作及位检测指令等来改变标志寄存器各个标志位。然后用条件转移指令进行分支。 分支程序执行完后可以立即结束,也可以转到公共点结束,如下图所示。 分支程序可以再分支。 程序框图:在绘制程序流程图时,需用菱形判断框,表示判定条件。 6.3 分支程序 分支程序结构流程图(注意:判断出口处应注明Y/N) 【例6.3】求AX累加器 和BX寄存器中两个无符号数之差的绝对值,结果放在内存(2800H)单元中。 6.3 分支程序 是 否 问题:右边程序流程图是否有错误?如何改正?

文档评论(0)

1亿VIP精品文档

相关文档