《汇编语言》第4章汇编语言程序.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 系统约定: 当使用字符串操作指令时,源串必须存储在数据段中,目的串必须存储在附加数据段中,但源串允许使用段跨越前缀来修改。在与REP联用时还必须先把数据串的长度值送到计数寄存器CX中,以便控制串操作指令的结束,因此在执行该类指令前,应该首先做好以下准备工作。 ①把存放在数据段中的源串首地址(如反向传送则应是末地址)放入源变址寄存器SI中; ②把将要存放数据串的附加段中的目的串首地址(或反向传送时的末地址)放入目的变址寄存器DI中; ③把数据串长度放入计数寄存器CX中; ④建立方向标志(CLD,DF=0,正向;STD,DF=1,反向)。 完成这些准备工作后,即可使用串操作指令。 * * 串传送指令 语句格式: ①MOVS OPD,OPS。 ②MOVSB—字节串传送 ③MOVSW—字串传送 功 能: ①(DS:[SI])→ES:[DI]。 ②当DF=0时,(SI)和(DI)增量1(字节操作)或2(字操作)。 当DF=l时,(SI)和(DI)减量1(字节操作)或2(字操作)。 * * 该指令的功能是: 将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送到以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。其中OPD、OPS分别为目的串和源串的符号首址,MOVS根据该首地址定义的类型确定串操作的类型(字还是字节)。 MOVS OPD,OPS 指令语句的等价形式为: MOVS ES:BYTE PTR [DI],DS:[SI] 第2种和第3种格式由于已用字符“B”、“W”指出了串操作的类型,因此不用带操作数了(其它串操作指令在格式上与该指令类似)。 * * 4.3.5 控制转移指令 控制转移指令包括无条件转移指令和条件转移指令以及循环指令。 一、无条件转移指令 语句格式:JMP <转向地址> 其中,转向地址是标号或地址表达式,寻址方式有直接和间接两种。 功 能:无条件地转移到指令指定的转向地址处,去执行从该地址开始的指令。 * * 二、条件转移指令 8086提供了30条条件转移指令,其基本格式为: J×× <标号> 其中,字母J后的“××”是指条件。若条件成立,则程序转移至由标号标识的指令处执行。若条件不满足,则顺序执行下一条指令。 所有条件转移指令都是以某些标志位的状态作为依据改变IP当前值,实现目标代码转移的。其目标操作数都是近标号,即只能实现段内转移。 所有条件转移指令对状态标志位均无影响。 * * 根据标志位的个数,可分为简单、无符号数和带符号数三类条件转移指令。 1.简单条件转移指令 简单条件转移指令只根据标志寄存器中单一标志位的状况做判断,以实现转移。指令有14条,用了5个标志位。 2.无符号数条件转移指令 无符号数条件转移指令使用标志寄存器中CF和ZF两标志位的状况做判断,以实现转移。其指令有8条。 3.带符号数条件转移指令 带符号数条件转移指令使用标志寄存器中SF、OF和ZF 3个标志位的状况做判断,以实现转移。其指令有8条。 * * 四、循环指令 80x86为了简化循环程序的编写,设计了3条循环指令 ,LOOP,LOOPZ,LOOPNZ 这三条指令的执行步骤是: ①(CX)←(CX)-1 ②检查是否满足测试条件,如果条件满足则指令转移到OPD入口地址处。 应用见相关例题: * * 4.3.6 处理机控制指令 1.标志处理指令 2.其他处理机指令 标志寄存器的重要性。 * * 4.4 汇编语言伪指令 用汇编语言设计程序时,经常需要向汇编程序提供必要的信息,如数据和名字说明、程序的开始与结束说明、过程说明等。程序中的这些信息并无对应的机器指令,因而不产生机器代码,仅供汇编程序执行某些特定的任务,故称为伪操作,又称为伪指令。 80x86汇编语言有丰富的伪指令,如:符号定义伪指令、数据定义伪指令、段定义伪指令、程序开始与结束伪指指令、对准与基数控制伪指令等。 * * 4.4.1 符号定义伪指令 汇编语言中的所有名字(变量名、标号名、过程名、记录名、指令助记符、寄存器名等)都是用符号表示的,故又统称为符号名。这些符号名可以通过符号定义伪指令重新命名,也可以定义新的类型属性,因而给程序设计带来很大的灵活性。 1.EQU伪指令 2.“=”伪指令 * * 4.4.2 数据定义伪指令 常用的数据定义伪指令有DB、DW、DD、DQ、DT,主要用来定义变量。 数据定义语句的格式和功能如下: 格式:[变量名] 数据定义伪指令 表达式[,…] 功能:定义一数据存储区,类型由数据定义伪指令指定。 DB:数据类型是字节,每个操作数都占有一个字节。 DW:数据类型是字,每个操作数占有一个字,其低位字节在低字节地址中,高位字节在高字节地址中。 DD:数据类型是双

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档