收藏 分享(赏)

第二章 计算机中的信息表示(打印).doc

上传人:tkhy51908 文档编号:6995392 上传时间:2019-04-29 格式:DOC 页数:11 大小:68KB
下载 相关 举报
第二章    计算机中的信息表示(打印).doc_第1页
第1页 / 共11页
第二章    计算机中的信息表示(打印).doc_第2页
第2页 / 共11页
第二章    计算机中的信息表示(打印).doc_第3页
第3页 / 共11页
第二章    计算机中的信息表示(打印).doc_第4页
第4页 / 共11页
第二章    计算机中的信息表示(打印).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、1第二章 计算机中的信息表示2.3.2 常用的寻址方式寻址方式:指令中以什么方式提供操作数或操作数地址的方法,称之为寻址方式。操作数通常存放的位置:操作数就包含在该指令中,或者紧跟在该指令之后;操作数存放于 CPU 某寄存器中;操作数存储在主存储器单元中,该数据通常有两类处理方法:只需对某一操作数进行处理;需要对一个连续的数组或表进行处理;操作数存储在堆栈区中;操作数存储在某个 I/O 接口的寄存器中。对操作数的寻址通常有如下方法:立即寻址:读取指令的同时读出操作数;直接寻址:直接给出主存储器的有效地址或寄存器号,以读取操作数;间接寻址:先从某寄存器或主存储器中读取有效地址,再依照这一地址访问

2、主存储器以便读取操作数。这样的目的使操作数的地址可以变化,增加编程的灵活性;变址寻址:指令给出的是形式地址(不是最终存储数据的地址) ,经过某种运算(加法、减法的拼接等)之后获得有效地址,依据该地址访问主存储器,读取操作数。目的:使各类程序更有效地适应各种需要(例如对数组、表格、链表等) ,便于程序的转移、存储管理、程序重定位等操作。数据的寻址方式1.立即数寻址方式立即数寻址:操作数就包含在本指令中,是指令的一部分。CPU 完整地取出这条指令之后,也就获得了操作数。2例如:MOV AX,1090H ;1090H AXMOV BL,80H ;80H BLMOV DH,0A5H ;0A5HDH其中

3、,立即寻址的立即数作为源操作数,主要用来给寄存器或存储器赋值。汇编语言规定:立即数必须以数字开头,数制用后缀表示。H 表示 16 进制;B 表示二进制;D 表示 10 进制数;Q 表示 8 进制数。凡字母开头的 16 进制数必须前缀 0。2.寄存器寻址方式寄存器寻址:操作数存放在指令规定的寄存器中,寄存器的名字由指令指出。16 位操作数的寄存器可以是:AX、BX、CX、DX、SI、DI、SP 或 BP。8 位操作数的寄存器可以是:AH、AL、BH、BL 、CH、CL、DH 或 DL。例如:MOV CL,DL ;(DL)内容CLMOV AX,BX ;(BX)内容AX假如:(DL)=50H,(BX

4、)=1234H,执行结果:(CL)=50H,(AX)=1234H。注意:寄存器寻址方式中,操作数就在寄存器中,不需要访问存储器就取得操作数,因而可以取得比较高的操作速度,通常用于 CPU 内部操作。3.存储器寻址方式存储器寻址:操作数存放在存储单元中,在指令中可以直接或间接给出存放操作数的地址,以达到存取操作数的目的。直接寻址方式直接寻址:有效地址 EA(16 位偏移地址) 在指令的操作码后面直接给出,它与指令的操作码一起,存放在存储器的代码段中,也是高位字节存放在高地址中,低位字节存放在低位地址中。但操作数本身一般存放在存储器的数据段中。例如:MOV AL,1064H若(DS)=2000H,

5、则 2000H 左移 4 位再与 1064 相加得 21064H,即 (21064)内容AL注意:若没特殊说明,直接寻址的操作数一般存放在数据段,即隐含的段寄存3器是 DS。但 8086/8088 允许段超越,即允许使用 CS、SS 或 ES 作为段寄存器,此时需要在指令中特别标明。方法是:在有关操作数的前面写上段寄存器名,再加上:。例如:MOV AL,ES:1064H汇编规定:汇编指令中可以用符号地址代替数值地址。例如:MOV AL,VALUE 或MOV AL,VALUE其中:VALUE 为存放操作数单元的符号地址。寄存器间接寻址方式寄存器间接寻址:指令中指定的寄存器(是一个 16 位寄存器

6、) 中的内容不是操作数,而是操作数的有效地址,操作数本身存放在存储器中。寄存器间接寻址方式可用的寄存器有:SI、DI、BX 和 BP。即 (SI) (DI) EA = (BX) (BP) 注意:选择其中不同的间址寄存器,默认的段寄存器有所不同。若选择 SI、 DI、BX 寄存器,则存放操作数的段寄存器默认为 DS;若选择 BP 寄存器,则对应的段寄存器为 SS。应用时要注意。例如:MOV AX,SIMOV BX,AL若(DS)=3000H,(SI)=2000H,(BX)=1000H,AL=64H,则(DS)内容左移 4 位与(SI)内容再相加,得 32000H,即 32000H 中的内容AX。

7、(DS)内容左移 4 位与(BX)内容再相加,得 31000H,即 AL(31000H)中。寄存器相对寻址方式4寄存器相对寻址:其有效地址 EA 是一个由指令中给定的 8 位或 16 位位移量disp(displacement)和指定的寄存器内容相加之和。寄存器相对寻址可用的寄存器:SI、DI、BX 和 BP。即 (SI) (DI) 8 位 disp EA = + (BX) 16 位 disp (BP) 其中,位移量可以看成是一个基于基值/变值的一个相对值,即称之为寄存器相对寻址方式。通常位移量可以用符号地址表示。例如:MOV SI+10H,AXMOV CX,BX+COUNT若(DS)=300

8、0H,(SI)=2000H,(BX)=1000H,COUNT=1050H,(AX)=4050H,则:(DS)内容左移 4 位再与(SI)内容相加、再加 10H(disp)=32010HAX(32010H)=4050H(DS)内容左移 4 位再与(BX)内容、再与 COUNT 内容相加=32050H(32050)内容CX=4030H寄存器相对寻址方式的操作数在汇编语言中书写时可以是下列形式之一:MOV AL,BP+TABLEMOV AL,BP+TABLEMOV AL,TABLEBP注意:若指令中指定的寄存器是 SI、DI、BX ,则存放操作数的段寄存器默认为 DS,若指令中指定 BP 寄存器,则

9、对应的段寄存器应为 SS。寄存器相对寻址方式也允许段超越。基址变址寻址方式基址变址寻址:其有效地址是一个基址寄存器(BX 或 BP)和一个变址寄存器(SI或 DI)的内容之和。即5 (SI) (BX) EA = + (DI) (BP) 在汇编语言中书写时可以是下列形式之一:MOV BX+DI,AXMOV AH,BPSI若(DS)=3000H,(SS)=4000H,(BX)=1000H,(DI)=1100H,(AX)=0050H,(BP)=2000H,(SI)=1200H,(43200H)=56H,则DS 左移四位+BX+DI=32100H;AX(32100)SS 左移四位+BP=SI=4320

10、0H;(43200H)内容AH。执行结果:(32100H)=0050H,(AH)=56H。注意:由基址决定哪一个段寄存器作地址指针。即若用 BX 作基地址,则操作数在数据段中;若用 BP 作基地址,则操作数在堆栈段中。若在指令中规定了段超越,则可用其他寄存器作为地址基准。基址变址相对寻址方式基址变址相对寻址:其有效地址是由指令中指定的 8 位或 16 位位移量(disp)、一个基址寄存器内容和一个娈址寄存器内容之和。即 (SI) (BX) 8 位 disp EA = + + (DI) (BP) 16 位 disp 注意:基址寄存器为 BP 时,段寄存器为 SS。也允许段超越。例如:MOV AH

11、,BX+DI+1234HMOV BP+SI+DATA,CX若(DS)=4000H,(SS)=5000H,(BX)=1000H,(DI)=1500H,(BP)=2000H,(SI)=1050H,(CX)=2050H,DATA=1000H,(43734)=64H,则6DS 左移四位+BX+DI+1234=(43734)AHSS 左移四位+BP+SI+DATA=54050(CX)执行结果为:(AH)=64H,(54050H)=2050H 。基址加变址相对寻址方式也可以表示成几种不同的形式:MOV AX,BX+SI+COUNTMOV AX,COUNTBXSIMOV AX,BX+COUNTSIMOV A

12、X,BXCOUNTSIMOV AX,BX+SICOUNTMOV AX,COUNTSIBX4.I/O 端口寻址方式直接端口寻址直接端口寻址方式,端口地址用 8 位立即数(0255)表示。例如:IN AL,21H ;从 I/O 端口地址为 21H 的端口中读取数据送到 AL 中。间接端口寻址间接端口寻址,I/O 端口的地址应事先存放在规定的 DX 寄存器中(065535)。例如:MOV DX,255 ;将端口地址DX 寄存器中 .OUT DX,AL ;将 ALDX 寄存器内容所指定的端口地址中。转移地址的寻址方式8086/8088 指令系统中,有一组指令被用来控制程序的执行顺序。程序的执行是由 C

13、S 和 IP 的内容共同决定的。通常当 BIU 完成一次取指令周期以后,就自动修改 IP 的内容以指向下一条指令的地址。使程序按预先存放在程序存储器中的指令的次序,由低地址到高地址顺序执行。若需要改变程序的执行顺序,转移到所要求的指令地址再顺序执行时,可以安排一条转移指令,按指令的要7求修改 IP 和 CS 内容,从而将程序转移到指令所指定的转移地址。程序转移的寻址方式就是找出程序转移的地址,转移地址可以在段内,也可以在段间,寻求转移地址的方法称为转移地址寻址方式。1.段内直接寻址方式段内直接寻址方式也称相对寻址方式。转移地址是:IP 内容和指令规定的 8 位或 16 位位移量之和。其中,位移

14、量是 8 位时,称作短程转移;位移量是 16 位时,称作近程转移。特点:该方式可用于条件转移或无条件转移;但条件转移只用 8 位位移量的短程转移,无条件转移在 8 位位量时称为跳转移。段内直接寻址方式的格式:JMP NEAR PRT PROGIA JMP SHORT QUEST 其中:PROGIA 和 QUEST 为转向的符号地址。注意:在汇编语言中,若位位量为 16 位时,在符号地址前操作符 NEAR PRT;若位位量为 8 位时,在符号地址前操作符 SHORT。2.段内间接寻址方式段内间接寻址:程序转移的地址存放在寄存器或存储器单元中。寄存器或存储器单元的内容可以用数据寻址方式中除了立即数

15、以外的任何一种寻址方式取得,所得到的转移有效地址用来更新 IP 的内容。段内间接寻址方式格式:JMP BXJMP WORD PRT BP+TABLE其中:WORD PRT 为操作符,用以指出其后的寻址方式所取得的转向地址是一个字的有效地址,即说它是段内转移。假设:(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量=20A1H ,(232F7H)=3280H,(264E5H)=2450H。8例一 JMP BX则执行该指令后(IP)=1256H例二 JMP TABLEBX则执行该指令后(IP)=(16d(DS)+(BX)+位移量)=(20000+1256+20A1)=(232

16、F7)=3280H例三 JMP BXSI则该指令执行后(IP)=(16d(DS)+(BX)+(SI)=(20000+1256+528F)=(264E5)=2450H3.段间直接寻址方式段间直接寻址:在指令中直接给出 16 位的段基值和 16 位的偏移地址用来更新当前的 CS 和 IP 内容。段间直接寻址方式格式:JMP FAR PTR NEXTROUTINT其中:NEXTROUTINT 为转向的符号地址,FAR PTR 是表示段间转移的操作符。4.段间间接寻址方式段间间接寻址:由指令中给出的存储器数据寻址方式字节求出存放转移地址的连续两个字的地址。其低位字地址单元存放的是偏移地址,高位字地址单

17、元中存放的是转移段基值。它既更新 IP 内容又更新 CS 内容,即实现段间寻址。段间间接寻址方式格式:JMP DWORD PRT INTERS+BX其中:INTERS+BX说明数据寻址方式为寄存器相对寻址方式,DWORD PRT为双字操作符,说明该指令是转向地址需取双字的段间转移指令。92.3.3 指令类型(参考教材 P59)8086/8088 的指令系统大致可以分为六种类型,现分别介绍如下。一、数据传送指令二、输入输出指令三、算术运算指令四、逻辑运算指令五、位移操作指令六、程序控制指令(转移指令)七、串操作指令八、数据转换指令九、堆栈操作指令十、特权指令2.3.4 Pentium指令格式学员

18、自己学习2.3.5 SPARC 指令格式学员自己学习2.4 校验技术2.4.1 奇偶校验码结合教材讲2.4.2 循环冗余校验码循环冗余校验码 CRC(Cyclic Redundancy Check):简称循环码,CRC 是目前使用比较广泛的一种校验方法。循环冗余校验码为什么具有纠正错误的能力,其数学公式、定理证明和推导,都涉及复杂的数学理论,在此不再说明。在此只介绍其方法。循环冗余校验码生成过与检验程:用 M(x)除以 G(x) ,得到余数 R(x)即是 FCS(帧校验序列)码,把FCS 码跟在数据位之后便形成送往信道的 CRC 码。接收方将收到的码除以 G(x) ,10若余数为零,则接收正确

19、,否则接收出错。具体过程如下:CRC 码校验序列的计算(参刘远生 P45)设 M(x)为 k 位信息码多项式,G(x)为 r 阶生成码多项式,R(x)为 r 位校验码多项式,则得到待传输的 CRC 码集为 k+r 位多项式;用模 2 除法进行 xrM(x)/G(x)得到余式 R(x) ;用模 2 减法进行 xrM(x) R(x) ,即得到待传输的 CRC 码多项式(数据位加检验位。 )CRC 编码实例例如要传输的信息为:1010001101,生成多项式为 G(x)=X5+X4+X2+1,求CRC 码的检验序列码,并验证收到的码字:101000110101110 的正确性。编码信息序列:1010

20、001101 对应的码的多项式为:M(x)=X9+X7+X3+X2+1 ;XrM(x)=X14+X12+X8+X7+X5,对应的代码为:101000110100000;生成多项式 G(x)=X5+X4+X2+1,对应的代码为:110101。用模 2 除法求 R(x)的代码,即得检验序列:1101010110-110101 )101000110100000-01110所以,得到检验序列为:01110,即 R(x)=X3+X2+X1。验证用 101000110101110 除以生成多项式 G(x)=X5+X4+X2+1 对应的代码为:110101 得余数为零。由于余数为零,所以此码没错。否则该接收码有错。G(x)的选择方法11原理上讲 G(x)多少位都可以,考虑到实际应用的特点,目前常用的有 12 位、16 位、32 位等,CRC 的校验能力与附加校验位的位数有关。通常,校验位越多,校验能力就越强。其常用的多项式有:见谢 P51

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报