- 存储器从功能和连接上分为:随机存储器:用于存放CPU的绝大部分程序和数据;装有BIOS的ROM:用于存储设备的基本输入输出系统;接口卡上的RAM:接口卡需要对大批量输入、输出数据进行暂存时使用,如显存。CPU在操作它们的时候,把它们都当做内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。
- 2.在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行,在加电或复位后CS和IP被设置为CS=FFFFH,IP=0000H,即FFFF0H单元的指令是8086pc机开机后执行的第一条指令。
- 3.8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址,8086不支持将数据直接送入段寄存器,只能有一个寄存器来进行中转。
- 4.8086CPU提供入栈和出栈指令,入栈和出栈操作都是以字为单位进行的,栈地址为SS:SP
- 5.可执行文件由描述信息和程序组成,程序来自于源程序中的汇编指令和定义的数据;描述信息则主要是编译、连接程序对源程序中伪指令进行处理做得到的信息。如CPU从何处开始执行程序,只要在源程序中用“end 标号”指明就可以了。
- 6.寄存器:reg包含:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,disreg包含:ds,ss,cs,es关于bx,si,di和bp:只有这四个寄存器可以用于[]中进行内存单元的寻址只要使用寄存器bp,且没有显性给出段地址,段地址默认在ss中
- 7.绝大多数机器指令都是进行数据处理的指令,处理大致分为:读取、写入、运算。所要处理的数据可以在三个地方:cpu 内部(寄存器)、内存、端口。汇编语言用三个概念来表达数据的位置:立即数、寄存器、段地址+偏移地址。
- 8.汇编指令举例
汇编指令 |
控制CPU完成的操作 |
用高级语言的语法描述 |
mov ax,18 |
将18送入寄存器AX |
AX=18 |
mov ah,78 |
将78送入寄存器AH |
AH=78 |
add ax,8 |
将寄存器AX中的数值加上8 |
AX=AX+8 |
mov ax,bx |
将寄存器BX中的数据送入寄存器AX |
AX=BX |
add ax,bx |
将AX和BX的数值相加,结果存在AX中 |
AX=AX+BX |
9.16位结构的cpu
运算器一次最多可以处理16位的数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
10.8086CPU给出物理地址的方法
11.段地址×16+偏移地址=物理地址的本质含义
CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
12.修改CS、IP的指令
在CPU中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对CPU的控制。CPU从何处执行指令是由CS、IP中的内容决定的,程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。
我们如何改变CS、IP的值呢?显然,8086CPU必须提供相应的指令。我们如何修改AX中的值?可以用mov指令,如mov ax,123将ax中的值设为123,显然,我们也可以用同样的方法设置其他寄存器的值,如mov bx,123,mov cx,123,mov dx,123等。其实,8086CPU大部分寄存器的值,都可以用mov指令来改变,mov指令被称为传送指令。
但是,mov指令不能用于设置CS、IP的值,原因很简单,因为8086CPU没有提供这样的功能。8086CPU为CS、IP提供了另外的指令来 改变它们的值。能够改变CS、IP的内容的指令被统称为转移指令(我们以后会深入研究)。我们现在介绍一个最简单的可以修改CS、IP的指令:jmp指 令。
若想同时修改CS、IP的内容,可用形如"jmp段地址:偏移地址"的指令完成,如
jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
jmp 3:0B16,执行后:CS=0003H,IP=0B16H,CPU将从00B46H处读取指令。
"jmp 段地址:偏移地址"指令的功能为:用指令中给出的段地址修改CS,偏移地址修改IP。
若想仅修改IP的内容,可用形如"jmp 某一合法寄存器"的指令完成,如
jmp ax,指令执行前:ax=1000H,CS=2000H,IP=0003H 指令执行后:ax=1000H,CS=2000H,IP=1000H jmp bx,指令执行前:bx=0B16H,CS=2000H,IP=0003H 指令执行后:bx=0B16H,CS=2000H,IP=0B16H |
14.小结:
段地址在8086CPU的段寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址。
CS存放指令的段地址,IP存放指令的偏移地址。
8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。
8086CPU的工作过程:
从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
IP指向下一条指令;
执行指令。(转到步骤1,重复这个过程)
8086COU提供转移指令修改CS、IP的内容。
原文地址:https://www.cnblogs.com/onioneer/p/9734450.html