- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 7.2 汇编语言源程序的格式 由程序例可以看出,汇编语言源程序的结构是(分段结构)形式,一个汇编语言源程序由若干段(SEGMENT)组成,每个段以(SEGMENT语句)开始,以(ENDS语句)结束。整个源程序的结尾是(END语句)。 汇编语言源程序中的段与CPU管理的存储器的段,既有联系,又在概念上有所区别。 对于x86 CPU,例如8086/8088,拥有四个段寄存器(CS,ES,SS和DS),因此CPU对存储器按照四个物理段进行管理,即数据段、附加段、堆栈段和代码段。任何时侯CPU只能访问四个物理段。 由于微处理器对存储器的管理是分段的,因此,在汇编语言程序中也要求分段组织指令、数据和堆栈,以便将源程序汇编成为目标程序后,可以分别装入存储器的相应段中。 * 7.2 汇编语言源程序的格式 7.2.2 汇编语言语句的类型和格式 1.语句的类型 汇编语言源程序中的语句可以分为指令语句和伪指令语句两种类型: ①指令语句:是能产生目标代码,CPU 可以执行 的能完成特定功能的语句。 ②伪指令语句:是一种不产生目标代码的语句,仅 用来在汇编过程中告诉汇编程序应如何汇编。例 如,告诉汇编程序已写出的汇编语言源程序有几个 段,段的名字是什么;定义变量,定义过程,给变 量分配存储单元,给数字或表达式命名等。显然, 伪指令语句是汇编程序在汇编时使用的。 7.2 汇编语言源程序的格式 (1)名字-指令语句中的名字 汇编语言语句的第一个组成部分是名字(Name)。 在指令语句中,名字是一个标号,实质上是指令的符号地址。并非每条指令语句必须有标号,但如果一条指令前面有一标号,则程序中其他地方就可以引用这个标号。在前面程序例中,START、LOOP1就是标号。指令语句名字标号后面通常有一个冒号。标号有三种属性:段、偏移量和类型。 ① 标号的段属性是定义标号在程序段的段地址。当程序中引用一个标号时,该标号的段值应在CS寄存器中。 ② 标号的偏移量属性表示标号所在段的起始地址到定义该标号的地址之间的字节数。偏移量是一个16位无符号数。 ③ 标号的类型属性有两种:NEAR和FAR。前一种标号可以在段内被引用,地址指针为2字节;后一种标号可以在其他段被引用,地址指针为4字节。如果定义一个标号时后跟冒号,则汇编程序确认其类型为NEAR。 * 7.2 汇编语言源程序的格式 伪指令语句中的名字可以是变量名、段名、过程名。有些伪指令规定前面必须有名字,有些则不允许有名字,也有一些伪指令的名字是任选的。即不同的伪指令对于是否有名字有不同的规定。伪指令语句的名字后面通常不跟冒号,这是它和标号的一个明显区别。 很多情况下伪指令语句中的名字是变量名。变量名代表存储器中一个数据区的名字。例如前面例中的DATA1、DATA2就是变量名。变量也有三种属性:段、偏移量和类型。 ① 变量的段属性是变量所代表的数据区所在段的段地址。由于数据区一般在存储器的数据段中,因此变量的段地址常常在DS和ES寄存器中。 ② 变量的偏移量属性是该变量所在段的起始地址与变量的地址之间的字节数。 ③ 变量的类型属性有DB(BYTE,字节)、DW(WORD,字)、DD(Double WORD,双字)、 DQ (四字)、DT (十字)等,表示数据区中存取操作对象的大小。 * (1)名字-伪指令语句中的名字 7.2 汇编语言源程序的格式 TYPE、LENGTH和SIZE运算符应用例 VAR DW ? ARRAY DD 10 DUP(?) STR DB THIS IS TEST‘ MOV AX,TYPE VAR MOV BX,TYPE ARRAY MOV CX,TYPE STR MOV DX,LENGTH ARRAY MOV SI,SIZE ARRAY 变量ARRAY的个数为10, 类型为DWORD(双字),因 此,SIZE ARRAY的结果为 10×4=40。 SIZE的运算结果等于 LENGTH的运算结果乘以 TYPE 的运算结果。 ;变量VAR的类型为字 ;变量ARRAY的类型为双字 ;变量STR的类型为字节 TYPE返回值 存储器操作数类型 1 2 4 6 8 10 -1 -2 BYTE WORD DWORD FWORD QWORD TBYTE NEAR FAR * ;(AX)←2 ;(BX)←4 ;(CX)←1 ;(DX)←10 ;(SI)←40 65H F0H 17H ‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘!’ 41H 42H 42H 41H
文档评论(0)