iOS 逆向工程 app安全 网络安全

8086 寄存器

2018-09-15  本文已影响3人  相关函数

一个典型的CPU是由进行信息处理的运算器,进行信息存储的寄存器,和控制各种器件进行工作的控制器组成。

寄存器是cpu中程序员可以用指令读写的部件,程序员通过改变各种寄存器中的内容实现对cpu的控制。

对于8086cpu来说有14个寄存器,并且都是16位的,每一个可以存放2个字节的数据(1个字节为8bit)

这些寄存器按其用途可分为通用寄存器,指令指针,标志寄存器和段寄存器4类。

通用寄存器:

控制寄存器:

段寄存器:

为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:

其中
cs:ip指向的指令作为下一条需要取出执行的指令
mov ax, [address]是指将ds:address的数据取出赋值给ax寄存器
ss:sp在任意时刻指向栈顶元素

对于数据段,将他的段地址放在ds中,用mov,add,sub指令访问内存单元时,cpu就将我们定义的数据段中的内容当做数据来访问。
对于代码段,将它的段地址放在cs中,将段中第一条指令的偏移地址放在ip中,这样cpu就将执行我们定义的代码段中的指令。
对于栈段,将它的段地址放在ss中,将栈顶单元的偏移地址放在sp中,这样cpu在需要进行栈操作的时候,比如执行push,pop指令等,就将我们定义的栈段当做栈空间来使用。

8086汇编的相关笔记来自 小码哥 MJ iOS底层视频 以及 王爽《汇编语言(第三版)》

上一篇下一篇

猜你喜欢

热点阅读