资源描述:
《汇编简化段格式演示文稿(OY).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、简化段汇编程序设计完整段定义格式DATASEGMENT;定义数据段┅;定义数据DATAENDS;数据段结束STACKSEGMENTSTACK;定义堆栈段┅;分配堆栈段的大小STACKENDS;堆栈段结束CODESEGMENT'CODE';定义代码段ASSUMECS:CODE,DS:DATA,SS:STACK;CS/DS/SS指向的逻辑段START:MOVAX,DATA;设置数据段的段首址MOVDS,AX┅;程序代码MOVAH,4CH;返回操作系统INT21HCODEENDS;代码段结束ENDSTART;汇编结束简化段定义格式.MODEL
2、SMALL;定义程序的存储模式,一般采用SMALL.386;程序中可使用386指令.STACK;定义堆栈段,默认为1024Byte.DATA;定义数据段,一般放具有初值的变量┅;数据定义.DATA?;定义数据段,一般放不具有初值的变量┅;数据定义.CODE;定义代码段.STARTUP;程序启动点,┅;代码定义.EXIT;程序结束END;汇编结束分支程序设计(选择结构)分支控制伪指令的格式是:.IF条件表达式分支体[.ELSEIF条件表达式分支体][.ELSE分支体].ENDIF方括号内的部分为可选项。分支体是汇编指令。条件表达式是变量、
3、常量、寄存器等用操作符连接在一起生成的表达式。条件表达式中可用的操作符见下表。操作符功能操作符功能操作符功能==等于&&逻辑与CARRY?CF=1?!=不等于
4、
5、逻辑或OVERFLOW?OF=1?>大于!逻辑非PARITY?PF=1?>=大于等于SIGN?SF=1?<小于&位测试ZERO?ZF=1?<=小于等于()改变优先级例:编程求Y=
6、X
7、。.MODELSMALL.386.DATAXSDWORD-12.DATA?YSDWORD?.STACK.CODE.STARTUPMOVEAX,X.IFX>=0MOVY,EAX.ELSENEGEAX
8、MOVY,EAX.ENDIF.EXITEND循环程序设计循环控制伪指令MASM6.X提供了类似高级语言的循环控制伪指令,使编写汇编程序更简单。学完这些伪指令以后,您会再次体会到像使用C语言一样来编写汇编程序。这些循环控制伪指令是:.WHILE/.ENDW:用于先判断再执行的方式。.REPEAT/.UNTIL与.REPEAT/.UNTILCXZ:用于先执行再判断方式。.BREAK:退出循环。.CONTINUE:终止本次循环,开始下一次循环。1..WHILE/.ENDW.WHILE/.ENDW伪指令的格式是:.WHILE条件表达式循环体.E
9、NDW.REPEAT/.UNTIL伪指令的格式是:.REPEAT循环体.UNTIL条件表达式.REPEAT/.UNTILCXZ伪指令的格式是:.REPEAT循环体.UNTILCXZ[条件表达式];CX-1→CX,直到条件为真并且CX=0.BREAK格式:.BREAK[.IF条件表达式]功能:①.BREAK.IF条件表达式当条件表达式为真时无条件退出当前循环。②.BREAK无条件退出当前循环。.CONTINUE格式:.CONTINUE[.IF条件表达式]功能:①.CONTINUE.IF条件表达式当条件表达式为真时终止本次循环,开始下一次循
10、环。②.CONTINUE无条件终止本次循环,开始下一次循环。阅读程序,填空,做思考题。程序功能:从BUF开始的11个单元中,存放着11个整数,统计其中正数并且是偶数的个数,存入R中。DATASEGMENTBUFDB–2,5,-3,6,100,0,-20,-9,8,-10,21N=①RDW?DATAENDSCODESEGMENT'CODE'②BEGIN:MOVAX,DATA③LEABX,BUFMOVCX,N④LOPA:CMP[BX],BYTEPTR0⑤TEST[BX],BYTEPTR1⑥INCAXNEXT:INCBXDECCX⑦MOVR,
11、AXMOVAH,4CHINT21HCODEENDSENDBEGIN思考题1.用简化段模式重写上述程序。2.选择书上的完整段程序,改写成简化段模式。