32位汇编语言02综述_第1页
32位汇编语言02综述_第2页
32位汇编语言02综述_第3页
32位汇编语言02综述_第4页
32位汇编语言02综述_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

1、第第2 2章章 数据表示和寻址数据表示和寻址2.1 2.1 数据表示数据表示2.2 2.2 常量表达常量表达2.3 2.3 变量应用变量应用2.4 2.4 数据寻址方式数据寻址方式第第2 2章章 数据表示和寻址数据表示和寻址理解计算机的数据表达理解计算机的数据表达熟悉汇编语言的常量表达熟悉汇编语言的常量表达掌握汇编语言的变量定义和属性掌握汇编语言的变量定义和属性掌握处理器指令的数据寻址方式掌握处理器指令的数据寻址方式第第2 2章章 数据表示和寻址数据表示和寻址3 32.1 2.1 数据表示数据表示数据(数据(DataData):计算机处理的对象:计算机处理的对象对应指令操作的对象:对应指令操作

2、的对象:操作数(操作数(OprandOprand)计算机中的数据要用二进制的计算机中的数据要用二进制的0 0和和1 1组合表示组合表示进入计算机的任何信息都要转换成进入计算机的任何信息都要转换成0 0和和1 1数码数码IA-32IA-32整数指令支持的基本数据类型整数指令支持的基本数据类型n8 8、1616、3232、6464位无符号整数位无符号整数n8 8、1616、3232、6464位有符号整数位有符号整数nASCIIASCII字符、字符串和字符、字符串和BCDBCD码码第第2 2章章 数据表示和寻址数据表示和寻址4 42.1.1 2.1.1 数制数制人习惯使用十进制计数人习惯使用十进制计

3、数计算机使用二进制进行数据处理计算机使用二进制进行数据处理十六进制数便于表达二进制数十六进制数便于表达二进制数第第2 2章章 数据表示和寻址数据表示和寻址5 51. 1. 二进制二进制便于计算机存储及物理实现便于计算机存储及物理实现特点:逢二进一,由特点:逢二进一,由0 0和和1 1两个数码组成,基数两个数码组成,基数为为2 2,各个位权以,各个位权以2 2k k表示表示二进制数:二进制数:a an na an-1n-1aa1 1a a0 0 .b.b1 1b b2 2bbm ma an n2 2n na an-1n-12 2n-1n-1a a1 12 21 1a a0 02 20 0 b b

4、1 12 2- -1 1b b2 22 2- -2 2b bm m2 2- -m m其中其中a ai i,b bj j非非0 0即即1 1二进制数的算术运算:二进制数的算术运算:逢逢2 2进进1 1、借、借1 1当当2 2示意图示意图第第2 2章章 数据表示和寻址数据表示和寻址二进制数的算术运算二进制数的算术运算返回返回第第2 2章章 数据表示和寻址数据表示和寻址2. 2. 逻辑运算逻辑运算事件的假和真可用数码事件的假和真可用数码0 0和和1 1表示表示事件之间的关系可以利用二进制表达事件之间的关系可以利用二进制表达数字电路的低高电平用数码数字电路的低高电平用数码0 0和和1 1表示表示数字信

5、号之间的关系可以利用二进制描述数字信号之间的关系可以利用二进制描述数码数码0 0和和1 1仅仅代表两种状态仅仅代表两种状态它们的它们的运算是逻辑运算运算是逻辑运算n逻辑与逻辑与ANDAND:1101 1101 0011 = 0001 0011 = 0001n逻辑或逻辑或OROR:1101 1101 0011 = 1111 0011 = 1111n逻辑非逻辑非NOTNOT: 1101 = 00101101 = 0010n逻辑异或逻辑异或XORXOR: 1101 1101 0011 = 1110 0011 = 1110 第第2 2章章 数据表示和寻址数据表示和寻址3. 3. 十六进制十六进制用于表

6、达二进制数,相互转换简单用于表达二进制数,相互转换简单基数基数1616,逢,逢1616进位,位权为进位,位权为1616k k1616个数码:个数码:0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,A A,B B,C C,D D,E E,F F十六进制数:十六进制数:a an na an-1n-1aa1 1a a0 0.b.b1 1b b2 2bbm ma an n1616n na an-1n-11616n-1n-1a a1 116161 1 a a0 016160 0b b1 11616- -1 1b b2 21616- -2 2b bm m1616- -m m

7、其中其中a ai i,b bj j是是0 0F F中的一个数码中的一个数码十六进制数的加减:逢十六进制数的加减:逢1616进位进位1 1,借,借1 1当当1616减法减法加法加法第第2 2章章 数据表示和寻址数据表示和寻址十六进制数的加法运算十六进制数的加法运算 2 3 D 9+ 9 4 B E B 8 9 79+14=23=16(carry)+713+11+1(carry)=25=16(carry)+93+4+1(carry)=82+9=11=B返回返回第第2 2章章 数据表示和寻址数据表示和寻址十六进制数的减法运算十六进制数的减法运算 A 5 9 F- 6 2 B 8 4 2 E 715-

8、8=716(borrow)+9-11=14=E5-2-1(borrow)=210-6=4返回返回第第2 2章章 数据表示和寻址数据表示和寻址11114. 4. 数制之间的转换数制之间的转换十进制十进制二进制二进制十六进制十六进制BCD码码常用二进制位权常用二进制位权00000002-30.12510001112-20.2520010222-10.53001133201401004421250101552246011066238701117724168100088253291001992664101010A27128111011B28256121100C29512131101D210102414

9、1110E21532768151111F21665536第第2 2章章 数据表示和寻址数据表示和寻址1212二进制数或十六进制数转换为十进制数二进制数或十六进制数转换为十进制数方法:按权展开方法:按权展开二进制数转换为十进制数二进制数转换为十进制数0011.1010B0011.1010B1 12 21 11 12 20 01 12 2- -1 10 02 2- -2 21 12 2- -3 33.6253.625十六进制数转换为十进制数十六进制数转换为十进制数1.2H1.2H1 116160 02 216161 11.1251.125第第2 2章章 数据表示和寻址数据表示和寻址1313十进制整

10、数转换为二或十六进制数十进制整数转换为二或十六进制数整数整数部分转换:用除法部分转换:用除法n十进制数整数部分不断除以基数十进制数整数部分不断除以基数2 2或或1616,并,并记下余数,直到商为记下余数,直到商为0 0为止为止n由最后一个余数起逆向取各个余数,则为转由最后一个余数起逆向取各个余数,则为转换成的二进制和十六进制数换成的二进制和十六进制数12612601111110B01111110B1261267EH7EH示意图示意图第第2 2章章 数据表示和寻址数据表示和寻址1414十进制整数的转换十进制整数的转换返回返回第第2 2章章 数据表示和寻址数据表示和寻址1515十进制小数转换为二或

11、十六进制数十进制小数转换为二或十六进制数小数小数部分转换:用乘法部分转换:用乘法n分别乘以各自的基数,记录整数部分,直到分别乘以各自的基数,记录整数部分,直到小数部分为小数部分为0 0为止为止0.81250.81250.1101B0.1101B0.81250.81250.DH0.DH小数转换会发生总是无法乘到为小数转换会发生总是无法乘到为0 0的情况的情况n可选取一定位数(精度)可选取一定位数(精度)n将产生无法避免的转换误差将产生无法避免的转换误差示意图示意图第第2 2章章 数据表示和寻址数据表示和寻址1616十进制小数的转换十进制小数的转换返回返回第第2 2章章 数据表示和寻址数据表示和寻

12、址1717二进制和十六进制数的相互转换二进制和十六进制数的相互转换二进制和十六进制数之间具有对应关系二进制和十六进制数之间具有对应关系n以小数点为基准以小数点为基准n整数从左向右,小数从右向左整数从左向右,小数从右向左n每每4 4个二进制位对应一个十六进制位个二进制位对应一个十六进制位00111010B00111010B3AH3AHF2HF2H11110010B11110010B第第2 2章章 数据表示和寻址数据表示和寻址18182.1.2 2.1.2 数值的编码数值的编码编码:编码:用文字、符号或者数码来表示某种信用文字、符号或者数码来表示某种信息(数值、语言、操作指令、状态等)的过程息(数

13、值、语言、操作指令、状态等)的过程二进制编码:二进制编码:组合组合0 0和和1 1数码数码机器数机器数:计算机用计算机用0 0和和1 1数码组合表达的数值数码组合表达的数值真值真值:现实中真实的数值现实中真实的数值数值的两种编码方式数值的两种编码方式n定点格式(第定点格式(第2 2章)章)n浮点格式(第浮点格式(第9 9章)章)第第2 2章章 数据表示和寻址数据表示和寻址19191. 1. 定点整数定点整数定点格式:固定小数点的位置表达数值定点格式:固定小数点的位置表达数值定点整数:定点整数:小数点固定在机器数的最右侧小数点固定在机器数的最右侧定点小数:小数点固定在机器数的最左侧定点小数:小数

14、点固定在机器数的最左侧无符号整数无符号整数(无符号数)(无符号数)n只表达只表达0 0和正整数的定点整数和正整数的定点整数nN N位无符号整数表达范围:位无符号整数表达范围:0 02 2N N-1-1有符号整数有符号整数(有符号数、带符号数)(有符号数、带符号数)n表达负整数、表达负整数、0 0和正整数的定点整数和正整数的定点整数n最高位表达数值正负最高位表达数值正负n符号位用符号位用0 0表示正数、表示正数、1 1表示负数表示负数示意图示意图第第2 2章章 数据表示和寻址数据表示和寻址2020定点整数格式定点整数格式返回返回第第2 2章章 数据表示和寻址数据表示和寻址21212. 2. 补码

15、补码有符号整数在计算机中默认采用补码有符号整数在计算机中默认采用补码n最高位表示符号:正数用最高位表示符号:正数用0 0,负数用,负数用1 1n正数补码:直接表示数值大小(同无符号数)正数补码:直接表示数值大小(同无符号数)n负数补码:将对应正数补码取反加负数补码:将对应正数补码取反加1 1105105补码补码01101001B01101001B-105-105补码补码01101001B01101001B取反取反1 110010110B10010110B1 110010111B10010111Bn8 8位二进制补码的数值范围:位二进制补码的数值范围:-128-128+127+127n1616位

16、二进制补码的数值范围:位二进制补码的数值范围:-2-21515+2+21515-1-1n3232位二进制补码的数值范围:位二进制补码的数值范围:-2-23131+2+23131-1-1nN N位二进制补码的数值范围:位二进制补码的数值范围:-2-2N-1N-1+2+2N-1N-1-1-1第第2 2章章 数据表示和寻址数据表示和寻址2222负数求补负数求补负数真值负数真值“取反加取反加1”1”得机器数补码得机器数补码负数补码负数补码“取反加取反加1”1”得到负数真值得到负数真值补码:补码:11100000B11100000B真值:真值:-(11100000-(11100000求反求反1 1) )

17、-(00011111+1)-(00011111+1) -00100000-00100000-2-25 5-32-32负数求补运算,等效于用带借位的负数求补运算,等效于用带借位的0 0作减法作减法真值:真值:-8-8,补码:,补码:-8-8补码补码00H-08H00H-08HF8HF8H补码:补码:1111100011111000,真值:,真值:-(00H-F8H)-(00H-F8H)-08H-08H-8-8+8 =0000100011110111+ 1-8 =11111000 0 =00000000-(8=00001000)-8 =11111000第第2 2章章 数据表示和寻址数据表示和寻址2

18、3233. 3. 补码运算补码运算利用无符号数加法结合补码表达,实现利用无符号数加法结合补码表达,实现n无符号数加法无符号数加法n无符号数减法无符号数减法n有符号数加法有符号数加法n有符号数减法有符号数减法无符号数加减运算,需要利用进位或借位无符号数加减运算,需要利用进位或借位有符号数加减运算,注意避免出现溢出有符号数加减运算,注意避免出现溢出XX补码补码YY补码补码XXYY补码补码XX补码补码YY补码补码XX补码补码 YY补码补码XXYY补码补码第第2 2章章 数据表示和寻址数据表示和寻址24244. 4. 原码和反码原码和反码正数的原码、反码和无符号数一样正数的原码、反码和无符号数一样求负

19、数的原码、反码和补码求负数的原码、反码和补码n首先计算其对应正数的编码首先计算其对应正数的编码n然后取反符号位(设置为然后取反符号位(设置为1 1)成为原码)成为原码n再取反其他位得到反码再取反其他位得到反码n最后加最后加1 1就是补码就是补码真值:真值:3232,机器数:,机器数:00100000B00100000B20H20H真值:真值:3232,机器数:,机器数: 3232原码原码10100000B10100000BA0HA0H 3232反码反码11011111B11011111BDFHDFH20H20H补码补码11100000B11100000BE0HE0H第第2 2章章 数据表示和寻

20、址数据表示和寻址25252.1.3 2.1.3 字符的编码字符的编码在计算机中,各种字符需要用若干位的二进制在计算机中,各种字符需要用若干位的二进制码的组合表示,即字符的二进制编码码的组合表示,即字符的二进制编码由于字节为计算机的基本存储单位,所以常以由于字节为计算机的基本存储单位,所以常以8 8个二进制位为单位表达字符个二进制位为单位表达字符第第2 2章章 数据表示和寻址数据表示和寻址26261. BCD1. BCD(二进制表达的十进制)(二进制表达的十进制)二进制编码的十进制数二进制编码的十进制数n一个十进制数位用一个十进制数位用4 4位二进制编码来表示位二进制编码来表示n8421 BCD

21、8421 BCD码:低码:低1010个个4 4位二进制编码表示位二进制编码表示0 09 9n压缩压缩BCDBCD码:一个字节表达两位码:一个字节表达两位BCDBCD码码n非压缩非压缩BCDBCD码:一个字节表达一位码:一个字节表达一位BCDBCD码(低码(低4 4位表位表达数值,高达数值,高4 4位常设置为位常设置为0 0)BCDBCD码很直观码很直观BCDBCD码:码:0100 1001 0111 1000.0001 0100 10010100 1001 0111 1000.0001 0100 1001十进制真值:十进制真值: 4978.1494978.149BCD码便于输入输出,表达数值准

22、确码便于输入输出,表达数值准确第第2 2章章 数据表示和寻址数据表示和寻址27272. ASCII2. ASCII(美国标准信息交换码)(美国标准信息交换码)标准标准ASCIIASCII码用码用7 7位二进制编码,有位二进制编码,有128128个个不可显示的控制字符:前不可显示的控制字符:前3232个和最后一个个和最后一个回车回车CRCR:0DH0DH 换行换行LFLF:0AH0AH 响铃响铃BELBEL:07H07H可显示和打印的字符:可显示和打印的字符:20H20H及以后的及以后的9595个编码个编码n数码数码0 09 9:30H30H39H39Hn大写字母大写字母A AZ Z:41H41

23、H5AH5AHn小写字母小写字母a az z:61H61H7AH7AHn空格:空格:20H20H扩展扩展ASCIIASCII码:最高码:最高D D7 7位为位为1 1,表达制表符号,表达制表符号第第2 2章章 数据表示和寻址数据表示和寻址28283. Unicode3. Unicode(统一码)(统一码)8 8位位ASCIIASCII码表达英文字符码表达英文字符1616位国标码表达汉字字符位国标码表达汉字字符n汉字机内码:国标码在计算机中使用的编码汉字机内码:国标码在计算机中使用的编码国际信息交换码国际信息交换码UnicodeUnicoden1616位编码位编码n对世界上所有语言的大多数字符进

24、行编码对世界上所有语言的大多数字符进行编码n提供扩展能力提供扩展能力nUnicodeUnicode兼容兼容ASCIIASCIIUnicode给每个字符提供了一个唯一的数字,不论给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言是什么平台,不论是什么程序,不论是什么语言第第2 2章章 数据表示和寻址数据表示和寻址2929什么是统一码?什么是统一码?Unicode provides a unique number for Unicode provides a unique number for every character,every character, no ma

25、tter what the platform,no matter what the platform, no matter what the program,no matter what the program,no matter what the language.no matter what the language.Unicode给每个字符提供了一个唯一的数字,给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么平台,不论是什么程序,不论是什么程序,不论是什么语言不论是什么语言返回返回第第2 2章章 数据表示和寻址数据表示和寻址30302.2 2.2 常量表达常量表达1. 1. 常

26、数常数n十、十六和二进制形式表达的数值十、十六和二进制形式表达的数值n以后缀字母区分,十进制数可以不加以后缀字母区分,十进制数可以不加n以字母以字母A AF F开头的十六进制常数,要加前导开头的十六进制常数,要加前导0 02. 2. 字符和字符串字符和字符串n英文缩略号括起来的单个字符或多个字符英文缩略号括起来的单个字符或多个字符n数值是每个字符对应的数值是每个字符对应的ASCIIASCII码值码值3. 3. 符号常量符号常量n使用标识符表达一个数值使用标识符表达一个数值n符号定义伪指令:等价符号定义伪指令:等价EQUEQU,等号,等号4. 4. 数值表达式数值表达式n用运算符连接各种常量构成

27、的算式用运算符连接各种常量构成的算式n算术运算符:(加)算术运算符:(加) (减)(减) * *(乘)(乘) / /(除)(除)常量具有确定数值常量具有确定数值第第2 2章章 数据表示和寻址数据表示和寻址3131例例2-12-1数据表达程序数据表达程序1 10000000000000000 64 64 64 64 6464 64 64 64 64const1const1byte 100,100d,01100100b,64h, dbyte 100,100d,01100100b,64h, d0000000500000005 01 7F 80 80 FF FF01 7F 80 80 FF FFcon

28、st2const2byte 1,+127,128,-128,255,-1byte 1,+127,128,-128,255,-10000000B0000000B 69 97 20 E0 32 CE69 97 20 E0 32 CEconst3const3byte 105,-105,32,-32,32h,-32hbyte 105,-105,32,-32,32h,-32h0000001100000011 30 31 32 33 34 3530 31 32 33 34 3536 37 38 39 61 6236 37 38 39 61 6263 78 79 7A 41 4263 78 79 7A 41

29、 4243 58 59 5A43 58 59 5Aconst4const4byte 0123456789,abcxyz,ABCXYZbyte 0123456789,abcxyz,ABCXYZ第第2 2章章 数据表示和寻址数据表示和寻址3232例例2-12-1数据表达程序数据表达程序2 20000002700000027 0D 0A 000D 0A 00crlfcrlfbyte 0dh,0ah,0byte 0dh,0ah,0= 0000000A= 0000000Aminintminint= 10= 10 = 000000FF= 000000FFmaxintmaxintequ 0ffhequ 0f

30、fh0000002A0000002A 0A 0F FA F50A 0F FA F5const5const5byte minint,minint+5byte minint,minint+5byte maxint-5,maxint-minintbyte maxint-5,maxint-minint0000002E0000002E 10 56 15 EB10 56 15 EBconst6const6byte 4byte 4* *4,34h+34,67h-52h,52h-67h4,34h+34,67h-52h,52h-67h第第2 2章章 数据表示和寻址数据表示和寻址33332.3 2.3 变量应用变

31、量应用变量(变量(VariableVariable)n程序运行中随之发生变化的结果程序运行中随之发生变化的结果n保存在可读可写的主存空间保存在可读可写的主存空间实质是主存单元的数据,因而可以改变实质是主存单元的数据,因而可以改变变量需要事先定义才能使用变量需要事先定义才能使用变量具有属性方便应用变量具有属性方便应用 变量表达主存数据,即存储器操作数变量表达主存数据,即存储器操作数第第2 2章章 数据表示和寻址数据表示和寻址34342.3.1 2.3.1 变量定义变量定义申请存储空间,还可以进行存储单元初始化申请存储空间,还可以进行存储单元初始化变量名变量名 变量定义伪指令变量定义伪指令 初值表

32、初值表变量名是用户标识符,表示首元素逻辑地址变量名是用户标识符,表示首元素逻辑地址变量定义伪指令有变量定义伪指令有nBYTEBYTE、WORDWORD、DWORDDWORD、FWORDFWORD、QWORDQWORD、TBYTETBYTE初值表是用逗号分隔的参数初值表是用逗号分隔的参数n各种形式的常量各种形式的常量n“?”表示初值不确定,即未赋初值表示初值不确定,即未赋初值n复制操作符复制操作符DUPDUP重复次数重复次数 DUP(DUP(重复参数重复参数) )第第2 2章章 数据表示和寻址数据表示和寻址35351. 1. 变量定义伪指令变量定义伪指令助记符:助记符:BYTE变量类型:变量类型

33、:字节字节分配一个或多个字节单元;每个数据是分配一个或多个字节单元;每个数据是字节量,也可以是字符串常量字节量,也可以是字符串常量字节量表示字节量表示8位无符号数或有符号数,位无符号数或有符号数,字符的字符的ASCII码值码值助记符:助记符:WORD变量类型:变量类型:字字分配一个或多个字单元;每个数据是字分配一个或多个字单元;每个数据是字量、量、16位数据位数据字量表示字量表示16位无符号数或有符号数、位无符号数或有符号数、16位段选择器、位段选择器、16位偏移地址位偏移地址助记符:助记符:DWORD变量类型:变量类型:双字双字分配一个或多个双字单元;每个数据是分配一个或多个双字单元;每个数

34、据是双字量、双字量、32位数据位数据双字量表示双字量表示32位无符号数或有符号数、位无符号数或有符号数、32位段基地址、位段基地址、32位偏移地址位偏移地址助记符:助记符:QWORD变量类型:变量类型:4个字个字分配一个或多个分配一个或多个8字节单元;字节单元;8字节量表字节量表示示64位数据位数据第第2 2章章 数据表示和寻址数据表示和寻址36362. 2. 字节量数据字节量数据BYTEBYTE定义定义8 8位、字节量变量数据位、字节量变量数据可以表达可以表达n无符号整数无符号整数0 0255255n补码表示的有符号整数:补码表示的有符号整数:-128-128+127+127n一个字符(一个

35、字符(ASCIIASCII码值)码值)n压缩压缩BCDBCD码:码:0 09999n非压缩非压缩BCDBCD码:码:0 09 9n字符串定义使用字节变量定义字符串定义使用字节变量定义BYTE第第2 2章章 数据表示和寻址数据表示和寻址3737例例2-22-2字节变量程序字节变量程序=0000000A=0000000Aminint = 10minint = 10000000000000000000 80 FF 80 00 7F00 80 FF 80 00 7Fbvar1bvar1byte 0,128,255,-128,0,+127byte 0,128,255,-128,0,+1270000000

36、60000000601 FF 26 DA 38 C801 FF 26 DA 38 C8bvar2bvar2byte 1,-1,38,-38,38h,-38hbyte 1,-1,38,-38,38h,-38h0000000C0000000C0000bvar3bvar3byte ?byte ?0000000D0000000D00000005 00000005 2424bvar4bvar4byte 5 dup ($)byte 5 dup ($)00000012000000120000000A 00 0000000A 0A 000000000A 00 0000000A 0A 00bvar5bvar5b

37、yte minint dup(0),minint dup(minint,?)byte minint dup(0),minint dup(minint,?)000000300000003000000002 02 03 00000002 0400000002 02 03 00000002 04byte 2 dup(2,3,2 dup(4)byte 2 dup(2,3,2 dup(4)第第2 2章章 数据表示和寻址数据表示和寻址38383. 3. 字量数据字量数据WORDWORD定义定义1616位、字量变量数据位、字量变量数据可以表达可以表达n1616位无符号和有符号整数位无符号和有符号整数n161

38、6位段选择器,位段选择器,1616位偏移地址位偏移地址1616位数据含高低位数据含高低2 2个字节,占个字节,占2 2个连续的字节存储单个连续的字节存储单元元n小端方式(小端方式(Little EndianLittle Endian)n低字节数据存放在低地址存储单元低字节数据存放在低地址存储单元n高字节数据存放在高地址存储单元高字节数据存放在高地址存储单元n大端方式(大端方式(Big EndianBig Endian)n低字节数据存放在高地址存储单元低字节数据存放在高地址存储单元n高字节数据存放在低地址存储单元高字节数据存放在低地址存储单元第第2 2章章 数据表示和寻址数据表示和寻址3939例

39、例2-32-3字变量程序字变量程序= 0000000A= 0000000Aminintminint= 10= 1000000000000000000000 8000 FFFF 8000 0000 7FFF0000 8000 FFFF 8000 0000 7FFFwvar1wvar1word 0,32768,65535,-32768,0,+32767word 0,32768,65535,-32768,0,+327670000000C0000000C0001 FFFF 0026 0001 FFFF 0026 FFDA 0038 FFC8FFDA 0038 FFC8wvar2wvar2word 1,

40、-1,38,-38,38h,-38hword 1,-1,38,-38,38h,-38h000000180000001800000000wvar3wvar3 word ?word ?0000001A0000001A2010 10202010 1020wvar4wvar4word 2010h,1020hword 2010h,1020h0000001E0000001E00000005 000A 000000000005 000A 0000word 5 dup(minint,?)word 5 dup(minint,?)00000032000000323139 38323139 3832wvar6wva

41、r6word 3139h,3832hword 3139h,3832h000000360000003639 31 32 3839 31 32 38bvar6bvar6byte 39h,31h,32h,38hbyte 39h,31h,32h,38h0000003A0000003A0000byte 0byte 091289128运行结果第第2 2章章 数据表示和寻址数据表示和寻址4040数据的存放顺序:小端方式数据的存放顺序:小端方式返回返回第第2 2章章 数据表示和寻址数据表示和寻址41414. 4. 双字量数据双字量数据DWORDDWORD定义定义3232位、双字量变量数据位、双字量变量数据可以

42、表达可以表达n3232位无符号和有符号整数位无符号和有符号整数n3232位偏移地址、线性地址或段基地址位偏移地址、线性地址或段基地址3232位数据包含位数据包含4 4个字节,以个字节,以“高对高、低对低高对高、低对低”原则占用原则占用4 4个连续字节空间个连续字节空间示意图示意图第第2 2章章 数据表示和寻址数据表示和寻址4242返回返回小端存储方式小端存储方式第第2 2章章 数据表示和寻址数据表示和寻址4343例例2-42-4双字变量程序双字变量程序1 1=0000000A=0000000Aminint= 10minint= 10000000000000000000000000 800000

43、00 FFFFFFFF00000000 80000000 FFFFFFFF80000000 00000000 7FFFFFFF80000000 00000000 7FFFFFFFdvar1dvar1dword 0,80000000h,0ffffffffh,dword 0,80000000h,0ffffffffh,-80000000h,0,7fffffffh-80000000h,0,7fffffffh000000180000001800000001 FFFFFFFF 0000002600000001 FFFFFFFF 00000026FFFFFFDA 00000038 FFFFFFC8FFFFF

44、FDA 00000038 FFFFFFC8dvar2dvar2dword 1,-1,38,-38,38h,-38hdword 1,-1,38,-38,38h,-38h00000030000000300000000000000000dvar3dvar3dword ?dword ?000000340000003400002010 0000102000002010 00001020dword 2010h,1020hdword 2010h,1020h第第2 2章章 数据表示和寻址数据表示和寻址4444例例2-42-4双字变量程序双字变量程序2 20000003C0000003C0000000A 000

45、0000A 000000000000000A 0000000A 00000000dvar5dvar5dword minint dup(minint,?)dword minint dup(minint,?)0000008C0000008C3832313938323139dvar6dvar6dword 38323139hdword 38323139h000000900000009039 31 32 3839 31 32 38bvar6bvar6byte 39h,31h,32h,38hbyte 39h,31h,32h,38h00000094000000940000byte 0byte 0912891

46、28运行结果第第2 2章章 数据表示和寻址数据表示和寻址45455. 5. 变量定位:指定偏移地址变量定位:指定偏移地址变量定义的存储空间变量定义的存储空间按照书写的先后顺序一个接着一个分配按照书写的先后顺序一个接着一个分配“ORG ORG 参数参数”控制存放的偏移地址控制存放的偏移地址org 100horg 100h; ;从偏移地址从偏移地址100H100H处安排处安排指令代码也由汇编程序指令代码也由汇编程序按照语句的书写顺序安排存储空间按照语句的书写顺序安排存储空间定位伪指令也可以用于控制代码的偏移地址定位伪指令也可以用于控制代码的偏移地址第第2 2章章 数据表示和寻址数据表示和寻址464

47、65. 5. 变量定位:对齐地址边界变量定位:对齐地址边界N N字节数据起始于能够被字节数据起始于能够被N N整除的地址整除的地址n2 2字节、字节、1616位数据是被位数据是被2 2整除的地址(偶地址)整除的地址(偶地址)n4 4字节、字节、3232位数据是被位数据是被4 4整除的地址(模整除的地址(模4 4地址)地址)n8 8字节、字节、6464位数据是被位数据是被8 8整除的地址(模整除的地址(模8 8地址)地址)IA-32IA-32处理器允许不对齐边界存放数据,性能有下降处理器允许不对齐边界存放数据,性能有下降“ALIGN NALIGN N”控制对齐控制对齐N N字节边界字节边界ali

48、gn 4align 4; ;对齐对齐4 4字节地址边界字节地址边界第第2 2章章 数据表示和寻址数据表示和寻址4747例例2-52-5变量定位程序变量定位程序org 100horg 100h 00000100 00000100 6464bvar1bvar1 byte 100byte 100align 2align 2 00000102 00000102 00640064wvar2wvar2 word 100word 100align 4align 4 00000104 00000104 0000000000000000dvar3dvar3 dword ?dword ?align 4align

49、4 00000108 00000108 0000000000000000dvar4dvar4 dword ?dword ?第第2 2章章 数据表示和寻址数据表示和寻址48482.3.2 2.3.2 变量属性变量属性变量定义变量定义n分配存储空间分配存储空间n赋初值赋初值n创建变量名创建变量名变量名具有两类属性:变量名具有两类属性:地址属性地址属性:首个变量所在存储单元的逻辑地址,首个变量所在存储单元的逻辑地址,含有含有段基地址段基地址和和偏移地址偏移地址类型属性类型属性:变量定义的数据单位:变量定义的数据单位字节量字节量BYTEBYTE 字量字量WORDWORD 双字量双字量DWORDDWOR

50、D 3 3字量字量FWORD 4FWORD 4字量字量QWORDQWORD 10 10字节量字节量TBYTETBYTE第第2 2章章 数据表示和寻址数据表示和寻址4949 地址操作符地址操作符地址操作符用于获取变量名的地址属性地址操作符用于获取变量名的地址属性 括起的表达式作为存储器地址指针括起的表达式作为存储器地址指针$ $返回当前偏移地址返回当前偏移地址OFFSET OFFSET 变量名变量名 返回变量名所在段的偏移地址返回变量名所在段的偏移地址SEG SEG 变量名变量名返回段基地址(实地址存储模型)返回段基地址(实地址存储模型)第第2 2章章 数据表示和寻址数据表示和寻址5050例例2

51、-62-6变量地址属性程序变量地址属性程序1 1; ;数据段数据段000000000000000012 3412 34bvarbvarbyte 12h,34hbyte 12h,34horg $+10 org $+10 0000000C0000000C0001 0002 0003 0004 0005 00060001 0002 0003 0004 0005 00060007 0008 0009 000A0007 0008 0009 000Aarrayarrayword 1,2,3,4,5,6,7,8,9,10word 1,2,3,4,5,6,7,8,9,100000002000000020567

52、85678wvarwvarword 5678hword 5678h=00000016=00000016 arr_size = $-arrayarr_size = $-array=0000000B=0000000B arr_len = arr_size/2arr_len = arr_size/200000022000000229ABCDEF09ABCDEF0dvardvardword 9abcdef0hdword 9abcdef0h第第2 2章章 数据表示和寻址数据表示和寻址5151例例2-62-6变量地址属性程序变量地址属性程序2 2; ; 代码段代码段0000000000000000A0 0

53、0000000 RA0 00000000 Rmov al,mov al,bvarbvar00000005000000058A 25 00000001 R8A 25 00000001 Rmov ah,mov ah,bvar+1bvar+10000000B0000000B66|8B 1D66|8B 1D00000022 R00000022 Rmov bx,mov bx,wvar2wvar20000001200000012B9 0000000BB9 0000000Bmov ecx,mov ecx,arr_lenarr_len0000001700000017BA 00000017 RBA 000000

54、17 Rmov edx,mov edx,$ $0000001C0000001CBE 00000022 RBE 00000022 Rmov esi,mov esi,offset dvaroffset dvar第第2 2章章 数据表示和寻址数据表示和寻址5252例例2-62-6变量地址属性程序变量地址属性程序3 300000021000000218B 3E8B 3Emov edi,esimov edi,esi00000023000000238B 2D 00000022 R8B 2D 00000022 Rmov ebp,dvarmov ebp,dvar0000002900000029E8 00000

55、000 EE8 00000000 Ecall disprdcall disprdEAX=00003412, EBX=7FFDDEF0, ECX=0000000B, EDX=00401017EAX=00003412, EBX=7FFDDEF0, ECX=0000000B, EDX=00401017ESI=00405022, EDI=9ABCDEF0, EBP=9ABCDEF0, ESP=0013FFC4ESI=00405022, EDI=9ABCDEF0, EBP=9ABCDEF0, ESP=0013FFC4运行结果第第2 2章章 数据表示和寻址数据表示和寻址5353 类型操作符类型操作符类型操

56、作符使用变量名的类型属性类型操作符使用变量名的类型属性类型名类型名 PTR PTR 变量名变量名 将变量名按照指定的类型使用将变量名按照指定的类型使用TYPE TYPE 变量名变量名返回占用字节空间的字量数值返回占用字节空间的字量数值LENGTHOF LENGTHOF 变量名变量名返回整个变量的数据项数返回整个变量的数据项数SIZEOFSIZEOF 变量名变量名返回整个变量占用的字节数返回整个变量占用的字节数第第2 2章章 数据表示和寻址数据表示和寻址5454例例2-72-7变量类型属性程序变量类型属性程序1 1; ;代码段代码段0000000000000000A1 0000000C RA1

57、0000000C Rmov eax,dword ptr arraymov eax,dword ptr array; ;获得数据获得数据0000000500000005BB 00000001BB 00000001mov ebx,type bvarmov ebx,type bvar; ;获得字节类型值获得字节类型值0000000A0000000AB9 00000002B9 00000002mov ecx,type wvarmov ecx,type wvar; ;获得字类型值获得字类型值0000000F0000000FBA 00000004BA 00000004mov edx,type dvarmo

58、v edx,type dvar; ;获得双字类型值获得双字类型值第第2 2章章 数据表示和寻址数据表示和寻址5555例例2-72-7变量类型属性程序变量类型属性程序2 20000001400000014BE 0000000ABE 0000000Amov esi,lengthof arraymov esi,lengthof array ; ;获得数据个数获得数据个数0000001900000019BF 00000014BF 00000014mov edi,sizeof arraymov edi,sizeof array; ;获得字节长度获得字节长度0000001E0000001EBD 00000

59、016BD 00000016mov ebp,arr_sizemov ebp,arr_size; ;获得字节长度获得字节长度0000002300000023E8 00000000 EE8 00000000 Ecall disprdcall disprd EAX=00020001, EBX=00000001, ECX=00000002, EDX=00000004EAX=00020001, EBX=00000001, ECX=00000002, EDX=00000004ESI=0000000A, EDI=00000014, EBP=00000016, ESP=0013FFC4ESI=0000000A

60、, EDI=00000014, EBP=00000016, ESP=0013FFC4运行结果第第2 2章章 数据表示和寻址数据表示和寻址56562.4 2.4 数据寻址方式数据寻址方式指令有两部分:操作码和操作数指令有两部分:操作码和操作数n操作码:处理器要执行哪种操作操作码:处理器要执行哪种操作不可缺少,用助记符表示不可缺少,用助记符表示n操作数:指令执行的参与者操作数:指令执行的参与者各种操作的对象,需要通过地址指示各种操作的对象,需要通过地址指示数据寻址方式:通过地址查找数据(操作数)数据寻址方式:通过地址查找数据(操作数)n立即数寻址:数据在指令代码中,用常量表达立即数寻址:数据在指令

温馨提示

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

评论

0/150

提交评论