汇编语言CHAP4.ppt

  1. 1、本文档共187页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编语言CHAP4

第四章 汇编语言程序组织 本章要求: ① 能够编写简单的、完整的汇编语言源程序。 ② 掌握上机操作,以验证程序设计及编码的正确性。 主要内容: 汇编源程序结构、常用伪指令及操作符、汇编语言程序上机过程、数据的输入输出等。 4.1 汇编语言语句格式 汇编语句:指令、伪指令、宏指令。 每条指令语句都生成机器代码,各对应一种CPU操作,在程序运行时执行。 伪指令语句由汇编程序在汇编过程中执行,数据定义语句分配存储空间,其它伪指令不生成目标码。 宏指令是用户按照宏定义格式编写的一段程序,可以包含指令、伪指令、甚至其他宏指令。 汇编语言语句格式: [名字] 助记符 <操作数> [;注释] 其中带[ ]的内容是可选的。 名字域是语句的符号地址,可以由26个大小写英文字母、0~9数字、_、$、@、?等字符组成,数字不能出现在名字的第一个字符位置。指令的名字叫做标号,必须以冒号(:)结束。它提供给循环或转移指令的转向地址。伪指令的名字可以是变量名、过程名、段名等。通常,名字具有三属性:段基址、偏移量和类型。标号的类型有NEAR型和FAR型,变量的类型有字节、字、双字、四字等。 助记符域给出操作的符号表示,可以是指令助记符、伪指令助记符等。例如加法指令的助记符是ADD。 操作数域为操作提供必要的信息。每条指令语句的操作数个数已由系统确定,例如加法指令有两个操作数。 注释域用以说明本条语句在程序中的功能,要简单明了。注释以分号(;)开始。 4.2 汇编语言源程序结构 用汇编语言编写程序可以使用两种基本格式。一种是使用完整段定义,另一种是使用简化段定义。完整段定义格式需要较复杂的语法,但它可以提供完整的控制,是大多数汇编程序通用的,也是软件开发中经常使用的。本节介绍使用完整段定义格式书写的汇编语言源程序。 一、典型的.EXE文件结构 .EXE文件是一种可执行程序,它是一个可重定位的装入模块,可以包含多个段,文件的总长度可以超过64K,这种结构便于模块共享。.EXE程序由文件头和程序本身的二进制代码两部分组成,文件头中含有装入程序把该.EXE文件装入内存时所需的有关信息,例如重定位表和段寄存器的初始值等。.EXE结构是DOS普遍采用的一种格式,DOS的大多数应用程序采用.EXE结构,例如DOS外部命令XCOPY、FDISK、CHKDSK等都使用.EXE结构。 DOS装入.EXE文件的过程: ① DOS的装入程序为.EXE程序建立一个256字节的程序段前缀PSP,PSP中包含可以被用户程序使用的DOS入口、DOS为自己所存储的信息、由DOS传递给用户程序的信息等。其中PSP:0处存放一条INT 20H指令。 ② 把文件头读入内存工作区。 ③ 计算可执行模块的大小。 ④ 计算装入的起始段地址。 ⑤ 完成重定位。 ⑥ 初始化段寄存器和指针寄存器。 ⑦ 把控制权交给.EXE程序。装入程序对段和指针寄存器的设置为:CS:IP为主程序的入口地址(程序装入后执行的第一条指令地址)。SS为堆栈段的段基址,SP指向栈顶。其它段寄存器全部被初始化为指向PSP的段基址,以便用户能够访问PSP中的信息。 例. 编程实现123+456→SUM单元的功能。(程序4.1) STSG SEGMENT STACK ‘S’ ;① DW 32 DUP(?) STSG ENDS DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT MAIN PROC FAR ;③ ASSUME CS:CODE,DS:DATA,SS:STASG,ES:NOTHING ;② PUSH DS ;⑥ XOR AX,AX PUSH AX MOV AX,DATA ;⑤ MOV DS,AX MOV AX,A ADD AX,B MOV SUM,AX RET ;⑦推荐程序4.2 MAIN ENDP CODE ENDS END MAIN ;④ 1.段定义伪指令 基本格式: 段名 SEGMENT [定位类型][组合类型][’类别’] ... 段名 ENDS 功能:定义一个段。 说明:段名由用户自己起,要符合汇编语句对名字的要求。SEGMENT定义一个段的开始,ENDS定义该段的结束。[ ]中内容是可选的,定位类型确定段的起始边界,组合类型说明段之间的关系,类别说明本段归于哪一类,类别名由用户自己起,

文档评论(0)

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

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

1亿VIP精品文档

相关文档