《2信息表示解析》由会员分享,可在线阅读,更多相关《2信息表示解析(84页珍藏版)》请在金锄头文库上搜索。
1、第二章第二章 计算机中的信息表示计算机中的信息表示 数据信息数据信息控制信息控制信息数值型数据数值型数据非数值型数据非数值型数据指令信息等指令信息等第一节第一节 数据信息的表示数据信息的表示2.1.1表示数据的大小表示数据的大小二进制、八进制、十六进制、二二进制、八进制、十六进制、二-十进制十进制2.1.2表示数据的符号表示数据的符号原码、补码、反码原码、补码、反码2.1.3表示小数点表示小数点定点、浮点定点、浮点2.1.1 进位制与数制转换u进位制是指用一组固定的符号和统一的规则来表示数值大小的一种计数方法 。u几个概念 一组数码用来表示某种进制的符号 基数数制所用的数码个数 位权表示不同位
2、置上的权值u进位计数制十进制 二进制 八进制 十六进制2.1.1 进位制与数制转换u1. 进位计数制u(1)十进制必须有10个有序数字符号:0、1、2、3、4、5、6、7、8、9和一个小数点符号“.”;遵循做加法时“逢十进一” ,做减法时“借一当十”的计数规则;任何一个十进制数都可以表示成以10为底的幂的多项式。2.1.1 进位制与数制转换u基数为R的进位计数制的特点:必须有R个有序数字符号:0、1、2、R-1和一个小数点符号“.”;遵循做加法时“逢R进一” ,做减法时“借一当R”的计数规则;任何一个R进制数N都可以表示为:2.1.1 进位制与数制转换u(2)二进制二进制的数码符号有两个0和1
3、,基数为2,运算规则为“逢二进一,借一当二”,权为2n 。任意一个二进制数N可以表示为:优点:表示简单可靠,所用元器件少,且存储传输二进制数方便。运算规则简单,电路容易实现和控制。 2.1.1 进位制与数制转换u(3) 八进制具有8个不同的数字符号0、1、2、3、4、5、6、7,基数为8,运算规则为“逢八进一,借一当八” ,权为8n。任意一个八进制数N可以表示为:u(4) 十六进制具有16个不同的数字符号0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,基数为16,运算规则为“逢十六进一,借一当十六” ,权为16n 2.1.1 进位制与数制转换u2. 数制转换(1) R进制数转换
4、为十进制数按权展开法:将任意一个R进制数转换成十进制数时,求出每一位数字与其位权的乘积之和,即可得到相应的十进制数。2.1.1 进位制与数制转换(2) 十进制转换为R进制整数部分:除基取余用十进制整数除以基数R取余数,直到商为0,得到的余数从右向左排列即可得到R进制整数部分各位的数码。小数部分:乘基取整用十进制小数乘以基数R取整数,直到小数部分为0或满足精度要求为止,得到的整数从左向右排列即可得到R进制小数部分各位的数码。对于既有整数又有小数的十进制数,可以先将整数和小数分别进行转换,然后再合并得到所要结果。 2.1.1 进位制与数制转换u【例】将(29. 25)10转换成二进制数 。解: 整
5、数部分:除2取余,将29反复除以2,直到商为0为止,然后从后往前写出所得余数。小数部分:乘2取整,将0.75连续乘以2,选取进位整数,直到乘积为0或满足精度为止,然后从前往后写出所选取的整数。所以,(29. 25)10=(11101.01)22.1.1 进位制与数制转换u(3)二八进制转换 二进制数转换为八进制数从小数点开始,将二进制数整数部分从右向左3位一组,小数部分从左向右3为一组进行划分,最后一组若不足3位则用0补足,然后写出每组对应的八进制字符,即可得到对应的八进制数。【例】将(1110100110.1011)2转换为八进制数 。解:2.1.1 进位制与数制转换八进制转换为二进制以小数
6、点为界,将每位八进制数用相应的3位二进制数代替,然后将其连在一起即可得到对应的二进制数。【例】将(5321.46)8转换为二进制数 。所以,(5321.46)8=(101 011 010 001.100 110)22.1.1 进位制与数制转换u(4)二十六进制转换 二进制数转换为十六进制数从小数点开始,将二进制数整数部分从右向左4位一组,小数部分从左向右4为一组进行划分,最后一组若不足4位则用0补足,然后写出每组对应的十六进制字符,即可得到对应的十六进制数。【例】将(1110100110.1011)2转换为十六进制数。 解: 2.1.1 进位制与数制转换十六进制转换为二进制以小数点为界,将每位
7、十六进制数用相应的4位二进制数代替,然后将其连在一起即可得到对应的十六进制数。【例】将(5B21.4F)16转换为二进制数。 解:所以,(5B21.4F)16=(0101 1011 0010 0001.0100 1111)2 BCD码u例: (156)10=(0001 0101 0110)BCD2.1.1 进位制与数制转换u(5) 八十六进制转换以二进制为桥梁!八进制转换为十六进制时,先将八进制数转换为二进制数,再将得到的二进制数转换为十六进制数;反之,十六进制向八进制转换时,先将十六进制数转换为二进制数,再将得到的二进制数转换为八进制数。2.1.2 带符号数的表示机器数在机器内使用的,连同正
8、、负号一起数字化的数。u1. 原码数值位用绝对值表示;符号位用“0”表示正号,用“1”表示负号。换句话说,即数字化的符号位加上数的绝对值。 定点小数的原码定义定点整数的原码定义2.1.2 带符号数的表示u原码特点:最高位为符号位,正数为0,负数为1,数值位与真值一样,保持不变。“0”的原码表示有两种不同的表示形式,以整数(8位)为例:+0原=00000000, -0原=10000000容易理解,与代数中正负数的表示接近,原码乘除运算比较方便,但是加减运算规则复杂。2.1.2 带符号数的表示u2. 反码符号位用“0”表示正号,用“1”表示负号;正数的反码数值位与真值的数值位相同,负数的反码数值位
9、是将真值各位按位取反(“0”变成“1”,“1”变成“0”)得到。 定点小数反码定义:定点整数反码定义:2.1.2 带符号数的表示u3. 补码 符号位用“0”表示正号,用“1”表示负号;正数补码的数值位与真值的数值位相同,负数补码的数值位将真值各位按位取反后,最低位加1得到。 定点小数补码定义:定点整数补码定义:2.1.3 数的定点表示与浮点表示u1. 定点表示法定点数数的小数点位置固定不变。一般地,小数点的位置只有两种约定:一种约定小数点位置在符号位之后、有效数值部分最高位之前,即定点小数;另一种约定小数点位置在有效数值部分最低位之后,即定点整数。 2.1.3 数的定点表示与浮点表示u注意:不
10、管是定点小数还是定点整数,计算机所处理的数必须在该定点数所能表示的范围之内,否则会发生溢出。若数据小于定点数所能表示的最小值时,计算机将其作“0”处理,称为下溢。若数据大于定点数能表示的最大值时,计算机将无法表示,称为上溢。将上溢和下溢统称为溢出。2.1.3 数的定点表示与浮点表示u2. 浮点数表示浮点数数的小数点位置不固定。 二进制所表示的浮点数的一般形式:M=S2P,其中纯小数S是数M的尾数,表示数的精度;整数P是数M的阶码,确定了小数点的位置,表示数的范围; 2P为比例因子。 2.1.3 数的定点表示与浮点表示u计算机中浮点数的格式 如下:其中,ES为阶码的符号位,表示阶的正负;MS为尾
11、数的符号位,表示阶的正负。E1 E2 E3 EmMSM1 M2 M3 Mn阶符尾数尾符ES阶码2.1.3 数的定点表示与浮点表示uPentium处理器三种类型浮点数格式 :参数 单精度浮点数 双精度浮点数 扩充精度浮点数 浮点数长度(字长) 32 64 80 尾数长度P 23 52 64 符号位S位数 1 1 1 指数E长度 8 11 15 最大指数 +127 +1023 +16383 最小指数 -126 -1022 -16382 2.1.4 非数值型数据的表示u1. 逻辑数据可用一位二进制数表示事物的两个对立面,若用“1”表示事物成立,则“0”表示不成立 。逻辑数据:如“0”和“1”,“真”
12、和“假”,“是”和“否” 等。注意,逻辑数据“0”和“1”是逻辑概念,表达的是事物的逻辑关系,没有数值的大小之分。2.1.4 非数值型数据的表示u2. 字符编码国际上通用的ASCII码是7位版本,即用7位二进制码表示,共有128(27=128)个字符,其中有32个控制字符, 10个阿拉伯数字,52个大小写英文字母, 32个各种标点符号和运算符号。 ASCII码字符表见课本表2-5 。2.1.4 非数值型数据的表示2. 汉字编码(2)汉字输入码直接从输入设备输入的各种汉字输入方法的编码。汉字输入法大体可以分为以下几种: u流水码:如区位码、电报码、通信密码,优点是重码少,缺点是难于记忆; u音码
13、:以汉语拼音为基准输入汉字,优点是容易掌握,但重码率高; u形码:根据汉字的字型进行编码,优点是重码少,但不容易掌握; u音形码:将音码和形码结合起来,能减少重码率,并提高汉字输入速度。 2.1.4 非数值型数据的表示(1)汉字内码汉字机内码是汉字存储在计算机内的编码。汉字机内码、国标码和区位码3者之间的关系为:区位码(十进制数)的两个字节分别转换为十六进制数后加20H得到对应的国标码;国标码的两个字节的最高位置1,即汉字交换码(国标码)的两个字节分别加80H即可得到对应的机内码;区位码(十进制数)的两个字节分别转换为十六进制数后加A0H得到对应的机内码。u(3)汉字字模码汉字字形码是以点阵方
14、式表示汉字,将汉字分解为若干个“点”组成的点阵字形。 每个点在存储器中用一位二进制数存储,则对于nn点阵,一个汉字所需要的存储空间为nn/8个字节。 如一个1616点阵汉字需要32个字节的存储空间,一个2424点阵汉字需要72个字节的存储空间。 第二节第二节 指令信息的表示指令信息的表示指令:指示计算机执行某类操作的信息的集合。指令:指示计算机执行某类操作的信息的集合。本节主要讨论:一般本节主要讨论:一般指令格式指令格式常用常用寻址方式寻址方式面向用户面向用户指令类型指令类型2.2.1指令格式指令格式指令基本格式指令基本格式操作码操作码 地址码地址码 D D一个一个一个或几个一个或几个MOV
15、AX,SIADD AX,AX ;a*2MOV DX,AXADD AX,AX;a*4ADD AX,AX;a*8ADD AX,DX;a*8 + a*2ADD AX,DI ;a*10+b1.指令字长指令字长定长指令格式定长指令格式变长指令格式变长指令格式便于控制便于控制(1)定长操作码定长操作码各指令各指令的位置、位数固定相同。的位置、位数固定相同。(2 2)扩展操作码)扩展操作码各指令各指令的位置、位数不固定,根据需要的位置、位数不固定,根据需要变化。变化。合理利用存储空间合理利用存储空间2.操作码结构操作码结构例例.指令字长指令字长16位,可含有位,可含有3 3、2 2、1 1或或0 0个地址,
16、每个地址占个地址,每个地址占4 4位。位。操作码操作码地址码地址码151211874300000 0000 X X Y Y Z Z 1110 1110 X X Y Y Z Z.11111111 0000 0000 Y ZY Z 1111 1111 1110 1110 Y ZY Z.三地址指令三地址指令1515条条二地址指令二地址指令1515条条11111111 11111111 0000 0000 Z Z 1111 11111111 1111 1110 1110 Z Z.一地址指令一地址指令1515条条11111111 11111111 11111111 0000 0000 1111 1111
17、1111 1111 11111111 1111 1111.零地址指令零地址指令1616条条 指令的寻址方式 指令寻址找出下一条将要执行的指令在存储器中的地址。 u1. 顺序寻址方式存储器指令n指令n+1指令n+2指令n+m指令寄存器PC+1nn+1指令的寻址方式u2. 跳跃寻址方式采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。 存储器指令n转移地址(m)指令n+1指令m指令寄存器PC+1nm3.地址结构地址结构指令中提供的地址数指令中提供的地址数存储单元地址码存储单元地址码寄存器编号寄存器编号(1)指令提供地址的方式)指令提供地址的方式
18、显地址方式显地址方式隐地址方式隐地址方式:指令中明显指明地址。指令中明显指明地址。:地址隐含约定地址隐含约定,不出现在指令中。不出现在指令中。直接或间接给出直接或间接给出使用使用隐地址隐地址可以减少指令中的地址数,可以减少指令中的地址数,简化简化地址结构地址结构。(2)地址结构的简化地址结构的简化操作数操作数地址地址 四地址结构指令四地址结构指令格式:格式: D1 D2 D3 D4 D1 D2 D3 D4结果结果地址地址下条指下条指令地址令地址功能:功能: (D1)(D1)(D2) D3(D2) D3(D4) (D4) 下条指令下条指令用指令计数器用指令计数器PCPC指示指令地址。指示指令地址
19、。三地址结构指令三地址结构指令格式:格式:操作数操作数地址地址 D1 D2 D3 D1 D2 D3 结果结果地址地址下条指令地址下条指令地址功能:功能:转移时,用转移转移时,用转移地址修改地址修改PCPC内容。内容。(D1)(D1)(D2) D3(D2) D3(PC) + 1 PC(PC) + 1 PC源源/目的目的二地址结构指令二地址结构指令格式:格式: D1 D2 D1 D2 目的目的/源源功能:功能: (D1)(D1)(D2) D2/D1(D2) D2/D1(PC) + 1 PC(PC) + 1 PC双操作数:双操作数:一地址结构指令一地址结构指令格式:格式: D1 D1 隐含约定隐含约
20、定单操作数:单操作数:功能:功能:零地址结构指令零地址结构指令格式:格式:(D1)(D1)(A) A(A) A(PC) + 1 PC(PC) + 1 PC(D1) D1(D1) D1(PC) + 1 PC(PC) + 1 PC 功能:功能:用于堆栈或特殊指令操作。用于堆栈或特殊指令操作。2.2.2寻址方式寻址方式与数据有关的与数据有关的寻址方式址方式确定内存确定内存单元的地址元的地址与与转移地址有关的移地址有关的寻址方式址方式确定确定转移地址移地址寻址方式址方式分分类目的操作数,目的操作数,源操作数源操作数MOV以以MOV指令为例指令为例:u寄存器操作数寄存器操作数放在放在8个通用寄存器或个通
21、用寄存器或4个段寄存器中的操作数个段寄存器中的操作数只能存放字操作数只能存放字操作数段寄存器存放段寄存器存放当前操作数的当前操作数的段基地址段基地址SIDIBPSPCSDSESSS(1)立即立即寻址方式址方式(ImmediateAddressing)特点:特点:操作数包含在指令中。操作数包含在指令中。 操作数是指令的组成部分(可以是操作数是指令的组成部分(可以是8 8位或位或1616位)位), ,取出指令就立即获得取出指令就立即获得操作数操作数立即数立即数例例1:MOVAL,5执行指令后行指令后:(AL)=05H指令指令05存存储器器B005AL例例2:MOVAX,3045H执行指令后行指令后
22、:(AX)=3045H用途:用途:给变量或寄存器赋常量值给变量或寄存器赋常量值限制:限制:只能用于源操作数只能用于源操作数AX低地址低地址高地址高地址指指令令OP45存存储器器304530(2)存)存储器直接器直接寻址方式址方式(DirectAddressing)特点:特点:操作数的偏移地址包含在指令中。操作数的偏移地址包含在指令中。例:例:设(DS)=3000HMOVAX,2000H要要访问的存的存储单元物理地址元物理地址为:30000H+2000H=32000H设:(32000H)=3050H执行指令后行指令后:(AX)=3050H指令指令MOVAX,2000H2000H5030存存储器器
23、代代码段段op0020数据段数据段30000H32000HAX3050用途用途:用于存取用于存取单变量单变量中的操作数。中的操作数。(3)寄存器)寄存器寻址方式(址方式(RegisterAddressing)特点:特点:操作数存在寄存器中。操作数存在寄存器中。例:例:MOVAX,BX执行指令前行指令前:(AX)=3045H(BX)=4000H执行指令后行指令后:(AX)=4000H(BX)=4000H用途:用途:用寄存器提供操作数时存取速度快。用寄存器提供操作数时存取速度快。 存储单元号存储单元号寄存器号寄存器号( (数在数在M M中中) )( (数在数在M M中中) )格式格式(3 3)间接
24、寻址)间接寻址指令给出操作数的间接地址。指令给出操作数的间接地址。存储器间址存储器间址操作码操作码 间接地址间接地址D D D=0030D=003000600060.00600060 S S.S =(D)S =(D)M间址单元间址单元地址指针地址指针 1000H1000HAXAX用途用途: : 可用于处理数组可用于处理数组5050A0A0 A A0 0 5050存储器存储器数据段数据段20000H20000H21000H21000H XXXX XXXX21002H21002H例:设例:设 ( DS ) = 2000H ( DS ) = 2000H ( BX ) = ( BX ) = 1000H
25、1000H指令为指令为: : MOV AX, BX MOV AX, BX 数组起始地址数组起始地址 寄存器间接寻址方式寄存器间接寻址方式计算操作数物理地址的公式:计算操作数物理地址的公式:物理地址物理地址= =(DSDS) 16+16+(BX)(BX)(SI)(SI)(DI)(DI)20000H20000H+ +1000H1000H = = 21000H21000H 要访问的存储单元要访问的存储单元物理地址物理地址为:为:设设: (: (21000H21000H)=)=50A0H50A0H执行指令后执行指令后: (: (AXAX)=)=50A0H50A0H= =(SSSS) 16+16+(BP
26、BP) 1000H1000HAXAX用途用途: : 可用于处理数组可用于处理数组5050A0A0 A A0 0 5050存储器存储器数据段数据段20000H20000H21000H21000H XXXX XXXX21002H21002H例:设例:设 ( DS ) = 2000H ( DS ) = 2000H ARRAY = ARRAY = 1000H1000H指令为指令为: : MOV AX, MOV AX, ARRAY ARRAY 数组起始地址数组起始地址 存储器间接寻址方式存储器间接寻址方式20000H20000H+ + ARRAYARRAY = = 21000H21000H 要访问的存储
27、单元要访问的存储单元物理地址物理地址为:为:设设: (: (21000H21000H)=)=50A0H50A0H执行指令后执行指令后: (: (AXAX)=)=50A0H50A0H基址寻址和变址寻址方式基址寻址和变址寻址方式+ +指令中的位移量指令中的位移量 = = 操作数的偏移地址操作数的偏移地址计算操作数物理地址的公式:计算操作数物理地址的公式:1) 1) 操作数物理地址操作数物理地址= =(DS)(DS) 16+16+2) 2) 操作数物理地址操作数物理地址= =(SS)(SS) 16+ (BP) +16+ (BP) +8 8位位移量位位移量1616位位移量位位移量+ +(SI(SI)
28、)(DI(DI) )(BX(BX) )8 8位位移量位位移量1616位位移量位位移量基址寄存器(基址寄存器(BXBX、BPBP)变址寄存器(变址寄存器(SISI、DIDI)指令指令 4000H4000H30000H30000HAXAX12123434例:设例:设 ( DS ) = 3000H ARRAY=( DS ) = 3000H ARRAY=4000H4000H ( SI ) = ( SI ) = 2000H2000H指令为指令为: : MOV AX, ARRAY SI MOV AX, ARRAY SI 3434 1212存储器存储器代码段代码段 opop 0000 4040数据段数据段3
29、6000H36000H opop 2000H2000H 数组起始地址数组起始地址30000H30000H+ +4000H4000H+2000H = +2000H = 36000H36000H 要访问的存储单元要访问的存储单元物理地址物理地址为:为:设设: (: (36000H36000H)=)=1234H1234H用途用途: : 可用于处理数组可用于处理数组执行指令后执行指令后: (: (AXAX)=)=1234H1234H指令指令 4000H4000H30000H30000HAXAX12123434例:设例:设 ( DS ) = 3000H ARRAY=( DS ) = 3000H ARRA
30、Y=4000H4000H ( BX ) = ( BX ) = 2000H2000H指令为指令为: : MOV AX, ARRAY BX MOV AX, ARRAY BX 3434 1212存储器存储器代码段代码段 opop 0000 4040数据段数据段36000H36000H opop 2000H2000H 数组起始地址数组起始地址30000H30000H+ +4000H4000H+2000H = +2000H = 36000H36000H 要访问的存储单元要访问的存储单元物理地址物理地址为:为:设设: (: (36000H36000H)=)=1234H1234H用途用途: : 可用于处理数
31、组可用于处理数组执行指令后执行指令后: (: (AXAX)=)=1234H1234H 基址变址寻址方式基址变址寻址方式特点:特点:( (基址寄存器基址寄存器) ) + + ( (变址寄存器变址寄存器) ) = = 操作数的偏移地址操作数的偏移地址计算操作数物理地址的公式:计算操作数物理地址的公式:1) 1) 操作数物理地址操作数物理地址= =(DS)(DS) 16+16+2) 2) 操作数物理地址操作数物理地址= =( SS)( SS) 16+ (BP) +16+ (BP) +(BX) +(BX) +(SI(SI) )(DI(DI) )(SI(SI) )(DI(DI) ) 0158H0158H
32、AXAX12123434例:设例:设 ( DS ) = 2100H( DS ) = 2100H( BX ) = ( BX ) = 0158H0158H( DI ) = ( DI ) = 1000H1000H指令为:指令为:MOV AX, BX+DIMOV AX, BX+DI 3434 1212存储器存储器数据段数据段21000H21000H22158H22158H 1000H1000H 数组起始地址数组起始地址21000H21000H+ +0158H0158H+ +1000H1000H= = 22158H22158H 要访问的存储单元要访问的存储单元物理地址物理地址为:为:设设: (: (22
33、158H22158H)=)=1234H1234H执行指令后执行指令后: (: (AXAX)=)=1234H1234H用途用途: : 可用于处理数组可用于处理数组假设已知假设已知(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,变量名,变量名VAL的值为的值为0050H,试指出,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多下列源操作数字段的寻址方式是什么?其物理地址值是多少?少?(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,100H(4)MOVAX,VAL(5)MOVAX,BX(6)
34、MOVAX,SI(7)MOVAX,BX+10(8)MOVAX,VALBX(9)MOVAX,BXSI2.2.3 2.2.3 指令类型指令类型1.1.传送指令传送指令源地址源地址 目的地址目的地址数数设置时需考虑:设置时需考虑:(1 1)规定传送范围)规定传送范围例例. DJS-100. DJS-100系列:系列: 8 80 0X86X86: IBM370 IBM370:R R M MR R M M,R R R RR R M M,R R R R,M M M M(2 2)指明传送单位)指明传送单位例例. . 用操作码说明用操作码说明(VAX-11)(VAX-11):用地址量说明用地址量说明(8(80
35、 0X86)X86):传送次数由传送次数由计数器控制计数器控制MOVMOVB B 8 8MOV MOV AXAX,BXBX MOVMOVW W 1616MOVMOVL L 3232MOV MOV ALAL,BLBL MOV MOV EAXEAX,EBXEBX 例例. 80X86. 80X86的串传送指令:的串传送指令:REPREP MOVSWMOVSW(3 3)设置寻址方式)设置寻址方式在寻址方式的设置上几乎不受限制,能比较在寻址方式的设置上几乎不受限制,能比较集中地反映指令系统各种寻址方式的实现。集中地反映指令系统各种寻址方式的实现。8 8161632322.2.输入输入/ /输出指令输出指
36、令各种信息各种信息主机主机 外设外设设置时需考虑:设置时需考虑:(1 1)I/OI/O指令的功能扩展指令的功能扩展如何用通用如何用通用I/OI/O指令实现对各种具体设备的控制?指令实现对各种具体设备的控制? I/O I/O指令中留有扩展余地指令中留有扩展余地指令中某些字段编码事先不定义,需要时再约定指令中某些字段编码事先不定义,需要时再约定其含义。其含义。 I/O I/O接口中设置控制接口中设置控制/ /状态寄存器状态寄存器用于外设种类、数量不多的场合。用于外设种类、数量不多的场合。(2 2)主机对外设的寻址方式)主机对外设的寻址方式如何设置控制如何设置控制/ /状态寄存器是接口设计的关键。状
37、态寄存器是接口设计的关键。寻找寻找I/OI/O接口中的寄存器的方式。接口中的寄存器的方式。主机用主机用输出指令输出指令或或传送指令传送指令将具体设备的控制命令将具体设备的控制命令按约定的代码格式送往接口中的按约定的代码格式送往接口中的控制寄存器控制寄存器,向外,向外设发出命令。设发出命令。外设的状态信息也以某种格式放在接口的状态寄存外设的状态信息也以某种格式放在接口的状态寄存器中,主机用器中,主机用输入指令输入指令或或传送指令传送指令从从状态寄存器状态寄存器中中取出有关信息进行查询、分析。取出有关信息进行查询、分析。I/OI/O端口端口寻找寻找I/OI/O接口中的寄存器接口中的寄存器的方式。的
38、方式。如何为如何为I/OI/O端口分配地址?端口分配地址? 单独编址单独编址I/OI/O地址空间不占主存空间,可与主存空间重叠。地址空间不占主存空间,可与主存空间重叠。=1 =1 访问存储器访问存储器=0 =0 访问访问I/OI/O端口端口需设置标志区分访问对象,如需设置标志区分访问对象,如编址到寄存器编址到寄存器:为每个寄存器:为每个寄存器(I/O(I/O端口端口) )分配独分配独 立的端口地址;立的端口地址; I/OI/O指令中给出端口地址。指令中给出端口地址。M/IOM/IO 统一编址统一编址I/OI/O端口占据部分主存空间。端口占据部分主存空间。常将存储空间的低端分配给主存单元,高端分
39、配常将存储空间的低端分配给主存单元,高端分配给给I/OI/O端口,以示区分。端口,以示区分。编址到寄存器编址到寄存器 设置设置专用专用I/OI/O指令指令针对单独编址,用针对单独编址,用I/OI/O指令访问指令访问I/OI/O端口。端口。指令中说明输入指令中说明输入/ /输出操作,并给出端口地址。输出操作,并给出端口地址。 :为每个寄存器:为每个寄存器(I/O(I/O端口端口) )分配总分配总 线地址;线地址; 访问外设时,指令中给出总线地址。访问外设时,指令中给出总线地址。(3 3)I/OI/O指令设置方式指令设置方式显式显式I/OI/O指令指令例例. 80X86I/O. 80X86I/O指
40、令设置指令设置 输入:输入:IN ALIN AL,n n;端口地址端口地址(n) AL(n) AL( (直接端口寻址直接端口寻址) ) IN ALIN AL,DXDX;间接端口地址间接端口地址(DX) AL(DX) AL( (间接端口寻址间接端口寻址) ) 输出:输出:OUT nOUT n,ALAL;(AL) n(AL) n( (直接端口寻址直接端口寻址) ) OUT DXOUT DX,ALAL;(AL) (DX)(AL) (DX)( (间接端口寻址间接端口寻址) )主机调用输入机:主机调用输入机: 用用传送指令传送指令实现实现I/OI/O操作操作针对统一编址,用传送指令访问针对统一编址,用传
41、送指令访问I/OI/O端口。端口。不设专用不设专用I/OI/O指令。指令。例例. . 某机某机I/OI/O接口中设置接口中设置控制控制/ /状态寄存器状态寄存器CSRCSR, ,其总线地址为其总线地址为177550177550(8(8进制进制) )数据缓冲寄存器数据缓冲寄存器DBRDBR,其总线地址为,其总线地址为177552177552隐式隐式I/OI/O指令指令控制控制/ /状态字格式:状态字格式:出错出错 故障故障 忙忙 完成完成 允许中断允许中断 维护维护 校验校验 启动启动15 14 12 7 6 2 1 015 14 12 7 6 2 1 0启动:启动:测试:测试:取数:取数:主机
42、主机 177550177550控制字控制字( (启动位为启动位为1)1)传送指令传送指令主机主机 177550177550 状态字状态字传送指令传送指令主机主机 177552177552 数据数据传送指令传送指令 通过通过I/OI/O处理机进行处理机进行I/OI/O操作操作CPUCPU执行简单执行简单I/OI/O指令指令 ( (启动、停止、查询、清除启动、停止、查询、清除) )设置时需考虑设置时需考虑操作数类型操作数类型、符号符号、进制进制等;等;运算结束后设置相应运算结束后设置相应状态标志状态标志。两级两级I/OI/O指令指令(1 1)算术运算指令)算术运算指令I/OI/O处理机执行处理机执
43、行I/OI/O操作指令操作指令 ( (输入、输出输入、输出) )3.3.算术逻辑运算指令算术逻辑运算指令(2 2)逻辑运算指令)逻辑运算指令实现对代码位的实现对代码位的设置设置、测试测试、清除清除、修改修改等。等。与与或或异或异或逻辑运算和移位指令逻辑运算和移位指令 位操作指令可以体位操作指令可以体现汇编语言言对硬件的控制能力。硬件的控制能力。(1)逻辑运算指令逻辑运算指令 按位按位进行行逻辑与、或、异或、非运算的操作。与、或、异或、非运算的操作。 1) 逻辑与指令逻辑与指令ANDANDdst,src(dst)(dst)(src)2) 逻辑或指令逻辑或指令ORORdst,src (dst)(d
44、st)(src) (dst)(dst)(src) 3)异或指令异或指令XOR XOR dst,src4)逻辑非指令逻辑非指令NOTNOTopr (opr)(opr)求反)求反源操作数源操作数1保留原保留原值0置置0特点:特点:1010 0011目的操作数目的操作数源操作数源操作数(1)逻辑与操作与操作保留保留清清00010 何何时该用何种用何种逻辑操作?操作?逻辑运算和移位指令逻辑运算和移位指令源操作数源操作数1置置10 保留原保留原值特点:特点:1010 0011目的操作数目的操作数源操作数源操作数(2)逻辑或操作或操作置置1保留保留1011源操作数源操作数1取反取反0保留原保留原值特点:特
45、点:10100011目的操作数目的操作数源操作数源操作数(3)异或操作异或操作求反求反保留保留1001逻辑运算和移位指令逻辑运算和移位指令 如何确定源操作数?如何确定源操作数?例:例:将将AL的的D0位和位和D1位清位清0。设(AL)=BFH,指令,指令为ANDAL, ?分析:分析:10111111B 11111100B(FCH)10111100B应将将源源操操作作数数取取为立立即即数数FCH,指令,指令为:ANDAL,0FCH执行指令后:行指令后:(AL)=BCH根根据据上上述述操操作作的的特特点点,可可以以确确定定该用用什什么么操操作作实现需需要要的的功功能能:保留某些位保留某些位(其他位
46、清(其他位清0 0)用逻辑与操作)用逻辑与操作某位置某位置1 1 用逻辑或操作,用逻辑或操作,某位求反某位求反用异或操作用异或操作 逻辑运算和移位指令逻辑运算和移位指令例:例:将将AL中中的的大写字母大写字母(AL)=41H转换为小写字母小写字母即即41H61H指令指令为:ORAL,?分析:分析:01000001B(41H) 00100000B(20H)20H执行指令后:行指令后:(AL)=61H小写小写转换为大写的指令大写的指令为:ANDAL,?0DFH 11011111B(DFH)执行指令后:行指令后:(AL)=41H01100001B(61H)01000001B(41H)根根据据需需要要
47、的的功功能能,先先确确定定逻逻辑辑运运算算指指令令,再再利利用用逻逻辑辑运算指令的特点运算指令的特点确定源操作数确定源操作数。逻辑运算方法:运算方法:逻辑运算和移位指令逻辑运算和移位指令例:例:测试AL的的D0位是否位是否为1。MOV AL,0F3HTEST AL,01H执行指令后:行指令后:ZF=0分析:分析:11110011B 00000001B00000001B根据根据ZF=0可知可知AL的的D0位位为1 指指令令系系统统有有专专门门的的指指令令来来检检测测ZF的的设设置置,从从而而控控制制程程序的处理流程序的处理流程。逻辑运算和移位指令逻辑运算和移位指令(2) 移位指令移位指令1)逻辑
48、左移指令逻辑左移指令 SHLopr,count2)算术左移指令算术左移指令SALopr,countoprCF补0SHL/SAL移位移位例:将例:将BL中的中的值逻辑左移左移1位位,设(BL)=AFHSHLBL,1101011110指令指令执行前行前010111101指令指令执行后行后执行指令后:行指令后:(BL)=5EH(分(分为逻辑移位、算移位、算术移位和循移位和循环移位三移位三类)逻辑运算和移位指令逻辑运算和移位指令3)逻辑右移指令逻辑右移指令 SHRopr,count4)算术右移指令算术右移指令SARopr,countoprCF补0SHR移位移位S保持保持符号符号SAR移位移位例例:将将
49、BL中的中的值逻辑右移右移1位位,设(BL)=AFHSHRBL,1101011110指令指令执行前行前010101111指令指令执行后行后执行指令后:行指令后:(BL)=57H逻辑运算和移位指令逻辑运算和移位指令例例:将将BL中的中的值算算术右移右移1位位,设(BL)=AFHSARBL,1101011110指令指令执行前行前执行指令后:行指令后:(BL)=D7H110101111指令指令执行后行后逻辑移位总是逻辑移位总是补补0 0 ,算术移位,算术移位保持符号保持符号。移位位数大于移位位数大于1 1时时, ,必须用必须用CL寄存器给出移位位数。寄存器给出移位位数。逻辑运算和移位指令逻辑运算和移
50、位指令5)循环左移指令循环左移指令 ROLopr,count6)带进位循环左移指令带进位循环左移指令RCLopr,countRCL移位移位CFoprROL移位移位7)循环右移指令循环右移指令 RORopr,count8)带进位循环右移指令带进位循环右移指令RCRopr,countRCR移位移位CFoprROR移位移位逻辑运算和移位指令逻辑运算和移位指令例:将例:将BL中的中的值循循环左移左移1位位,设(BL)=AFHROLBL,1101011110指令指令执行前行前执行指令后:行指令后:(BL)=5FH010111111指令指令执行后行后注注意意:如如果果移移位位位位数数大大于于1 1,必必须
51、须用用CLCL寄寄存存器器给给出移位位数。出移位位数。逻辑运算和移位指令逻辑运算和移位指令例:将例:将BX指向的存指向的存储器器单元的高字元的高字节与低字与低字节互互换位置。位置。MOVCL,8RORBX,CL5B400指令指令执行前行前设执行指令前:行指令前:(DS)=3000H,(,(BX)=0150H(30150H)=5B40H执行指令后:行指令后:指令指令执行后行后405B0(30150H)=405BH,CF=0逻辑运算和移位指令逻辑运算和移位指令算术、逻辑移位可用于:算术、逻辑移位可用于:改改变数据的位置(数据的位置(丢失移出的位)失移出的位)二二进制的整次制的整次幂的乘法(左移)、
52、除法(右移)的乘法(左移)、除法(右移)算算术移位用于移位用于带符号数符号数操作操作逻辑移位用于移位用于无符号数无符号数操作操作循环移位可用于:循环移位可用于:改改变数据的位置(不数据的位置(不丢失移失移动的位)的位)逻辑运算和移位指令逻辑运算和移位指令控制程序流程。控制程序流程。(1 1)转移指令)转移指令4. 4. 程序控制指令程序控制指令(2 2)转子指令与返回指令)转子指令与返回指令转子:操作码转子:操作码 子程序入口地址子程序入口地址无条件转移无条件转移条件转移条件转移循环循环:操作码:操作码 转移地址转移地址:操作码:操作码 转移地址转移地址 转移条件转移条件:转移条件为循环计数值
53、:转移条件为循环计数值返回:操作码返回:操作码 返回地址返回地址同一条返回指令应能提供多个不同的返回地址。同一条返回指令应能提供多个不同的返回地址。返回地址的存取:返回地址的存取:用堆栈存放返回地址。用堆栈存放返回地址。(3 3)软中断指令)软中断指令程序程序自陷指令自陷指令 第二章复习提纲第二章复习提纲1.I/O1.I/O指令的功能扩展指令的功能扩展( (目的、方法目的、方法) ),外设编址方,外设编址方式和指令设置方式。式和指令设置方式。2.2.基本概念:扩展操作码基本概念:扩展操作码( (扩展方法扩展方法) )、地址结构、地址结构( (简化方法简化方法) )、隐地址、显地址、基本寻址方式、隐地址、显地址、基本寻址方式( (立立即、直接、间址、变址即、直接、间址、变址) )的含义与应用场合。的含义与应用场合。表示不同的功能调用表示不同的功能调用调试程序调试程序早期主要用于早期主要用于程序的调试程序的调试。现在常常用于现在常常用于系统功能调用系统功能调用。以以 INT nINT n 的形式出现在程序中。的形式出现在程序中。