- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例4-28 LOWBYTE和HIGHBYTE是两个相邻的BYTE类型变量,可以利用LABEL伪指令把它们定义为一个WORD类型的变量AWORD。这样,我们就可以用变量AWORD来访问这两个相邻的单元了。 AWORD LABEL WORD LOWBYTE DB 0 HIGHBYTE DB 0 例4-29 在同一数据区域建立了三种访问方式。BIT_ARRAY、TBYTE_AR_RAY和WORD_ARRAY,都对应同一数据区BYTE_ARRAY。 BYTE_RECORD RECORD B7:1,B6:1,B5:1,B4:1,B3:1,B2:1,B1:1,B0:1 BIT_ARRAY LABEL BYTE_RECORD TBYTE_ARRAY LABEL TBYTE WORD_ARRAY LABEL WORD BYTE_ARRAY DB 100 DUP(0) 4.4.2 标号和变量 1.标号和变量 程序中标号和变量都定义了一个逻辑地址。标号定义一个当前段的段内偏移地址,或者定义一个不在当前段的其他段的段选择符及其段内偏移地址。变量也定义一个地址,该地址存储单元的内容(数据的值)可以通过变量名来引用。 标号和变量都有自己的类型,每个汇编语言标号都具有以下两种类型之一: (1) NEAR:指出标号代表的逻辑地址是一个偏移地址,NEAR是汇编语言的缺省标号类型; (2) FAR:指出标号代表的逻辑地址是一个段选择符和一个偏移量。 每个汇编语言变量的类型必须在定义该变量时给出,以分配一定的存储空间。变量的类型可以是简单类型,或是复合类型。复合类型由一种或多种简单类型构成。 变量的简单类型有以下几种,在汇编语言中的保留字分别为: (1) bit 虽然定义为位,但分配1个字节的存储空间; (2) BYTE 为变量分配8位存储空间; (3) WORD 为变量分配16位存储空间; (4) DWORD 为变量分配32位存储空间; (5) PWORD 为变量分配48位存储空间; (6) QWORD 为变量分配64位存储空间; (7) TBYTE 为变量分配80位存储空间。 复合类型的变量是一个记录或结构。记录和结构是程序员定义的类型。可以利用记录和结构存储分配语句来定义这些类型的变量。 2.符号数据的使用 汇编程序中的标号和变量名是符号数据,所有程序定义的标识符都是符号数据,关键字和保留字也可作为符号。 用EQU伪指令为符号另起一个新名字。用PURGE伪指令告知汇编系统,忽略目标文件信息中的用EQU定义的符号和程序员定义的符号。 1) EQU伪指令 格式:NAME EQU VALUE 其中:NAME是一个汇编语言标识符VALUE赋给NAME的值。 功能:为一个标识符赋一个值,也可为一个符号值建一个别名,或为一个汇编时的常量或运行时的表达式值建立一个标识符。 说明:给标识符赋的值可以是下列之一:变量名、标号名、变量或寄存器表达式、一个寄存器、一个浮点栈元素、一个助记符或指令前缀、一个宏调用或前缀、操作符NOT、AND、OR、XOR、SHL或SHR。VALUE可以是任何地址表达式。 例4-30 标号ALAB代表的值可被EQU超前引用。 ALABEL EQU ALAB ALAB: MOV EAX,0 例4-31 用EQU为80386寄存器定义一个别名。 COUNT EQU ECX PNTR EQU EBX MOV COUNT,10 ;ECX=10 MOV PNTR,OFFSET ARRAY ;EBX=ARRAY的偏移地址 例4-32 为指令MOV和INC定义一个别名。 DATAMOVE EQU MOV INCREMENT EQU INC DATAMOVE EAX,EBX ;此语句即MOV EAX,EBX INCREMENT EAX ;此语句即INCEAX 例4-33 用EQU赋常量。 TDTAL EQU 6 PI EQU 3.141592653589793 DD PI ;单精度 DQ PI
原创力文档


文档评论(0)