




已阅读5页,还剩76页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第3章数据处理 3 1数据表示3 2常量表达3 3变量应用3 4数据传送类指令 3 5算术运算类指令3 6位操作类指令3 7串操作类指令3 8IA 32指令系统 2 3 1计算机中数的表示 数据 Data 计算机处理的对象对应指令操作的对象 操作数 Oprand 在计算机中 只能存储 处理二进制信息数值信息 只能用二进制表示非数值信息 用二进制编码表示程序在计算机内部也是用二进制形式表示的 3 3 1 1数制及其转换 我们人习惯于使用十进制数据 而计算机内部是用二进制数据 他们之间各自有什么特点 如何进行相互转换 4 1 十进制数的表示方法 十进制计数法的特点是 使用10个数字符号 0 1 2 9 的不同组合来表示一个十进制数 采用 逢十进一 的进位规则 5 任何一个十进制数可表示为 式中 m表示小数位的位数 n表示整数位的位数 Kj为第j位上的数符 可以是0 9十个数字符号中的任一个 例如138 5 D 注意书写 以后缀D或d表示十进制数 Decimal 对于十进制数 该后缀可以省略 6 二进制计数法的特点是 使用2个数字符号 0 1 的不同组合来表示一个二进制数 逢二进一的进位规则 任何一个二进制数可表示为 式中 m为小数位的位数 n为整数位的位数 Bi为第i位上的数符 0或1 例如 后缀B或b表示二进制数 Binary 例如1011B 后缀不能省略 2 二进制数的表示方法 7 十六进制计数法的特点是 使用16个数字符号 0 1 2 3 9 A B C D E F 的不同组合来表示一个十六进制数 其中A F依次表示10 15 逢十六进一的进位规则 3 十六进制数的表示法 8 任何一个十六进制数可表示为 式中 m为小数位的位数 n为整数位的位数 Hi为第i位上的数符 可以是0 1 9 A B C D E F十六个数字符号中的任一个 例2 30E5AD BFH 9 注意在书写十六进制数据时 如果最高位是大于9的数符 A F 则需要在前面加一个0 例如 0B36H用后缀H或h表示十六进制数 Hexadecimal 后缀不能省略 例如12345H 十六进制数据如果写成12345 没有 H 则表示是一个十进制数据 10 一般来说 对于基数为X的任一数可用多项式表示为 式中 X为基数 表示X进制 i为位序号 m为小数部分位数 n为整数部分的位数 ki为第i位上的数值 可以为0 1 2 X 1共X个数字符号中任一个 Xi为第i位的权 4 任意进制数据 11 二进制 十六进制以至任意进制数转换为十进制数的方法很简单 只要按上面的展开公式各位按权展开 即该位的数值乘于该位的权 求和即可 例如 5 其它进制数转换为十进制数 12 1 整数部分的转换下面通过一个简单的例子对转换方法进行分析 例如 可见 要确定13D对应的二进制数 只需从右到左分别确定B0 B1 B2 B3 即可 6 十进制数转换成二进制数 13 即 13D 1101B 14 由以上过程可以得出十进制整数部分转换为二进制数的方法 除以基数 2 取余数 先为低位 B0 后为高位显然 该方法也适用于将十进制整数转换为八进制整数 基数为8 十六进制整数 基数为16 以至其它任何进制整数 这种方法叫做长除法 15 例1 1 将十进制数1234转换成二进制数 最先得到的是最低有效位 最后得到的是最高有效位 16 同样用一个简单例子说明十进制小数部分的转换方法 例如 要将一个十进制小数转换为二进制小数 实际上就是求B 1 B 2 给上式右侧乘以基数2得 2 小数部分的转换 17 整数部分为1 此即为B 1 小数部分为1 2 1 小数部分再乘以基数2得 整数部分为1 此即为B 2 此时小数部分已为0 停止往下计算 若不为0 继续求B 3 B 4 直到小数部分为0或小数部分的位数满足一定精度时为止 18 由以上分析可得到十进制小数部分转换为二进制小数的方法 小数部分乘以基数 2 取整数 0或1 先为高位 B 1 后为低位 显然 该方法也适用于将十进制小数转换为八进制小数 基数为8 十六进制小数 基数为16 以至其它任何进制小数 小数部分的转化 有时可能总也不会到0 这时只要转换到所需要的为数就行了 既有整数 又有小数 则分别转换 再合成 19 例将13 75转换为二进制数 分别将整数和小数部分进行转换 整数部分 13 1101B小数部分 0 75 0 11B因此 13 75 1101 11B在例如 将13 34转换为二进制数 小数部分4位整数部分 1101 小数部分 010113 34 1101 0101B小数部分没有转换完 只需要到所规定的为数就行了 虽然它会造成误差 20 例将28 75转换为十六进制数整数部分除以16取余数 小数部分乘以16取整数 整数部分 28 1CH小数部分 0 75 16 12 CH B 1 CH 小数部分已为0 停止计算 因此 28 75 1C CH 21 用四位二进制数表示一位十六进制数 所以可得到如下所述的二进制数与十六进制数之间的转换方法 将二进制数转换为十六进制数的方法 以小数点为界 向左 整数部分 每四位为一组 高位不足4位时补0 向右 小数部分 每四位为一组 低位不足4位时补0 然后分别用一个16进制数表示每一组中的4位二进制数 将十六进制数转换为二进制数的方法 直接将每一位十六进制数写成其对应的四位二进制数 7 二进制数与十六进制数之间的转换 22 例 将二进制数1101110 01011B转换成十六进制数 1101110 01011B 0110 1110 0101 1000B 6E 58H例1 5 将十六进制数0F3 1BH转换成二进制数 0F3 1BH 11110011 00011011B 由于最高位 最左边 大于9 所以在其左侧添加一个0 它不影响数值 23 1 二进制数的加减运算规则加 0 0 00 1 11 1 0 11 1 0 进1 减 0 0 01 1 01 0 10 1 1 借位 2 乘除法运算可以通过加减法运算实现 二进制数据的运算规则简单 再加上容易存储 因此计算机中的数据都用二进制表示 非数值信息则用二进制编码表示 8 二进制算术运算 二进制数的算术运算 9 逻辑运算 事件的假和真可用数码0和1表示事件之间的关系可以利用二进制表达数字电路的低高电平用数码0和1表示数字信号之间的关系可以利用二进制描述数码0和1仅仅代表两种状态它们的运算是逻辑运算 26 1 与 与 可用符号 或 表示 规则为 0 0 00 1 01 0 01 1 1可以看出 只有当两个变量均为 1 时 与 的结果才为 1 2 或 或 运算又称逻辑加 可用符号 或 表示 规则为 0 0 00 1 11 0 11 1 1可以看出 两个变量只要有一个为 1 或 的结果就为 1 27 3 非运算 逻辑 非 运算规则如下 4 异或 运算 XOR 异或 运算可用符号 表示 运算规则如下 28 例如 4位二进制数的逻辑运算 逻辑与AND 1101 0011 0001逻辑或OR 1101 0011 1111逻辑非NOT 1101 0010逻辑异或XOR 1101 0011 1110 29 3 1 2数值的编码 编码 用文字 符号或者数码来表示某种信息 数值 语言 操作指令 状态等 的过程二进制编码 组合0和1数码机器数 计算机中用0和1数码组合表达的数值真值 现实中真实的数值数值的两种编码方式定点格式浮点格式现只讨论定点格式数据 小数点位置固定不变 30 1机器数与真值 1 真值日常生活中遇到的数 除了上述无符号数外 还有带符号数 对于带符号的二进制数 其正负符号如何表示呢 我们可以用 符号来表示数的符号 例如N1 1101001B 105 N2 1101001B 105这样用 符号表示的数 叫做数的真值 数的真值可以使用二进制形式 也可以使用十进制形式 或八进制数 十六进制数 31 在计算机中 我们只存储0 1两个代码 数的符号没办法用 符号来表示 为了表示数的符号 我们通常约定 用二进制数的最高位表示数的符号 这时最高位叫做符号位 规定用 0 表示正 1 表示负 一个数在机器中用最高位表示数的符号 其它位表示数值的大小的这种表示形式 叫做机器数 这样对于n位二进制数 如果它是一个带符号的数 则最高位Bn 1就表示数的符号 剩下的n 1位表示数的大小 2 机器数 32 例如对于一个字节型二进制数来说 n 8共有8位 D7位为符号位 D6 D0位为数值位 简单的说 机器数就是数据在机器中的二进制表示形式 机器数所表示的值称为该机器数的 真值 例如 一个带符号的数 最高位为符号位 其它位为数的值 它的真值为 机器数用原码表示 机器数11101001B 真值 1101001B 105 01101110B 1101110B 110 33 2 带符号数与无符号数 用一位二进制位表示数的符号 0表示正数 1表示负数 这种表示数的方法 称为带符号数的表示方法 所表示的数 叫做带符号的数 带符号的数其最高位为符号位 如果将全部有效位都用来表示数的大小 这种数的表示方法 叫无符号数的表示方法 所表示的数 叫无符号数 数据在机器中的表示 还有不同的码制 主要有 原码 反码 补码 移码 34 3机器数的表示方法 1 原码设数x的原码记作 x 原 如机器字长为n 则原码如下 最高位为符号位 正数为0 负数为1 其余数字位表示数的绝对值 35 例如 当机器字长n 8时 0 原 00000000B 0 原 10000000B 8 原 00001000B 8 原 10001000B 127 原 01111111B 127 原 11111111B当机器字长n 16时 0 原 0000000000000000B 0 原 1000000000000000B 8 原 0000000000001000B 8 原 1000000000001000B 32767 原 0111111111111111B 32767 原 1111111111111111B 36 可以看出8位二进制原码表示数的范围为 127 127 16位二进制原码表示数的范围为 32767 32767 n位原码的数据表示范围 2n 1 1 2n 1 1 0 的原码有两种表示法 00000000表示 0 10000000表示 0 37 原码表示法简单直观 且与真值的转换很方便 但不便于在计算机中进行加减运算 如进行两数相加 必须先判断两个数的符号是否相同 如果相同 则进行加法运算 否则进行减法运算 如进行两数相减 必须比较两数的绝对值大小 再由大数减小数 结果的符号要和绝对值大的数的符号一致 按上述运算方法设计的算术运算电路很复杂 因此 计算机中通常使用补码进行加减运算 这样就引入了反码表示法和补码表示法 38 设数x的反码记作 x 反 如机器字长为n 则反码的求法如下 已知数的原码 正数的反码与其原码相同 例如 当机器字长n 8时 0 反 0 原 00000000B 127 反 127 原 01111111B当机器字长n 16时 8 反 8 原 0000000000001000B 127 反 127 原 0000000001111111B 2 反码 39 负数的反码是在原码基础上 符号位不变 仍为1 数值位按位取反 例如 当机器字长n 8时 0 反 28 1 0 11111111B 127 反 28 1 127 10000000B反码表示数的范围 例如 8位二进制反码表示数的范围为 127 127 16位二进制反码表示数的范围为 32767 32767 0 的反码有两种表示法 00000000表示 0 11111111表示 0 40 设数x的补码记作 x 补 如机器字长为n 则补码求法如下 已知数的原码 正数的补码与其原码 反码相同 例如 当机器字长n 8时 8 补 8 反 8 原 00001000B 127 补 127 反 127 原 01111111B当机器字长n 16时 8 补 8 反 8 原 0000000000001000B 127 补 127 反 127 原 0000000001111111B 3 补码 41 负数的补码是在原码基础上 符号位不变 仍为1 数值部分按位取反 末位加1 也就是在反码基础上末位加1 0的补码表示 00000000B只有一种 没有第二种编码 42 例如 当机器字长n 8时 8 原 10001000B 127 原 11111111B负数 除符号位外 每位取反得到反码 8 反 11110111B 127 反 10000000B负数 除符号位外 每一位取反 然后在最低位 1 得到负数的补码 8 补 11111000B 127 补 10000001B 正数 补码就是原码 例如10 原码为00001010B 补码0001010B 43 补码的表示范围 例如 8位二进制补码表示数的范围为 128 127 16位二进制补码表示数的范围为 32768 327678位二进制数的原码 反码和补码如下表所示 n位二进制补码的表示范围 44 位二进制数的原码 反码和补码示意表 45 原码转换为真值根据原码定义 它的最高位为符号位 剩下的n 1位为数值 绝对值 将符号位还原为用 符号表示 数值部分不变 就是机器数的真值 如果要用十进制数真值表示 则再将原码数值位各位按权展开求和 4 真值与机器数之间的转换 46 例 已知 x 原 00011111B y 原 10011101B 求x和y的真值 X 0011111B 0 26 0 25 1 24 1 23 1 22 1 21 1 20 31Y 0011101B 0 26 0 25 1 24 1 23 1 22 0 21 1 20 29 真值可以用二进制表示 也可以用十进制表示 我们习惯用十进制表示 47 要求反码的真值 只要先求出反码对应的原码 再按上述原码转换为真值的方法即可求出其真值 正数的原码是反码本身 负数的原码可在反码基础上 符号位仍为1不变 数值位按位取反 例 已知 x 反 00001111B y 反 11100101B 求x和y 解 x 原 x 反 00001111B x 0001111B 0 26 0 25 0 24 1 23 1 22 1 21 1 20 15 y 原 10011010B y 0011010B 0 26 0 25 1 24 1 23 0 22 1 21 0 20 26 反码转换为真值 48 同理 要求补码的真值 也要先求出补码对应的原码 正数的原码与补码相同 负数的原码可在补码基础上再次求补 即 除符号位外 每位都取反 在最低为加1 补码转换为真值 49 例 已知 x 补 00001111B y 补 11100101B 求x和y解 x 原 x 补 00001111B 正数 x 0001111B 0 26 0 25 0 24 1 23 1 22 1 21 1 20 15 y 原 y 补 补 10011011B 负数 y 0011011B 0 26 0 25 1 24 1 23 0 22 1 21 1 20 27 50 3 1 3字符的编码 在计算机中 各种字符需要用若干位的二进制码的组合表示 即字符的二进制编码由于字节为计算机的基本存储单位 所以常以8个二进制位为单位表达字符 0123456789 English 汉字 51 1 BCD 十进制数的二进制编码表示 一个十进制数位用4位二进制编码来表示常用的编码 8421编码 1 编码方法 8421BCD码 低10个4位二进制编码表示十进制0 9 BCD码便于输入输出 表达数值准确 52 2 压缩BCD码 一个字节表达两位BCD码例如45用压缩的BCD码存放 3 非压缩BCD码 一个字节表达一位BCD码 低4位表达数值 高4位常设置为0 D0 低位在前高位在后存放 53 BCD码很直观BCD码 0100100101111000 0001010010014979 149十进制真值 4978 149在机器内部 每一个十进制数码符号用4位二进制表示 在内存中的存放方式有2种 压缩BCD吗非压缩BCD码 54 2 ASCII 美国标准信息交换码 标准ASCII码用7位二进制编码 有128个不可显示的控制字符 前32个和最后一个回车CR 0DH换行LF 0AH响铃BEL 07H可显示和打印的字符 20H后的94个编码数码0 9 30H 39H大写字母A Z 41H 5AH小写字母a z 61H 7AH空格 20H扩展ASCII码 最高D7位为1 表达制表符号 55 表2 3美国标准信息交换码ASCII 7位代码 56 3 Unicode 统一码 8位ASCII码表达英文字符16位国标码表达汉字字符汉字机内码 国标码在计算机中使用的编码国际信息交换码Unicode16位编码对世界上所有语言的大多数字符进行编码提供扩展能力Unicode兼容ASCII Unicode给每个字符提供了一个唯一的数字 不论是什么平台 不论是什么程序 不论是什么语言 57 什么是统一码 Unicode给每个字符提供了一个唯一的数字 不论是什么平台 不论是什么程序 不论是什么语言 58 3 2常量表达 常数十 十六和二进制形式表达的数值以后缀字母区分 十进制数可以不加以字母A F开头的十六进制常数 要加前导0字符和字符串英文缩略号括起来的单个字符或多个字符数值是每个字符对应的ASCII码值符号常量使用标识符表达一个数值符号定义伪指令 等价EQU 等号 数值表达式用运算符连接各种常量构成的算式算术运算符 加 减 乘 除 常量具有确定数值 59 例 数据表达程序 1 000000006464646441const1BYTE100 100d 01100100b 64h A 00000005017F8080FFFFconst2BYTE1 127 128 128 255 10000000B699720E032CEconst3BYTE105 105 32 32 32h 32h000000113031323334353637383961626378797A41424358595Aconst4BYTE 0123456789 abcxyz ABCXYZ 60 例 数据表达程序 2 000000270D0A0crlfbyte0dh 0ah 0 0000000Aminint 10 000000FFmaxintequ0ffh0000002A0A0FFAF5const5byteminint minint 5bytemaxint 5 maxint minint0000002E105615EBconst6byte4 4 34h 34 67h 52h 52h 67h 61 3 3变量应用 变量 Variable 程序运行中随之发生变化的结果保存在可读可写的主存空间实质是主存单元的数据 因而可以改变变量需要事先定义才能使用变量具有属性方便应用 变量表达主存数据 即存储器操作数 62 3 3 1变量定义 申请存储空间 还可以进行存储单元初始化变量名变量定义伪指令初值表变量名是用户标识符 表示首元素逻辑地址变量定义伪指令有BYTE WORD DWORD FWORD QWORD TBYTE初值表是用逗号分隔的参数各种形式的常量 表示初值不确定 即未赋初值复制操作符DUP重复次数DUP 重复参数 63 1 变量定义伪指令 64 2 字节量数据 BYTE定义8位 字节量变量数据可以表达无符号整数0 255补码表示的有符号整数 128 127一个字符 ASCII码值 压缩BCD码 0 99非压缩BCD码 0 9 字符串定义使用字节变量定义BYTE 65 例3 2 字节变量程序 0000000Aminint 10000000000080FF80007Fbvar1byte0 128 255 128 0 1270000000601FF26DA38C8bvar2byte1 1 38 38 38h 38h0000000C00bvar3byte 66 3 字量数据 WORD定义16位 字量变量数据可以表达16位无符号和有符号整数16位段选择器 16位偏移地址16位数据包含高低两个字节 占用2个连续的字节存储单元小端方式 LittleEndian 低字节数据存放在低地址存储单元高字节数据存放在高地址存储单元 67 例3 3 字变量程序 0000000Aminint 100000000000008000FFFF800000007FFFwvar1word0 32768 65535 32768 0 327670000000C0001FFFF0026FFDA0038FFC8wvar2word1 1 38 38 38h 38h000000180000wvar3word 0000001A20101020wvar4word2010h 1020h0000001E00000005 000A0000 word5dup minint 0000003231393832wvar6word3139h 3832h 68 4 双字量数据 DWORD定义32位 双字量变量数据可以表达32位无符号和有符号整数32位偏移地址 线性地址或段基地址32位数据包含4个字节 以 高对高 低对低 原则占用4个连续字节空间 69 小端存储方式 返回 70 例 双字变量程序 1 0000000Aminint 10000000000000000080000000FFFFFFFF80000000000000007FFFFFFFdvar1dword0 80000000h 0ffffffffh 80000000h 0 7fffffffh0000001800000001FFFFFFFF00000026FFFFFFDA00000038FFFFFFC8dvar2dword1 1 38 38 38h 38h0000003000000000dvar3dword 000000340000201000001020dword2010h 1020h 71 例 双字变量程序 2 0000003C0000000A 0000000A00000000 dvar5dwordminintdup minint 0000008C38323139dvar6dword38323139h0000009039313238 72 5 变量定位 变量定义的存储空间按照书写的先后顺序一个接着一个分配 ORG参数 控制存放的偏移地址org100h 从偏移地址100H处安排指令代码也由汇编程序按照语句的书写顺序安排存储空间定位伪指令也可以用于控制代码的偏移地址 73 3 3 2变量属性 变量定义分配存储空间赋初值创建变量名变量名具有两类属性 地址属性 首个变量所在存储单元的逻辑地址 含有段基地址和偏移地址 类型属性 变量定义的数据单位字节量BYTE 字量WORD 双字量DWORD3字量FWORD 4字量QWORD 10字节量TBYTE 74 地址操作符 地址操作符用于获取变量名的地址属性 75 例 变量地址属性程序 1 数据段000000001234bvarbyte12h 34horg 100000000C000100020003000400050006000700080009000Aarrayword1 2 3 4 5 6 7 8 9 100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025注册验船师资格考试(C级船舶检验专业案例分析)综合能力测试题及答案二
- 2025年篮球线上考试题及答案
- 航空公务员面试题及答案
- 2025年注册验船师资格考试(A级船舶检验专业法律法规)模拟题及答案一
- 国企银行面试题及答案
- 2025年网络工程师认证考试模拟题及详解
- 广西公务员面试题及答案
- 2025年游戏开发专家面试秘籍与模拟题回顾
- 2025年心理咨询师高级职位竞聘面试指南及模拟题解析
- 2025年药品安全员资格认证考试重点题
- 实心球课件教学课件
- 齐河经济开发区马寨小区安置楼工程临时用电组织设计(5月10日改)
- 220kV变电站土建工程项目管理实施规划(第二版)
- 《计算机网络技术》(第三版)教学指南
- 部编版小学语文四年级语文阅读理解练习试题含答案(全册)
- 机关党建与企业党建共建协议书范本
- 马凡综合征个案护理
- 2024四年级上册语文开学第一课教学课件
- 肉豆蔻丸的基于人工智能的药效预测
- 慢性肺源性心脏病的护理(内科护理学第七版)
- 铁路120型货车空气控制阀
评论
0/150
提交评论