2.9-2.12段寄存器和cs:ip

2023-11-08

段寄存器有四类:cs,ds,ss,es.
其中,cs是代码寄存器,它指向的代码段是一组地址连续,起始地址为16的倍数的内存单元。这个代码段可以存储长度为N(N<=64KB)的一组代码。
而与之相关联的是IP(指令指针寄存器),
步骤如下:
(1)cs:ip在地址加法中获得内存地址(csX16+ip),然后将通过输入输出控制电路和20位地址总线获得内存地址,将指令通过数据总线和输入输出控制电路放到指令缓冲区,
(2)ip=ip+指令长度,指向下一条指令
(3)执行指令缓冲器中的指令,再返回步骤(1)

如下图所示
在这里插入图片描述

在跳转指令时,用jmp ,
如:jmp ax,相当于mov ip,ax。
即用ax的值赋给ip,从ax开始执行指令。

看看问题2.3,执行序列,初始化cs=2000H,ip=0000H
在这里插入图片描述
分析下:

指令必然执行从cs:ip所指向的地址。
初始化时:cs=2000H,ip=0000H,那么地址是cs*16+ip=20000H,执行mov ax,6622H。结果是ax=6622H,cs=2000H,ip=0003H.
继续执行20003H, jmp 1000:3,此时改变cs=1000H,ip=0003H
继续执行10003H,mov ax,0000,结果是ax=0000H,cs=1000H,ip=0006H,
继续执行10006H,mov bx,ax,结果是ax =0000H,bx=0000H,cs=1000H,ip=0008H
继续执行10008H, jmp bx,结果是cs=1000H,ip=0000H
继续执行10000H,mov ax,0123H结果是ax=0123H,cs=1000H,ip= 0003h
继续执行10003h,mov ax,0000,结果是ax=0000H,cs=1000H,ip=0006H,

开始循环了.

看看答案,OK

在这里插入图片描述

我认为每次执行指令都会修改ip的值,由于第二步ax=0,所以在第三步跳转到ax是,ip=0.

运行下看看
在这里插入图片描述

ok

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2.9-2.12段寄存器和cs:ip 的相关文章

  • 汇编王爽老师实验12,显示0号除法溢出中断

    整个程序不能脱离dosbox 在dosbox中触发中断 本程序的思路是 先编写0号中断子程序 在主程序中运用传送方法把中断子程序传送至内存段 1设置传送的起点2设置传送的终点3设置传送的代码段长度4设置传送的方向5rep 启动传送6修正中断
  • Intel 80X86寄存器分类介绍

    开始读Linux内核相关书籍时 在书店里碰到一个计算机专业科班出身的朋友 向他请教时 他认为学习Linux内核不需要汇编和计算机体系结构等相关的知识 可是结合到现在的学习经历 我却越来越觉得为了搞清楚Linux内核相关设计和运行原理 自己那
  • 计算机组成原理课程设计:运算器、微程序控制器、两个数大小比较

    实验一 运算器 实验二 微程序控制器 实验三 两个数比较大小 机器程序如下 P 00 20 IN R0 P 01 00 P 02 21 IN R1 P 03 00 P 04 84 SUB R0 R1 P 05 F0 BZC P 06 0C
  • 2.9-2.12段寄存器和cs:ip

    段寄存器有四类 cs ds ss es 其中 cs是代码寄存器 它指向的代码段是一组地址连续 起始地址为16的倍数的内存单元 这个代码段可以存储长度为N N lt 64KB 的一组代码 而与之相关联的是IP 指令指针寄存器 步骤如下 1 c
  • 王爽汇编语言课程设计1

    一 实验要求 在屏幕输出实验七中的数据 二 设计思路 1 将实验七的程序编写成一个子过程finishing 在主程序中调用 可以获得实验七种指定格式的table段数据 设置es bx指向table段中第一行 2 创建一个数据缓存区buffe
  • LCD 驱动

    LCD的型号是 CM162 4 有U1 U2 外形尺寸 L W H mm 80 36 12 点数 mm 5 8 内藏控制器 SPLC 780 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 GND VDD VO
  • ARM下高效C编程

    通过一定的风格来编写 C 程序 可以帮助 C 编译器生成执行速度更快的 ARM 代码 下面就是一些与性能相关的关键点 1 对局部变量 函数参数和返回值要使用 signed 和 unsigned int 类型 这样可以避免类型转换 而且可高效
  • X64处理器架构

    X64处理器架构 翻译的windbg帮助文档 X64处理器架构 X64 架构是一个向后兼容的扩展的 x86 提供了和 x86 相同的 32 位模式和一个新的 64 位模式 术语 x64 包括 AMD 64 和 Intel64 他们的指令集基
  • 汇编语法

    1 通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP 它 们 的低 16 位就是 8086 的 AX BX CX DX SI DI SP BP 它们的含义如下 EAX 累加器 EBX 基址寄存器 Base ECX
  • ARM 汇编基础知识

    1 为什么学习汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编 因为 Cortex A 芯片一 上电 SP 指针还没初始化 C 环境还没准备好 所以肯定不能运行 C 代码 必须先用汇编语言设置好 C 环境 比如
  • 函数的引用返回

    引用是给变量取一个别名 所以引用传递会直接进行变量本身的传递 它的最大好处是可以把别处对变量的改变保留下来 第二好处是它提高了性能 如果函数的返回值是一个引用 那么 如上文所说 它会节约一组构造 赋值和析构过程 但是 函数返回引用往往会带来
  • C语言与汇编——宏定义,头文件重复包含,内存申请和释放

    c文件 gt 替换 gt 编译 gt 链接 gt exe文件 typedef 只能给变量类型起别名 而 define可以给任何东西起别名 头文件重复包含问题 pragma once也能避免同一个头文件被包含 include 多次 一般由编译
  • IDA使用之旅(一)用IDA查看最简单的sys文件

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 本系列内容是我根据 知其所以然论坛 博主录制的学习视频 做的笔记 使用的IDA软件版本 IDA pro 5 5 参考下载地址 http w
  • 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考 http blog sina com cn s blog 171daf8e00102xclx html 汇编语言实验答案 王爽 https wenku baidu com view a1cd7c6c1fb91a37f111f18583
  • SIMD优化之ARM纯汇编开发

    ARM纯汇编开发 注 这篇文章是两年前写的 现在更新到CSDN 当时认知不足 其中可能有不少错误 敬请行家指正 为什么要用纯汇编 开发效率高 这里可能让很多人大跌眼镜了 纯汇编开发效率高 首先 这个是有限定条件的 需要反复调优的重度运算场景
  • x86寄存器

    通用寄存器 GPR寄存器 AX Accumulator 累加寄存器 也叫累加器 BX Base 基地址寄存器 CX Count 计数器寄存器 DX Data 数据寄存器 指针寄存器 SP Stack Pointer 堆栈指针寄存器 BP B
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代
  • [原创]C++98升级到C++20的复习旅途-从汇编及逆向角度去分析“constexpr“关键字

    简介 常用网名 猪头三 出生日期 1981 XX XX QQ 643439947 个人网站 80x86汇编小站 https www x86asm org 编程生涯 2001年 至今 共22年 职业生涯 20年 开发语言 C C 80x86A
  • DOSBOX 快捷键及 MS-DOS 命令

    1 全屏 退出全屏 alt enter 2 释放鼠标 ctrl F10 3 exit 退出DOSBOX 4 dir 显示目录内容 可选参数 w 只显示文件名 P 显示部分内容 exe 筛选出可执行文件 5 cd 进入目录 cd 退回上一级目
  • 【go语言】AST抽象语法树详解&实践之扫描代码生成错误码文档

    背景 为了能识别出代码中抛出错误码的地址和具体的错误码值 再根据错误码文件获取到错误码的具体值和注释 方便后续的排错 这里使用AST进行语法分析获取到代码中的目标对象 一 编译过程 在开始解析代码之前先补充了解一下编译过程 编译过程是将高级

随机推荐

  • BIO、NIO、AIO 有什么区别?

    BIO NIO AIO 有什么区别 BIO 线程发起IO请求 不管内核是否准备好IO操作 从发起请求起 线程一直阻塞 直到操作完成 NIO 线程发起IO请求 立即返回 内核在做好IO操作的准备之后 通过调用注册的回调函数通知线程做IO操作
  • www.wljx.net/forum.php,齐博CMS:主页被黑,不知漏洞在哪?

    用的是PHP168 5 0和PHPWind Forums v6 3 2的高深度整合版本 今天早上发现主页被换了 好在能进后台 能ftp 换回自己的主页 仔细检查 在 cache 文件夹多了一个yf php文件 里面代码如下 请帮忙看看 ad
  • 理解GAN对抗神经网络的损失函数和训练过程

    GAN最不好理解的就是Loss函数的定义和训练过程 这里用一段代码来辅助理解 就能明白到底是怎么回事 其实GAN的损失函数并没有特殊之处 就是常用的binary crossentropy 关键在于训练过程中存在两个神经网络和两个损失函数 n
  • C++的6个缺省函数

    一 在C 中默认产生6个类成员函数 即缺省函数 它们分别是 1 缺省构造函数 2 缺省拷贝构造函数 3 缺省析构函数 4 缺省赋值运算符 5 缺省取址运算符 6 缺省取地址运算符 二 const对于空类 编译器不会生成任何的成员函数 只会生
  • Git将本地项目推送到远程仓库

    第一步 我们需要在自己电脑中创建一个空白文件夹 这个功能就是创建一个本地的版本库 第二步 进入test文件夹 在根部执行Git Bash Here 第三步 通过命令git init把这个文件夹变成Git可管理的仓库 这时你会发现TEST里面
  • react 16新特性介绍

    目录 React v16 0 2017 年 9 月 render 支持返回数组和字符串 错误边界 componentDidCatch Fiber React v16 2 2017 年 11 月 Fragment React v16 3 20
  • VMware NSX 4.0安装、配置和升级实战

    本文通过一个Vmware NSX 4的安装配置实例 扼要说明了一个典型的NSX系统配置 升级过程需要注意的正确步骤 并列出了作者在学习过程中踩过的坑 为同行绕过提供借鉴 1 系统软硬件环境说明 本安装实例 使用了3台Dell PowerEd
  • 【k8s基础篇】k8s scheme1 之内外部版本

    参考 K8s源码分析 3 Resource Version 内外部版本 1 简介 众所周知 在 kubernetes 中所有的 resource 都是基于 group 分组的 例如 apps group 中定义了我们熟悉并常用的 deplo
  • 综合实验(续)

    AdvancedInheritance 描述 不同的动物既有共性也有个性 鸟类会飞 鱼会游泳 请设计类的层次结构进行表示 并通过以下测试 int main Animal animal string type color bool Ostei
  • PuTTY 中文教程 作者:柴锋 2006年11月

    http chaifeng com blog 2007 06 putty 200611 html
  • Regionserver频繁挂掉故障处理实践

    近期腾讯云的一家大客户频繁出现HBase regionserver 挂掉 影响业务正常使用 通过调整堆栈大小 gc优化 超时时间等都无法解决该问题 经过细致并综合分析hbase regionserver hbase master以及 zoo
  • vue项目打包和部署?

    vue项目打包和部署 1 执行打包命令 npm run build 打包过程 看到上图则代表已打包完成 此时项目中会生成dist目录 dist目录中有static目录和index html 2 打包完成后 此时直接用浏览器打开index h
  • 每日一题:Alice的德州扑克

    Alice的德州扑克 题目 Daimayuan Online Judge 从最大的牌开始判断 如果满足直接输出 return 0 否则就接着判断 一层一层往下判断 AC代码 include
  • win10添加环境变量后没用_今天告诉你Win10系统配置环境变量未生效的完全解决教程...

    有网友用win10系统的时候遇到过Win10系统配置环境变量未生效的问题 不知道大家是不是也遇到过 想必我们大家以后也可能会遇到Win10系统配置环境变量未生效的情况 那能不能解决呢 肯定时可以解决Win10系统配置环境变量未生效的问题 小
  • DDOS攻击

    一 DOS VS DDOS Dos是拒绝服务攻击 而DDOS Distribution Denial of service 是分布式拒绝服务攻击 Dos与DDOS都是攻击目标服务器 网络服务的一种手段 区别 DOS是利用自己的计算机攻击目标
  • 华为android9手机短信不提醒设置,华为手机微信不提醒怎么办 华为收不到微信提示信息多种解决方法...

    到底是哪里出了问题呢 捣鼓了半天 宝宝终于发现了 原来微信收不到消息竟是因为设置有误 有同遭遇的亲们看这里吧 快快get新技能吧 华为收不到微信提示信息多种解决方法 请确认以下事项 确认已开启通知功能 a 开启微信应用内部的通知功能 我 g
  • Spring——动态代理

    动态代理 理解 基于反射机制 掌握程度 1 什么是动态代理 使用jdk的反射机制 创建对象的能力 创建的是代理类的对象 而不用你创建类文件 不用谢java文件 动态 在程序执行时 调用JDK提供的方法才能创建代理类的对象 jdk动态代理 必
  • 如果你是以下几类VR程序员,别浪费青春在 Vulkan 上了

    如果你是以下几类VR程序员 别浪费青春在 Vulkan 上了 编码之妙 2016 08 28 09 01 如果你属于以下几类人 那么别浪费时间在 Vulkan 上了 国内名牌大学的大学生 Vulkan 性价比极低 比精通 C 的性价比还低
  • 区块链加密算法简述

    1 简述 加密简单而言就是通过一种算法将明文信息转换成密文信息 信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程 根据加解密的密钥是否相同 算法可以分为对称加密 非对称加密和对称加密和非对称加密的结合 2 对称加密 对称加密顾
  • 2.9-2.12段寄存器和cs:ip

    段寄存器有四类 cs ds ss es 其中 cs是代码寄存器 它指向的代码段是一组地址连续 起始地址为16的倍数的内存单元 这个代码段可以存储长度为N N lt 64KB 的一组代码 而与之相关联的是IP 指令指针寄存器 步骤如下 1 c