111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:4193回复:0

经典汇编语言教程:6.2 程序的基本结构

楼主#
更多 发布于:2013-01-25 15:11

在学习高级语言程序设计时,我们知道了程序的三大主要结构:顺序结构、分支结构和循环结构。在汇编语言的源程序也同样有此三大结构,所不同的是它们的表现形式不同。用高级语言编写程序时,由于不使用“转移语句”而使这三种结构清晰明了。
但在汇编语言的源程序中,很难不使用“转移语句”(除非是一些只有简单功能的程序),有时甚至会有各种各样的“转移语句”。由于存在这些转移语句,就使得:汇编语言源程序的基本结构显得不太明确。如果源程序的编写者思维混乱,编写出来的源程序在结构上就会显得杂乱无章,反之,如果编写者条理清晰,安排的操作井然有序,那么,编写出来的程序在结构上就会一目了然。
总之,不论是高级语言的源程序,还是汇编语言的源程序,其程序的三大基本结构也还是万变不离其宗的。

6.2.1 顺序结构


顺序结构是最简单的程序结构,程序的执行顺序就是指令的编写顺序,所以,安排指令的先后次序就显得至关重要。另外,在编程序时,还要妥善保存已得到的处理结果,为后面的进一步处理直接提供前面的处理结果,从而避免不必要的重复操作。
例6.3 编写程序段,完成下面公式的计算(其中:变量X和Y是32位有符号数,变量A,B和Z是16位有符号数)。
A←(X-Y+24)/Z的商,B←(X-Y+24)/Z的余数
解:
DATA1SEGMENT
XDD ?
YDD ?
ZDW ?
ADW ?
BDW ?
DATA1ENDS
CODE1SEGMENT
MOVAX, X
MOVDX, X+2;用(DX:AX)来保存32位变量X的数值
SUBAX,Y
SBBDX, Y+2;(DX:AX)-(Y+2:Y)
ADDAX, 24D
ADCDX, 0;(DX:AX)+24
IDIVZ
MOVA, AX
MOVB, DX
CODE1ENDS

在编程序时,常常需要交换二变量之值。假设需要交换值的变量名为:var1和var2,临时增加的变量名为temp。常用的算法如下:
temp = var1
var1 = var2
var2 = temp

喜欢0 评分0
游客

返回顶部