汇编语言程序设计第四章.ppt

  1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言程序设计 Assembly Language Programming 汇编语言程序格式 汇编语言源程序由一个或多个逻辑段组成。 一个程序中可以有几个同一类型的逻辑段。 必须至少有一个代码段。 源程序的结束标志——“END”语句 [注]源程序分段的目的在于程序结构清晰、便于内存分配,寻址方便,一个源程序需要设置几个段应根据具体问题来定。 逻辑段 一个逻辑段由若干条汇编语言语句组成 逻辑段的类型 程序段(代码段)——主要由指令语句组成,完成源程序的功能。 数据段——定义数据及符号的伪指令组成。 附加段——定义数据及符号的伪指令组成。 堆栈段——定义堆栈伪指令组成。 1. 变量、标号、表达式 1. 变量、标号、表达式 变量与标号 均为程序中定义的符号地址,以名标识并按名访问,汇编时确定偏移地址 表达式 包括数值表达式和地址表达式 汇编时求值 变量 变量 变量——是指数据单元的符号地址。 变量的书写格式:不能使用系统保留字、不能以数字开头 变量的定义:用数据定义伪指令来定义 变量的属性: 段属性——变量的段地址 偏移属性——变量的偏移地址 类型属性——变量所指单元的类型,字节变量、字变量、双字变量等 标号 标号 标号——一个指令单元的符号地址。 标号的书写格式:不能使用系统保留字、不能以数字开头 标号的定义:在一条指令语句前输入标号且用“:”隔开,即定义了该标号;或用Label来定义 标号的属性: 段属性——是指定义标号所在段的段地址。 偏移属性——是指定义标号处到段地址的距离。 类型属性——NEAR型和FAR型。 表达式 数值表达式——用常数、符号常数和算术、逻辑、关系运算符组成的表达式。如:(75*2+X)/Y 地址表达式——由“变量、标号、“+”、“-” 数值表达式组成。 如:DATA+5,VARY[BX]; [注]含有变量的地址表达式其类型与该变量一致,如VARY[BX],VARY+4与VARY类型一样; 地址表达式可以相减,不能相加。 算术运算 算术运算符包括:+(加)、-(减)、*(乘)、/(除)、MOD(求模)几种,它既可以用于数值表达式又可用于地址表达式。 例如: MOV AL, 25*4 –50 MOV DL, 10 MOD 3 地址计数器($) 汇编器在将源地址转化为目标程序过程中,需要使用地址计数器跟踪其中代码或数据的偏移地址。 $是一个特殊的地址表达式,表示当前的偏移地址,即地址计数器的当前值。 在指令语句和伪指令语句中,常常引用$符号作为地址计数器,$的值在不断发生变化,即$在程序中不同的位置其值是不同的。 例如: ARRAY DW 1, $ , 2+$ ,4 - 5 SUM DW $ DS:0100H 01 00 02 01 06 01 FF FF 08 01 2. 语句格式 3. 基本伪指令 伪指令语句——非执行语句,用来指示编译器进行编译的语句,没有机器代码对应。 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 伪指令分类 处理器选择伪指令 段定义语句 变量定义语句 符号定义语句 LABEL伪指令 段类型说明语句 程序结束伪指令 起始地址和对准语句 (1)处理器选择伪指令 在缺省方式下,MASM只承认8086指令。 为了使用更高的CPU指令,必须使用处理器选择伪指令,主要包括: .8086 .286 .286P .386 .386P .486 .486P .586 .586P .686 .686P 分别表示其后面的代码使用相应CPU的指令。其中,结尾的P表示使用特权指令。 若使用32位CPU新增指令以及寄存器或内存寻址方式,则至少要用.386伪指令。 (2) 段定义伪操作-完整段定义 段名 segment [STACK] [USE16/ USE32] ... ;语句序列 段名 ends 完整段定义由SEGMENT和ENDS这一对伪指令实现,SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束 段名对外表现为立即数,为该段的段地址 STACK定义堆栈段:自动给SS和SP赋值 USE16指出使用16位段。 在实模式下,只能使用16位段,而32位段只能用于保护模式程序。 在实模式下,如果要使用32位指令,还必须在段定义时给出USE16。 (3)数据定义语句 格式: [变量] DB/DW/DD/ DF / DQ / DT 操作数1,…,操作数n 功能: 定义变量; 在内存中分配一组存储单元; 并对单元进行初始化。 分类 DB:用来定义字节,其后每个操作数占用一个字节。 DW:用来定义字,其后每个操作数占用一个字。 DD:用来定义双字,其后每个操作数占用两个字。 DQ:用来定义四个字,其后每个操作数占用四个字。 D

文档评论(0)

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

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

1亿VIP精品文档

相关文档