11.10.05

80×86 CPU结构

Posted in Assemble at 1:46 pm by poorc

第一扯:80×86 CPU结构

�习惯按照那些�的方法�一节节的排版什么的,我个人认为那是浪费时间。当然是方便阅读了。�过我�为别人的时间买�。我的写作全部是一段一个主题的写了。所以如果你想阅读,请费心。
Cpu的组�,关于什么是cpu我就�多少了,相信计算机系的�知�是什么的都在回家的路上了。总的�说cpu由三个主�的部分�组�的。1.算术逻辑部件,主�用�算术和逻辑�算的,少了他就等于IQ30。2.控制逻辑,他负责对全机的控制工作,比如�指令,译�等。3.工作寄存器,说白了就是快速内存,由于集�到了cpu里�速度快,所以昂贵。这三个缺一��,自己看�记�。
看了上�我的介�,大家应该了解关于组�部分的1,2我是扯�出什么淡的,因为1我�是信电系的,2我�知�intel的商业机密。�过3寄存器的地方我还是�以狂扯淡的。寄存器总体分为��和���的,我们�讨论��的,分为三�,分别是通用寄存器,专用寄存器,还有段寄存器。通用的寄存器有太多了,下�我列个表给大家一个直观的效果�看看。

å??ç§°

英文

32ä½?

作用

AX

Accumulator

EAX

作为累加器使用,是算术�算的主�寄存器

BX

Base

EBX

通常作为基�寄存器

CX

Count

ECX

移�指令,循环,串处�指令中的��的计数器

DX

Data

EDX

一般�字长�算DX存放高�,和AX组�,AX存放低�。io�作的时候DX用与存放端�地�

SP

Stacks
pointer

ESP

SPå’ŒSS(堆栈段寄存器)接å?ˆï¼ŒSP指定断顶的å??移地å?€

BP

Base
pointer

EBP

作为段堆栈区的一个基�,和SP接�访问段堆栈中的信�

SI

Source
pointer

ESI

和数�段寄存器(DS),DI��使用�确定数�段中的�一数�存储�元的地�。

DI

Destination
pointer

和数�段寄存器(DS),SI��使用�确定数�段中的�一数�存储�元的地�。SI和DI有自加和自�的功能,方便数�寻�。

专用寄存器包括3个寄存器。SP,IPå’ŒFLAGS。IP(instruction pointer)指令指针寄存器,用æ?¥å­˜æ”¾ä»£ç ?段中的å??移地å?€ï¼Œä»–始终指å?‘下一æ?¡æŒ‡ä»¤çš„首地å?€ã€‚通常和段寄存器CSæ?¥ç¡®å®šä¸‹ä¸€æ?¡æŒ‡ä»¤çš„物ç?†åœ°å?€ã€‚SP(stacks pointer)堆栈指针寄存器,用æ?¥ä¸Žå †æ ˆæ®µå¯„存器è?”å?ˆä½¿ç”¨æ?¥ç¡®å®šæ®µå¯„存器段顶的地å?€ã€‚也就是存放段顶的å??移地å?€ã€‚FLAGS标志寄存器很å?ˆæ„?æ€?,让人ç?†è§£äº†å¾ˆå¤šC语言ä¸?能ç?†è§£çš„东西,比如è¿?算怎么知é?“符å?·ï¼Œè°ƒè¯•时为什么å?¯ä»¥å®žçŽ°æ‰§è¡Œä¸€æ?¡æŒ‡ä»¤å°±æš‚å?œçš„。下é?¢æˆ‘列个表æ?¥çœ‹çœ‹ï¼Œå¾ˆå¥½çŽ©çš„ã€‚

�件�标志:

å??ç§°

英文

作用

溢出标志

Overflow
flag
,of

�作数超出了机器的表示范围称为溢出,此时的of为1,其他为0

符�标志

Sign
flag
,sf

记录�算结果的符�,负为1,正为0

零标志

Zero
flag
,zf

�算结果为0时zf为1,其他为0

进�标志

Carry
flag
,cf

记录�算时从最高�产生的进�值,有效值1

辅助进�标志

Af

记录�算是第三�产生的进�值

奇�标志

Parity
flag
,pf

错误监测

2.控制标志�作为方�标志(direction flag,df),在串处�指令中控制处�信�的方�,当他为1时候,�次�作���寄存器SI和DI都会�少。为0时就是增加了。

3.系统标志�,用于I/O,��蔽中断等控制。讲讲常用的,陷阱标志用于调试时候的�步执行,中断标志,当为1的时候�许cpu�应��蔽中断的请求,�则关闭,I/O特�级,用于在�护模�下控制对I/O地�空间的访问。
下�讨论段寄存器,这个��多次讨论的东西,主�用于存储器寻�的,他包括四个部分,代�段(code segment)数�段(data segment)堆栈段 (stacks segment)还有附加段(extrasegment)。当然在80386之��加入了FS和GS