第二章 计算机中的信息表示(打印).doc_第1页
第二章 计算机中的信息表示(打印).doc_第2页
第二章 计算机中的信息表示(打印).doc_第3页
第二章 计算机中的信息表示(打印).doc_第4页
第二章 计算机中的信息表示(打印).doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

第二章 计算机中的信息表示 2.3.2 常用的寻址方式 寻址方式:指令中以什么方式提供操作数或操作数地址的方法,称之为寻址方式。 操作数通常存放的位置:操作数就包含在该指令中,或者紧跟在该指令之后;操作数存放于CPU某寄存器中;操作数存储在主存储器单元中,该数据通常有两类处理方法:只需对某一操作数进行处理;需要对一个连续的数组或表进行处理;操作数存储在堆栈区中;操作数存储在某个I/O接口的寄存器中。 对操作数的寻址通常有如下方法:立即寻址:读取指令的同时读出操作数;直接寻址:直接给出主存储器的有效地址或寄存器号,以读取操作数;间接寻址:先从某寄存器或主存储器中读取有效地址,再依照这一地址访问主存储器以便读取操作数。这样的目的使操作数的地址可以变化,增加编程的灵活性;变址寻址:指令给出的是形式地址(不是最终存储数据的地址),经过某种运算(加法、减法的拼接等)之后获得有效地址,依据该地址访问主存储器,读取操作数。 目的:使各类程序更有效地适应各种需要(例如对数组、表格、链表等),便于程序的转移、存储管理、程序重定位等操作。 数据的寻址方式 1.立即数寻址方式 立即数寻址:操作数就包含在本指令中,是指令的一部分。CPU完整地取出这条指令之后,也就获得了操作数。 例如:MOV AX,1090H ;1090HAX MOV BL,80H ;80HBL MOV DH,0A5H ;0A5HDH 其中,立即寻址的立即数作为源操作数,主要用来给寄存器或存储器赋值。 汇编语言规定:立即数必须以数字开头,数制用后缀表示。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)内容CL MOV AX,BX ;(BX)内容AX 假如:(DL)=50H,(BX)=1234H,执行结果:(CL)=50H,(AX)=1234H。 注意:寄存器寻址方式中,操作数就在寄存器中,不需要访问存储器就取得操作数,因而可以取得比较高的操作速度,通常用于CPU内部操作。 3.存储器寻址方式 存储器寻址:操作数存放在存储单元中,在指令中可以直接或间接给出存放操作数的地址,以达到存取操作数的目的。 直接寻址方式 直接寻址:有效地址EA(16位偏移地址)在指令的操作码后面直接给出,它与指令的操作码一起,存放在存储器的代码段中,也是高位字节存放在高地址中,低位字节存放在低位地址中。但操作数本身一般存放在存储器的数据段中。 例如:MOV AL,1064H 若(DS)=2000H,则2000H左移4位再与1064相加得21064H,即 (21064)内容AL 注意:若没特殊说明,直接寻址的操作数一般存放在数据段,即隐含的段寄存器是DS。但8086/8088允许段超越,即允许使用CS、SS或ES作为段寄存器,此时需要在指令中特别标明。方法是:在有关操作数的前面写上段寄存器名,再加上:。 例如:MOV AL,ES:1064H 汇编规定:汇编指令中可以用符号地址代替数值地址。 例如:MOV AL,VALUE 或 MOV AL,VALUE 其中:VALUE为存放操作数单元的符号地址。 寄存器间接寻址方式 寄存器间接寻址:指令中指定的寄存器(是一个16位寄存器)中的内容不是操作数,而是操作数的有效地址,操作数本身存放在存储器中。 寄存器间接寻址方式可用的寄存器有:SI、DI、BX和BP。即 (SI) (DI) EA = (BX) (BP) 注意:选择其中不同的间址寄存器,默认的段寄存器有所不同。若选择 SI、DI、BX寄存器,则存放操作数的段寄存器默认为DS;若选择BP寄存器,则对应的段寄存器为SS。应用时要注意。 例如:MOV AX,SI MOV BX,AL 若(DS)=3000H,(SI)=2000H,(BX)=1000H,AL=64H,则 (DS)内容左移4位与(SI)内容再相加,得32000H,即32000H中的内容AX。 (DS)内容左移4位与(BX)内容再相加,得31000H,即AL(31000H)中。 寄存器相对寻址方式 寄存器相对寻址:其有效地址EA是一个由指令中给定的8位或16位位移量disp(displacement)和指定的寄存器内容相加之和。 寄存器相对寻址可用的寄存器:SI、DI、BX和BP。即 (SI) (DI) 8位disp EA = + (BX) 16位disp (BP) 其中,位移量可以看成是一个基于基值/变值的一个相对值,即称之为寄存器相对寻址方式。通常位移量可以用符号地址表示。 例如:MOV SI+10H,AX MOV CX,BX+COUNT 若(DS)=3000H,(SI)=2000H,(BX)=1000H,COUNT=1050H,(AX)=4050H,则: (DS)内容左移4位再与(SI)内容相加、再加10H(disp)=32010H AX(32010H)=4050H (DS)内容左移4位再与(BX)内容、再与COUNT内容相加=32050H (32050)内容CX=4030H 寄存器相对寻址方式的操作数在汇编语言中书写时可以是下列形式之一: MOV AL,BP+TABLE MOV AL,BP+TABLE MOV AL,TABLEBP 注意:若指令中指定的寄存器是SI、DI、BX,则存放操作数的段寄存器默认为DS,若指令中指定BP寄存器,则对应的段寄存器应为SS。 寄存器相对寻址方式也允许段超越。 基址变址寻址方式 基址变址寻址:其有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和。即 (SI) (BX) EA = + (DI) (BP) 在汇编语言中书写时可以是下列形式之一: MOV BX+DI,AX MOV 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=43200H;(43200H)内容AH。执行结果: (32100H)=0050H,(AH)=56H。 注意:由基址决定哪一个段寄存器作地址指针。即若用BX作基地址,则操作数在数据段中;若用BP作基地址,则操作数在堆栈段中。 若在指令中规定了段超越,则可用其他寄存器作为地址基准。 基址变址相对寻址方式 基址变址相对寻址:其有效地址是由指令中指定的8位或16位位移量(disp)、一个基址寄存器内容和一个娈址寄存器内容之和。即 (SI) (BX) 8位disp EA = + + (DI) (BP) 16位disp 注意:基址寄存器为BP时,段寄存器为SS。也允许段超越。 例如:MOV AH,BX+DI+1234H MOV BP+SI+DATA,CX若(DS)=4000H,(SS)=5000H,(BX)=1000H,(DI)=1500H,(BP)=2000H,(SI)=1050H,(CX)=2050H,DATA=1000H,(43734)=64H,则DS左移四位+BX+DI+1234=(43734)AHSS左移四位+BP+SI+DATA=54050(CX)执行结果为: (AH)=64H,(54050H)=2050H。 基址加变址相对寻址方式也可以表示成几种不同的形式: MOV AX,BX+SI+COUNT MOV AX,COUNTBXSI MOV AX,BX+COUNTSI MOV AX,BXCOUNTSI MOV AX,BX+SICOUNT MOV AX,COUNTSIBX 4.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指令系统中,有一组指令被用来控制程序的执行顺序。 程序的执行是由CS和IP的内容共同决定的。通常当BIU完成一次取指令周期以后,就自动修改IP的内容以指向下一条指令的地址。使程序按预先存放在程序存储器中的指令的次序,由低地址到高地址顺序执行。若需要改变程序的执行顺序,转移到所要求的指令地址再顺序执行时,可以安排一条转移指令,按指令的要求修改IP和CS内容,从而将程序转移到指令所指定的转移地址。 程序转移的寻址方式就是找出程序转移的地址,转移地址可以在段内,也可以在段间,寻求转移地址的方法称为转移地址寻址方式。 1.段内直接寻址方式 段内直接寻址方式也称相对寻址方式。 转移地址是:IP内容和指令规定的8位或16位位移量之和。 其中,位移量是8位时,称作短程转移;位移量是16位时,称作近程转移。 特点:该方式可用于条件转移或无条件转移;但条件转移只用8位位移量的短程转移,无条件转移在8位位量时称为跳转移。 段内直接寻址方式的格式: JMP NEAR PRT PROGIA JMP SHORT QUEST 其中:PROGIA和QUEST为转向的符号地址。 注意:在汇编语言中,若位位量为16位时,在符号地址前操作符NEAR PRT; 若位位量为8位时,在符号地址前操作符SHORT。 2.段内间接寻址方式 段内间接寻址:程序转移的地址存放在寄存器或存储器单元中。寄存器或存储器单元的内容可以用数据寻址方式中除了立即数以外的任何一种寻址方式取得,所得到的转移有效地址用来更新IP的内容。 段内间接寻址方式格式: JMP BX JMP WORD PRT BP+TABLE 其中:WORD PRT 为操作符,用以指出其后的寻址方式所取得的转向地址是一个字的有效地址,即说它是段内转移。 假设:(DS)=2000H,(BX)=1256H,(SI)=528FH, 位移量=20A1H,(232F7H)=3280H,(264E5H)=2450H。 例一 JMP BX 则执行该指令后(IP)=1256H 例二 JMP TABLEBX 则执行该指令后(IP)=(16d(DS)+(BX)+位移量) =(20000+1256+20A1) =(232F7) =3280H 例三 JMP BXSI 则该指令执行后(IP)=(16d(DS)+(BX)+(SI) =(20000+1256+528F) =(264E5) =2450H 3.段间直接寻址方式 段间直接寻址:在指令中直接给出16位的段基值和16位的偏移地址用来更新当前的CS和IP内容。 段间直接寻址方式格式: JMP FAR PTR NEXTROUTINT 其中:NEXTROUTINT为转向的符号地址,FAR PTR 是表示段间转移的操作符。 4.段间间接寻址方式 段间间接寻址:由指令中给出的存储器数据寻址方式字节求出存放转移地址的连续两个字的地址。其低位字地址单元存放的是偏移地址,高位字地址单元中存放的是转移段基值。它既更新IP内容又更新CS内容,即实现段间寻址。 段间间接寻址方式格式: JMP DWORD PRT INTERS+BX 其中:INTERS+BX说明数据寻址方式为寄存器相对寻址方式,DWORD PRT为双字操作符,说明该指令是转向地址需取双字的段间转移指令。 2.3.3指令类型(参考教材P59) 8086/8088的指令系统大致可以分为六种类型,现分别介绍如下。 一、数据传送指令 二、输入输出指令 三、算术运算指令四、逻辑运算指令 五、位移操作指令 六、程序控制指令(转移指令) 七、串操作指令 八、数据转换指令 九、堆栈操作指令 十、特权指令 2.3.4 Pentium指令格式 学员自己学习 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),若余数为零,则接收正确,否则接收出错。 具体过程如下: CRC码校验序列的计算(参刘远生P45) 设M(x)为 k 位信息码多项式,G(x)为 r 阶生成码多项式,R(x)为 r 位校验码多项式,则得到待传输的CRC码

温馨提示

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

评论

0/150

提交评论