lec05语言中的操作数_第1页
lec05语言中的操作数_第2页
lec05语言中的操作数_第3页
lec05语言中的操作数_第4页
lec05语言中的操作数_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第 05 讲讲 汇编语言中的操作数汇编语言中的操作数n常量常量:作为硬指令的立即数或伪指令的参数:作为硬指令的立即数或伪指令的参数n变量:变量:主要作为存储器操作数主要作为存储器操作数 MOV 指令指令MOV指令的功能指令的功能一、一、 常量常量常量表示一个固定的数值,它又分成多种形式常量表示一个固定的数值,它又分成多种形式n常数n字符串n符号常量1.数值表达式(1)常数)常数n指由指由10、16、2和和8进制形式表达的数值,各种进制进制形式表达的数值,各种进制的数据以后缀字母区分,默认不加后缀字母的是十进的数据以后缀字母区分,默认不加后缀字母的是十进制数制数十进制十进制由由0 9数字组成,

2、以字母数字组成,以字母D(d)结尾)结尾(缺省情况可以省略)(缺省情况可以省略)100,255D十六进制十六进制由由0 9、A F数字组成,以字母数字组成,以字母H(h)结尾,以字母开头的常数需要加)结尾,以字母开头的常数需要加一个前导一个前导064H,0FFH,0B800H二进制二进制由由0和和1两个数字组成,以字母两个数字组成,以字母B(b)结尾结尾01100100B(2) 字符串字符串n字符串常量是用字符串常量是用单引号单引号或或双引号双引号括起来的单个字括起来的单个字符或多个字符符或多个字符n其数值是每个字符对应的其数值是每个字符对应的ASCII码值码值n例如:例如:d(等于(等于64

3、H)AB(等于(等于4142H)Hello, Assembly !(3) 符号常量符号常量n符号常量使用标识符表达一个数值符号常量使用标识符表达一个数值n符号常量定义伪指令有符号常量定义伪指令有“EQU”和和“”两种两种:符号名符号名 EQU 数值表达式数值表达式符号名符号名 数值表达式数值表达式nEQU用于数值等价时用于数值等价时不能重复定义不能重复定义符号名符号名,但,但“”允许有重复赋值允许有重复赋值。例如:。例如:X= 7;等效于:;等效于:X equ 7X= X+5 ;“X EQU X+5”是错误的是错误的汇编时,对汇编时,对EQU定义的符号名用对应的表达式进行定义的符号名用对应的表

4、达式进行“替换替换”。例如:例如:NUMEQU 215 MOD 15ERR_MSGEQU“Data Override ”MESSAGEDBERR_MSG;等价于;等价于MESSAGE DB “Data Override ”MOV CX, NUM+1;等价于;等价于MOVCX, 215 MOD 15+1(4) 数值表达式数值表达式n数值表达式一般是指由数值表达式一般是指由运算符运算符连接的连接的各种常量各种常量所构成所构成的表达式的表达式n汇编程序汇编程序在汇编过程中计算表达式在汇编过程中计算表达式,最终得到一个确,最终得到一个确定的数值,所以也是常量定的数值,所以也是常量n表达式的数值在程序运

5、行前的汇编阶段计算,所以表达式的数值在程序运行前的汇编阶段计算,所以组组成表达式的各部分必须在汇编时就能确定成表达式的各部分必须在汇编时就能确定n汇编语言支持多种运算符汇编语言支持多种运算符q例如:例如:mov ax,3*4+5;等价于:;等价于:mov ax,17构成数值表达式可使用以下几类运算符:构成数值表达式可使用以下几类运算符:l 算术运算符算术运算符 (+,-,*,/,mod)l 逻辑运算符逻辑运算符 (shl, shr, and, or, xor, not)l 关系运算符关系运算符 (gt, ge, eq, le, lt, ne)l 地址运算符地址运算符 (seg, offset)

6、l 类型运算符类型运算符 (type, length, size)n【例例 2 5】数值表达式及其应用数值表达式及其应用n;汇编语言指令汇编语言指令 nMOV DH, 01100100B SHR 2nMOV BL, 8CH AND 73HnMOV AH, 8CH OR 73HnMOV AX, 10H GT 16nMOV BL, 6 EQ 0110BnMOV BX, 32+(13/6)MOD 3);汇编后形成的指令汇编后形成的指令;MOV DH,19H;MOV BL,0 ;MOV AH,0FFH;MOV AX,0 ;MOV BL,0FFH ;MOV BX,0022HMOV AX, BX+2需要把

7、需要把BX的值与常数的值与常数2相加并存入相加并存入AX的操作只能在的操作只能在程序执行阶段由以下两条指令完成:程序执行阶段由以下两条指令完成:MOV AX, BX ;BX寄存器值存入寄存器值存入AX寄存器寄存器ADDAX, 2 ;AX寄存器的值加寄存器的值加2,结果存,结果存AX 不良用法不良用法二、二、 变量变量 n变量变量实质上是指内存单元的数据,虽然内存单元地址实质上是指内存单元的数据,虽然内存单元地址不变,但其中存放的数据可以改变不变,但其中存放的数据可以改变n变量需要变量需要事先定义才能使用事先定义才能使用n变量定义伪指令变量定义伪指令为变量申请为变量申请以固定长度为单位以固定长度

8、为单位的存储的存储空间空间,并可以同时将相应的存储单元初始化,并可以同时将相应的存储单元初始化n定义后的变量可以利用定义后的变量可以利用变量名变量名等方法引用其中的数据等方法引用其中的数据,即变量的数值,即变量的数值(1) 变量的定义变量的定义 n变量定义的汇编语言格式为:变量定义的汇编语言格式为:变量名变量名 伪指令伪指令 初值表初值表q变量名变量名为用户自定义标识符,表示初值表首元素的逻辑地址为用户自定义标识符,表示初值表首元素的逻辑地址,常称为,常称为符号地址符号地址。q初值表初值表是用逗号分隔的参数是用逗号分隔的参数,主要由常量或主要由常量或“?”组成。其中组成。其中“?”表示未赋初值

9、表示未赋初值n多个存储单元如果初值相同,可以用复制操作符(重多个存储单元如果初值相同,可以用复制操作符(重复定义符)复定义符)DUP进行定义:进行定义:重复次数重复次数 DUP(重复参数重复参数)变量定义伪指令变量定义伪指令 DB(Define Byte):每个数据占用一个字节():每个数据占用一个字节(8b) DW(Define Word):每个数据占用一个字():每个数据占用一个字(16b) DD(Define Double Word):每个数据占用一个双字):每个数据占用一个双字(32b) DQ(Define QuartWord):每个数据占用):每个数据占用8个字节个字节(64b) D

10、T(Define Ten Byte ):每个数据占用):每个数据占用10个字节(个字节(80b)【例【例 2 3】 变量定义举例变量定义举例DSEGSEGMENTBVAR DB 1,-2,AB,3 DUP(a),?;字节变量字节变量, 8项项WVAR DW 1,-2,AB,3 DUP(a),?;字变量,字变量,7项项DVAR DD 1,-2,AB,3 DUP(a),?;双字变量,双字变量,7项项VAR1 DW WVAR, DVAR, DVAR-WVAR, VAR1-DVAR;字变量,字变量,4项项VAR2 DD WVAR, DVAR, DVAR-WVAR, VAR1-DVAR;双字变量,双字变

11、量,4项项VAR3 DB DVAR-WVAR, VAR1-DVAR;字节变量,字节变量,2项项DSEGENDS n有符号数用它的补码存储有符号数用它的补码存储n字符用字符用ASCII代码存储代码存储nDB定义的数据在定义的数据在 -128255 之内之内n变量名代表首个单元的地址变量名代表首个单元的地址nDW定义的数据在定义的数据在-32768, 65535内内n出现在参数部分的变量名用这个变量的偏移地址出现在参数部分的变量名用这个变量的偏移地址代替代替n多字节数据的存放:多字节数据的存放: “高高低低高高低低”(小端方式)(小端方式)存储区域分配存储区域分配 (1,-2,AB,3 DUP(a

12、),?)(2)变量和标号的属性)变量和标号的属性n变量和标号都表示存储单元。变量和标号都表示存储单元。q变量表示的存储单元中存放数值变量表示的存储单元中存放数值q标号表示的存储单元中存放指令代码。标号表示的存储单元中存放指令代码。n变量和标号具有如下三种属性:变量和标号具有如下三种属性:q 段属性(段属性(SEG):): 变量或标号对应存储单元所在段的段地址。变量或标号对应存储单元所在段的段地址。q 偏移地址属性(偏移地址属性(OFFSET):变量或标号对应的首个存储单元):变量或标号对应的首个存储单元的段内偏移地址。的段内偏移地址。q 类型属性(类型属性(TYPE): 变量的类型属性指的是变

13、量占用存储单变量的类型属性指的是变量占用存储单元的字节数。属性值由变量定义伪指令来决定。元的字节数。属性值由变量定义伪指令来决定。q主要的变量和标号类型属性及返回值主要的变量和标号类型属性及返回值 (变量变量 / 标号标号 / 常数常数) DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR FAR 常数常数 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0(3) 析值运算符析值运算符n析值运算符也称为数值回送运算符,把一些特征析值运算符也称为数值回送运算符,把一些特征或存储器地址的一部分作为数值回送。或存储器地址的

14、一部分作为数值回送。 n常用析值运算符常用析值运算符 SEG 名字名字/标号标号返回名字或标号的段地址返回名字或标号的段地址OFFSET 名字名字/标号标号返回名字或标号的偏移地址返回名字或标号的偏移地址TYPE 名字名字/标号标号返回变量或标号的类型,类型用数值表示返回变量或标号的类型,类型用数值表示LENGTH 变量名变量名返回利用返回利用DUP定义的变量中元素的个数,即重复定义的变量中元素的个数,即重复操作符操作符DUP前的重复次数值,其它情况回送前的重复次数值,其它情况回送1 SIZE 变量名变量名返回返回LENGTHTYPE的值的值 数值回送操作符:数值回送操作符: OFFSET、S

15、EG、TYPE、 LENGTH、SIZE SIZE SIZE 变量变量功能:功能:LENGTH LENGTH * * TYPE TYPEOFFSETOFFSET / SEGSEG 变量变量 / 标号标号功能:回送变量或标号的偏址功能:回送变量或标号的偏址 / / 段地址段地址TYPETYPE 变量变量 / 标号标号 / 常数常数 DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR FAR 常数常数 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0LENGTH LENGTH 变量变量功能:回送由功能:回送由DUP定义

16、的定义的变量的单元数,其它情况回送变量的单元数,其它情况回送1 1MOV AX, LISTMOV AX, OFFSET LIST设变量设变量LIST定义在定义在DATA段中,段中,DATA SEGMENT LIST DW 10,20,30DATA ENDS下面三条指令都是把下面三条指令都是把DATA段的段基址装入段的段基址装入AX: MOV AX, DATA ;DATA代表该段的段基址,是一个立即数代表该段的段基址,是一个立即数MOV AX, SEG DATA ;取;取DATA的段基址,结果是立即数的段基址,结果是立即数MOV AX, SEG LIST ;取;取LIST的段基址,结果是立即数的

17、段基址,结果是立即数对比:对比:;取出变量;取出变量LIST第一个元素送入第一个元素送入AX;取变量;取变量LIST的偏移地址送入的偏移地址送入AX(4) 属性运算符属性运算符n提高访问变量、标号和一般存储器操作数的灵活性提高访问变量、标号和一般存储器操作数的灵活性n常用属性运算符常用属性运算符 类型类型 PTR 变量名变量名/标号标号临时指定或临时改变变量和标号的使用类型临时指定或临时改变变量和标号的使用类型THIS 类型类型用于创建采用当前地址但为指定类型的操作数用于创建采用当前地址但为指定类型的操作数SHORT 标号标号将标号作为短转移处理将标号作为短转移处理段寄存器段寄存器 :用来给一

18、个存储器操作数指定一个段属性用来给一个存储器操作数指定一个段属性, 即段超越即段超越类型限定操作符类型限定操作符 PTRn类型限定操作符类型限定操作符对类型属性进行设置对类型属性进行设置类型名类型名 PTR 名字名字/标号标号q类型名可以是类型名可以是BYTE、WORD、DWORD(依次表示字节(依次表示字节、字、双字)等、字、双字)等,或者是或者是NEAR、FAR(分别表示近、远)(分别表示近、远)等等例:例:MOV AX, BVAR MOV AX, WORD PTR BVAR(5)变量的应用)变量的应用n变量变量具有存储单元的逻辑地址具有存储单元的逻辑地址n指令语句中指令语句中q通过变量名

19、引用其指向的首个数据通过变量名引用其指向的首个数据q通过变量名加减位移量存取以首个数据为基地址的前后通过变量名加减位移量存取以首个数据为基地址的前后数据数据 n伪指令语句中伪指令语句中q主要是在另一个变量定义语句中作为参数部分出现。主要是在另一个变量定义语句中作为参数部分出现。 MOV AL, BVAR;AL 1MOV BL, BVAR+3;BL B【例【例 2 3】 变量应用举例变量应用举例;代码段代码段MOV CL, BVAR; BVAR第第1个数据送个数据送CL,(,(CL)=01HMOV CH, BVAR+2; BVAR第第3个数据送个数据送CH,(,(CH)=41HMOV BX, W

20、VAR; WVAR第第1个数据送个数据送BX,(,(BX)=0001HMOV SI, WVAR+2; WVAR第第2个数据送个数据送SI,(,(SI)=0FFFEH(-2)MOV DX, WORD PTR DVAR; DVAR第第1个数据低字送个数据低字送DX,(,(DX)=0001HMOV AX, WORD PTR DVAR+2; DVAR第第1个数据高字送个数据高字送AX,(,(AX)=0000HMOV DI, VAR1+4; VAR1第第3个数据送个数据送WVAR第第7个数据单元。个数据单元。MOV WVAR+12, DI(6) 变量的定位变量的定位n汇编程序按照指令的先后顺序一个接着一个分配存储汇编程序按照指令的先后顺序一个接着一个分配存储空间,按照段定义伪指令规定的边界定位属性确定每空间,按照段定义伪指令规定的边界定位属性确定每个逻辑段的起始位置(包括偏移地址)个逻辑段的起始位置(包括偏移地址)n定位伪指令定位伪指令ORG控制数据或代码所在的偏移地址控制数据或代码所在的偏移地址ORG 参数参数nORG伪指令是将当前偏移地址指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论