- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在传统的汇编语言程序设计中
在传统的汇编语言程序设计中,选择结构程序设计一般用转移指令(JMP)加标号来实现,这种程序结构实际上并不是真正的选择结构;在循环程序设计中,一般用循环指令(LOOP)或转移指令来实现循环,这种结构也不具有结构化程序中的WHILE循环或REPEAT循环的结构特征;在程序分支和循环的控制条件方面,每步判断只能判断一个条件,条件增多时,不得不增加判断指令的条数,在这里不能应用逻辑表达式进行条件判断。本文介绍一些设计选择结构程序、循环结构程序、过程子程序及其他一些用于结构化程序设计的语句及用于多条件判断的逻辑表达式。利用这些语句可设计具有高级语言结构风格的结构化汇编语言程序。
1 程序变量说明
在进行变量说明时,可用[S]BYTE、[S]WORD]、[S]DWORD、FWORD、QWORD、TBYTE、REAL4、REAL8及REAL10类型说明符说明变量类型,其中的可选项[S]表示定义的数据为带符号数。定义变量的格式为:[变量名]类型说明符初始值[,初始值]...
2.MODEL伪指令
.MODEL伪指令用于说明存储器模式等,格式为:.MODELmemodel[,langtype][,ostype][,stackoption],其中,memmodel为存储模式,langtype为语言类型(C,PASCAL,BASIC,FORTRAN等),ostype为操作系统类型(OS-DOS),stackoption为栈类型,可取NEARSTACK(SS=DS)或FARSTACK(SS〈〉DS)。
3程序起始及退出代码的产生
语法: .STARTUP.EXIT[表达式].STARTUP为给定的CPU类型及由.MODEL定义的存储模式、操作系统及栈类型产生起始代码,初始化DS、SS及SP,并定义起始地址标号。因而不需要在END指令中给出起始地址标号,程序将自动从.STARTUP处开始执行。在TINY存储模式时还产生ORG100H指令。.EXIT产生终止程序、返回操作系统或调用程序的代码。[表达式]为返回给操作系统或调用???序的一个退出码。
4选择结构(块IF语句)
语法:.IF条件1语句块2[.ELSEIF条件2语句块2]......[.ELSE 语句块n].END IF看到,其语法结构和高级语言基本相同,执行情况也相同。其中的条件为一逻辑表达式,其运算符基本同C语言,为:==、!=、>、>=、<、<=、、!、、。组成逻辑表达式的成分可为:变量、寄存器名、常量及符号CARRY?、OVERFLOW?、PARITY?、SIGN?和ZERO?(依次分别表示标志位CF、OF、PF、SF、ZF为1)。逻辑表达式的结果只有真(非0)或假(0)。逻辑表达式的求值顺序为从左到右,可用括号改变顺序。上述的选择结构可以嵌套。
5循环结构
结构1: 结构2: 结构3:.WHILE条件 .REPEAT .REPEAT语句块 语句块 语句块.ENEW .UNTIL条件 .UNTILCXZ[条件] 其中各条件均为一逻辑表达式。在语法1中给出的结构为WHILE型循环,当条件为真时循环。在语法2和语法3中给出的结构均为UNTIL型循环,当条件为假时循环。在结构3中语句.UNTILCXZ还将使CX减1,并测试其是否为0,当CX为0时也将退出循环。上述各循环结构均可嵌套。循环体内的.BREAK[.IF条件]语句可无条件或有条件退出各循环,而.CONTINUE[.IF条件]语句可在本次循环中跳过循环体内没有执行的代码进入下一轮循环。
6过程的原型说明和调用
过程子程序仍然可用PROC定义,常用的语法可为:namePROC[distance][langtype][USESreglst][,param[:tag]]...[LOCALvarlst] 过程体nameENDP其中,name为过程名,distance说明本过程的属性,常用的为NEAR和FAR。USES说明过程将要用到的寄存器,它们将自动地在过程入口被保存入栈而在过程出口被弹出。langtype为语言类型。param为该过程的参数(将由栈传递)。tag为参数的类型,可为预定义的结构类型,记录类型或BYTE,WORD......等类型。tag也可为VARARG,表示传递的参数个数可变,此时应作为最后一个参数,并应具有C,SYSCALL或STDCALL语言类型。当tag省略时,隐含类型为WORD。LOCAL用于在栈中定义局部变量,这些局部变量能通过名字存取,并能在退出过程时自动释放。
过程原型说明用PROTO,格式为:namePROTO[distance][langtype][,[param]:tag]...过程由PROTO说明后,即可用INVOKE调用。和CALL调用相比,用INVOK
文档评论(0)