认识保护模式之汇编复习1

在认识保护模式之前,我认为有必要回顾一下一些汇编的基础知识

AX ,BX,CX,DX 通用寄存器

CS 存放要被cpu执行的代码的基地址 code segment    段寄存器
IP
别名为指令指针寄存器,存放段地址的偏移地址
CS*16+IP 
就是cpu要执行的指令  计算机总是指向CS:IP所代表的地址,并将其作为代码执行。

Debugdoswindows都提供的实模式程序调试工具,可以查看cpu各种寄存器中的内容和机器码级跟踪程序的运行 

r:查看和更改各个寄存器的内容

d:使用命令查看内存中的内容

u:将内存中的机器代码转为相应的汇编代码

a:以汇编代码的形式在内存中写入指令

t::单步执行

内存可以划分为:

数据段:全局变量
代码段:代码
堆栈段:局部变量

数据段:

CPU要读写一个内存单元时,必须首先给出内存单元的地址,在8086PC中内存地址由段地址与偏移地址共同组成。8086CPU中有一个DS寄存器存放内存地址的段地址。

mov bx,1000h

mov ds,bx   //8086由于硬件上的设计,不允许直接将数据送到段寄存器,比如 mov ds,1000h是非法操作 

mov al,[0]

[....]表示一个内存单元,[....]中的0代表内存单元的偏移地址,段地址默认放在ds中。

代码段:

CS:IP所指向的位置为当前CPU指执行到的位置

CPU工作过程:

(1)从CS:IP指向的内存单元中读取指令,读取的指令进入指令缓冲区

(2)IP指向下一条指令

(3)执行指令,转移至(1)

堆栈段:

现代CPU提供了栈的设计,即把一段内存当做栈来使用,8086CPU提供入栈与出栈指令,由PUSH和POP指令完成,入栈与出栈都是以字为单位进行。栈底一般为高地址,栈顶为低地址。

8086CPU中有SS和SP两个寄存器,SS为堆栈寄存器,也是一个段寄存器,SP中存放偏移地址。在任意时刻,SS:SP指向栈顶的元素。PUSH和POP指令执行时,CPU

从SS和SP中得到栈顶的元素。

比如:  PUSH ax

首先,sp=sp-2

将ax中的值存放进SS:SP指向的地方

相应的:POP ax

先把SS:SP指向的值送入ax

SP=SP+2



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值