用小数点“?”相互分隔。 (2) 域名
每台入网的计算机也可以符号来表示易记的名字为其标识,称为该计算机的域名。域名与各自的IP地址对应,当用户访问网络中的某台主机时,只需按名访问,而无须关心它的IP地址。
一台主机通常只能有一个IP地址,但允许有多个域名(用于不同的目的)。主机从一个物理网络移到另一个网络时,其IP地址必须更换,但可以保留原来的域名不变。
把域名翻译成IP地址的软件称为域名系统(domain name system,DNS)。 (3) 如何接入互联网
互联网是由遍布全球的局域网、广域网和计算机通过通信线路连接在一起而构成的,将局域网连接到互联网通常需要使用路由器。路由器的功能是将两个甚至多个同构或者异构的计算机网互相连接起来。 4. 互联网与Web
Web(world wide web,WWW或Web)有人译作万维网、环球网、或称为Web网、3W网。
网页可以是文本、图片、声音、动画以及它们的组合,多数网页是一种采用HTML语言描述的文档(HTML文档),其文件扩展名为.html或.htm。网页的最大特点在于它是超文本文档,即网页中包含超链接(hyperlink),网页通过超链接相互链接,形成网状的信息空间。 5. 互联网的应用 ① 搜索引擎 ② 电子邮件 ③ 即时通信 ④ 电子政务 ⑤ 电子商务
⑥ 网络新闻和博客 ⑦ 网络音乐和网络影视 ⑧ 网络游戏
第二章 80x86微处理与汇编语言程序设计 2.1. 8086/8088微处理器 2.1.1内部逻辑结构
8086/8088微处理器由两个相互独立且互相配合的部件组成,它们分别称为执行部件(Execution Unit,EU)和总线接口部件(bus interface unit,BIU)。 执行部件负责指令的执行并产生相应的控制信号,主要包括:
①通过EU控制部件将指令队列中取出的指令翻译成EU可直接执行的微操作码。 ②根据指令译码所得到的微操作码,向算术逻辑部件(ALU)及相关寄存器发出控制信号,完成指令的执行,包括数据传送、指令转移以及算术和逻辑运算等,并将运算时产生的状态记录在标志寄存器中。
③根据有关寄存器中的数据以及指令中提供的位偏移量计算有效地址(即偏移地址),然后送总线接口部件产生物理地址。
总线接口部件负责CPU内部与存储器或I/O接口之间的信息传送。 2.1.2 寄存器组
8086/8088CPU的寄存器由3组16位寄存器以及一个指令指针寄存器和一个标志寄
存器所组成。
1.通用寄存器AX、BX、CX和DX
AX(accumulator,累加器):它是执行算术运算的主要寄存器,使用该寄存器往往比其他3个寄存器有更短的目标码和更快的运行速度。此外,AX还被指定作为十进制调整、乘除法以及I/O等操作的专用寄存器。
BX(base,基址寄存器):用于存放数据段内存空间的基础地址。 CX(Count,计数寄存器):用于循环操作和数据串处理的计数控制。
DX(data,数据寄存器):用于乘除法运算时扩展累加器及I/O操作时提供端口地址。
2.指针和变址寄存器SP、BP、SI和DI
SP(stack pointer,堆栈指针):用来提供堆栈顶的偏移地址。
BP(base pointer,基址指针):用来提供堆栈中某指定单元的偏移地址作为基地址使用。 SI(source index,源变址寄存器):串操作时提供DS段中指定单元的偏移地址。 DI(destination indes,目标变址寄存器):串操作时提供ES段中指定单元的偏移地址。
3.段寄存器CS、DS、SS、ES
CS(code segment,代码段段寄存器):用来存放代码段起始地址的高16位。 DS(data segment,数据段寄存器):用来存放数据段起始地址的高16位。 SS(stack segment,堆栈段寄存器):用来存放堆栈段起始地址的高16位。 ES(extra segment,附加段寄存器):用来存放附加段起始地址的高16位。 4.指令指针寄存器IP
这是一个16位的控制寄存器,用来存放CS段中指令的偏移地址。在程序执行过程中,该寄器指向下一条要取的指令,从而可以控制程序的执行流程。 5.标志寄存器flags
flags是一个16位的寄存器,其中CF、AF、SF、PF、OF和ZF为状态标志,DF、IF和TF为控制标志。 2.1.3 存储器管理
8086有20位地址线,因此可以存储的最大内存空间为1MB(220B=1 MB),其范围是00000H~FFFFFH。CPU内部可编址寄存器只有16位,16位寄存器只能寻址64KB。为了能对1 MB内存空间寻址,8086引入了分段技术。所谓分段技术,就是把1 MB的存储空间分成若干个逻辑段,每一个逻辑段的容量小于或等于64 KB,段内地址连续,段与段之间相互独立,可以分别寻址,每个段由软件赋给一个起始地址,应能被16整除 ,也就是说它的20位地址中低4位应该为0,高16位作为“段基址”,存放在段寄存器CS、DS、SS或ES中,段内偏移地址则由IP、SP、BX、BP、SI、DI以及指令中所提供的位移量来确定。
物理地址是一个唯一的、用20位二进制数表示的地址,CPU与存储器交换数据时所使用的地址就是物理地址;而逻辑地址则是由段地址和偏移地址两部分组成的,把逻辑地址转换为物理地址,只要将段地址寄存器中的内容左移4位,再加上偏移地址,就可以得到所需要的物理地址,例如,段地址为0045H,偏移地址为FFFEH,则合成后的20位物理地址就是00450H+FFFEH=1044EH。 2.1.4 中断管理 1.中断和中断源
中断是一种使CPU挂起正在执行的程序,转去处理特殊事件的操作。引起中断的
原因或来源称为中断源(imterrupt source),根据中断请求来自CPU外部或内部,可以将其分为两大类。 (1)外部中断
一切非CPU内部原因产生的中断称为外部中断。外部中断又分为非屏蔽中断(non-maskable interrupt,NMI)和可屏蔽中断(maskable interrupt)。在CPU标志寄存器中,有一个中断允许标志位IF控制可屏蔽中断是否被响应。当IF=1时,表示允许中断;而当IF=0时,表示禁止中断。对于非屏蔽中断来说,IF不产生任何影响,无论为1或为0,非屏蔽中断一定被CPU接收。
通常,人们把比较重要且影响全局的中断源(如掉电等)安排为非屏蔽中断,直接从CPU的NMI引脚输入;而把一般的输入/输出设备引起的中断安排为可屏蔽中断,通过专用的中断控制芯片8259A连接到CPU的INTR引脚。 (2)内部中断
一切由CPU内部引起的中断称为内部中断,如除法运算出错中断、单步中断、溢出中断(INTO)以及由用户定义的各种软件中断INTn等。 2.中断向量表及中断处理
8086/8088微处理器可以处理256种不同类型的中断,每一个中断都有唯一的编号,称之为中断类型号。显然不同类型的中断要求的中断处理程序是不相同的,因而为了使系统响应中断后能转入相应的中断处理程序,系统建立了一张中断类型号与中断处理程序入口地址相联系的中断向量表,表中的中断处理程序入口地址就是指向该程序的指针(也可能指向一组数据,如中断类型号1 EH指向软盘参数),因而称它为中断向量,而中断类型号则通常为中断向量号。 该中断向量表占用1 KB内存空间,固定存放在内存的最低端00000~003FFH地址空间。
2.2 80x86及Pentium4微处理器 2.2.1 概述
80286是为多用户和多任务环境所设计的8086微处理器的改进型号,存储管理系统在原实模式基础上增加了保护模式,可对16 MB物理存储器和1 GB虚拟存储器寻址。此外,还使7种类型的指令得到了增强与扩充。
80486是80386的增强型号,它可在一个时钟周期内完成一条简单指令的执行。此外它还包括cache存储器和一个增强的80387协处理器(80486 DX4有16 KB的高速cache),首次吸取了RISC技术,采用突发周期(burst cycle)与内存进行高速数据传送,因而其执行速度比80836提高了2~4倍。 2.2.2 Pentium4微处理器的逻辑结构与工作原理 1.超标量结构
Pentium4微处理器芯片内含有9个可以同时工作的运算部件,因而称之为超标量(superscalar)结构。 2.指令流水线
CPU的主要任务就是执行指令,为了提高指令的执行效率,Pentium微处理器采用了流水线工作方式。每条指令流水线可以有多条指令同时执行,它们分别处于不同的执行阶段,如取指、译码、读数、执行、存结果等。 (1)采用RISC内核
RISC(reduced instruction set computer,精简指令集计算机)指令系统的最大特点就是大多数指令长度相同,并且能在单个时钟周期内完成,因而特别适合于高速流水线作业。
早期的8086/8088、80386等都属于CISC(complex instruction setcomputer,复杂指令计算机)。Intel公司人80486开始,已经注重RISC技术, (2)在CPU芯片内集成高速缓存 高速缓存(cache)是为了解决CPU内核与主存的速度差异而设置的,其原理是CPU在一段时间内所执行和处理的数据往往集中于存储器的局部范围内,因而把这一段时间可能被频繁访问的指令和数据预先成批从内存读入cache中,以减少CPU访问内存的机会,从而大大提高了读取指令和数据的传输速度。
Pentium微处理器开始就已经将高速缓存分离为指令cache和数据cache。 (3)采用双独立总线
所谓双独立总线(dual independent bus,DIB),就是除了原有的总线接口部件与系统主存相连的前端总线(front side bus,FSB)外,新增了一条连接L2 cache的后端总线(back side bus,BSB),该总线速度较高,可以达到全主频。例如,Pentium 4微处理器主频为1.5 GHz,每个时钟钟周期内可传输4次数据。 (4)采用了先进的动态执行技术 ①深度分支预测 ②动态数据流分析 ③推测执行
3.NetBurst微体系结构
NetBurst微结构的核心由前端流水线(front end pipeline)、乱序执行内核(out of order execution core)以及结果输出部件(retirement unit)3个部分组成。 (1)前端流水线
前端流水线由预取/译码和ETC(执行跟踪cache)/微代码ROM两个部件组成,其功能是按程序确定的执行顺序向乱序执行内核提供指令。 (2)乱序执行内核
乱序执行内核是一个很深的推测执行引擎,其中含有一个容量相当大的指令池,可以允许126条指令的微操作在指令流水线上同时进行处理(Pentium Ⅲ微处理采用的P6微结构中只能提供40条指令的微操作)。这样,一旦某些指令由于执行条件不满足而陷入停顿时,执行单元就可以从指令池中选择其他可供执行的指令,从而实现乱序执行目的 (3)结果输出部件
结果输出部件一方面检测已经执行完的指令,按源程序中确定的指令执行顺序有序地输出结果,另一方面跟踪分支(转移)的执行,把更新了的转移目标送BTB,以支持转移预测功能的实现。 4.超线程技术
超线程技术(Hyper-Threading,HT)是为了减少NetBurst微结构中执行部件的闲置时间,利用多线程设计思想使单个物理CPU并发执行两个以上的代码流(称为线程)。
2.2.3 寄存器组
Pentium4 微处理器实际上是8086/8088内部寄存器的增强与扩充,不同的只是寄存器从16位扩展到32位(段寄存器仍为16位),并且增加了两个段寄存器FS和CS。 1.通用寄存器
通用寄存器包括EAX、EBX、ECX、EDX和ESP、EBP、EDI和ESI。 2.段寄存器
Pentium共有6个段寄存器,即CS、DS、SS、ES以及FS和GS,其中FS和GS是新增设
的两上附加段寄存器。这些段寄存器仍然是16位,在保护模式下段寄存器中不是直接存放段地址,而是装入段选择子。 3.指令指针寄存器
Pentium微处器的指令指针寄存器EIP用于访问代码段中的下一条指令,当微处理器工作在实模式时,该寄存器为IP(16位),而当386以上的微处理器工作于保护模式时,该寄存器为EIP(32位)。 4.标志寄存器
标志寄存器EFLAGS用于指示微处理器的状态并控制其操作。 (1)程序不可见的寄存器
这类寄存器包括描述符cache、局部描述表寄存器LDTR、任务寄存器TR、全局描述符表寄存器GDTR和中断描述符表寄存器IDTR。 2.2.4 工作模式与存储器管理
Pentium处理器包括3种工作模式,即实地址模式、保护虚地址模式、虚拟8086模式。
1.实地址模式
处理器加电或复位时都处于这一工作模式。
①采用分段方式,每段最大地址空间为64 KB,物理地址由段地址乘以16加上偏移地址构成,其段地址位于段寄存器中,确定一个64 KB存储器段的起始地址,偏移地址可用来选择段内的任何一个存储单元。 ②在00000H~003FFH内存区存放256级中断向量表。 ③应用程序不分特权级(相当于特权级0)。
实地址模式下工作的高档微处理器仍然只相当于一个快速的8086/8088。 2.保护虚地址模式
保护模式是80286以上的高档微处理器最常用的工作模式。系统启动后总是先进入实地址模式,对系统进行初始化,然后才转入保护模式进行操作。
在保护模式下,存储器空间采用逻辑地址、线性地址和物理地址来进行描述。地址变换必须分两步进行:第一步将逻辑地址转换为线性地址,第二步再将线性地址转换为物理地址。
1)从逻辑地址到线性地址的转换 在保护模式下,逻辑地址由16位段寄存器中的代码与32位偏移地址组成。在保护模式下段基址不再像实地址模式那样直接由段寄存器提供,而是在段寄存器中装入段选择子(selector),然后通过该选择子间接地到一个描述符表中选择相应的段描述符(descriptor),并从中获得32位的段基址。这样,就可以将32位段基址与32位的偏移地址相加得到所谓的线性地址。 (1)选择子
选择子是装入段寄存器CS~FS、局部描述符表寄存器LDTR或任务寄存器TR中,对全局描述符表或局部描述符表进行检索的一种数据结构。 (2)描述符
描述符也是一种数据结构,利用该数据结构可以提供有关段的属性、大小、位置以及控制和状态信息。 一个段描述符占用8个字节,其中包括32位的段基址、20位的段限界和8位访问权限以及特片位G、D和AVL。
(3)描述符表和描述符表寄存器
Pentium4微处理器中有3种类型的描述符表,即全局描述表GDT、局部描述符表