寄存器部分——CPU内部工作原理

寄存器部分——CPU内部工作原理

寄存器基础

8086CPU有14个寄存器:
AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,所有寄存器都是16位,可以存放两个字节。

AX可以分为AH和AL。高八位和低八位;BX、CX和DX与AX相同。

字占两个字节,存在一个16位寄存器中。

地址加法器合成物理地址方法:物理地址=段地址*16+偏移地址
段寄存器提供段地址
四个段寄存器:CS、DS、SS、ES
CS为代码段寄存器
IP为指令指针寄存器

DS寄存器存储要访问数据的段地址
不能够直接对DS寄存器进行赋值
mov ds, ax

SS段寄存器 存放栈顶的段地址
SP 存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素

8086CPU工作过程:

从CS:IP指向内存单元读取指令,读取指令到指令缓存器。
IP=IP+读取指令的长度,从而指向下一条指令。
当PC机启动时,自动将CS设置为FFFFH,将IP设置为0000H。
对cs、ip数据进行修改用-r 寄存器 。
jmp 转移指令
jmp 段地址:偏移地址

debug命令

-r 查看或修改寄存器值
-d 查看内存中的命令
-t 执行一条机器指令
-e 改写内存中的内容
-a 以汇编指令的格式载内存中写入一条机器指令
-u 将内存中机器指令翻译为汇编指令
-g 程序执行到指定地址(断点)
-q 退出程序

入栈原理:
push ax

扫描二维码关注公众号,回复: 13376293 查看本文章
  1. sp=sp-2;
  2. ax内容送入ss:sp指向的内存单元处
    出栈原理与入栈相同。

push、pop可以直接对段寄存器进行操作

栈顶越界问题
无法解决

设置栈
mov ax, 1000H
mov ss, ax
mov sp, 0010H

猜你喜欢

转载自blog.csdn.net/qq_44157349/article/details/112721937
今日推荐