8086中的堆栈段和堆栈指针

2023-12-15

我对堆栈段(ss)和堆栈指针(sp)寄存器有点困惑。 当堆栈为空时,sp值等于ss值吗? 我读到,当我们将一个字(2字节)推入堆栈时,sp会减2,如果第一个语句为真(sp=ss),那么我可以说,如果堆栈不为空,堆栈指针的值总是较小或等于堆栈段的值是这样的吗?? 如果我们影响 sp 的值使其大于 ss 会发生什么? IE: 移动SS,200小时 移动SP,400小时 移动斧头,1010h 推斧

请纠正任何错误,提前致谢


No, ss是一个段寄存器,就像其他寄存器一样,例如cs or ds。它们按照通常的实模式规则参与形成物理地址:address = 16 * segment + offset,堆栈情况下的偏移量来自哪里sp。因此,压入堆栈的最后一项具有地址16 * ss + sp。你不知道堆栈何时为空,除非你有a priori堆栈末尾的知识以及数值ss相比sp没有任何意义。

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

8086中的堆栈段和堆栈指针 的相关文章

  • Nasm 打印到下一行

    我用 nasm Assembly 编写了以下程序 section text global start start Input variables mov edx inLen mov ecx inMsg mov ebx 1 mov eax 4
  • 寄存器寻址模式与直接寻址模式

    我在试卷中遇到过这个问题 它指出 哪种给定的寻址模式更快 为什么 寄存器寻址方式 直接寻址方式 现在根据我的说法 寄存器寻址模式应该更快 因为寄存器是计算机中最快的存储位置 这是正确答案吗 请帮忙 谢谢 两种寻址模式之间的区别是 地址的来源
  • 从 NASM 调用 C 函数 _printf 会导致分段错误

    我一直在尝试使用 NASM 在 Mac OS 和 Windows 上学习 64 位汇编 我的代码是 extern printf section data msg db Hello World 10 0 section text global
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 使用 (float&)int 进行类型双关可以正常工作,(float const&)int 会像 (float)int 一样转换吗?

    VS2019 发布 x86 template
  • 从 exe 文件中获取汇编级代码?

    我当时正在做linux汇编编程 在过去的几天里我已经转而学习windows汇编编程 我在用ml作为我的汇编器和golink作为我的链接器 我有我的汇编代码并已获得我的exe从中 现在我需要取回它的十六进制 xff xab x55等等 在li
  • “mov (%ebx,%eax,4),%eax”如何工作? [复制]

    这个问题在这里已经有答案了 一直在从事装配作业 并且在很大程度上我对装配非常了解 或者至少对于这项任务来说足够好 但这个 mov 的声明让我很困惑 如果有人能解释这个 mov 语句如何操作寄存器值 我将非常感激 mov ebx eax 4
  • 使用 NEON 优化 Cortex-A8 颜色转换

    我目前正在执行颜色转换例程 以便从 YUY2 转换为 NV12 我有一个相当快的函数 但没有我预期的那么快 主要是由于缓存未命中 void convert hd uint8 t orig uint8 t result uint32 t wi
  • Android 堆栈大小

    我如何获取和更改 Android 应用程序的堆栈大小 即使是主线程 主线程堆栈大小是在固件中设置的 无法修改 除非修改您自己手机的固件 正如斯特朗先生指出的那样 对于您分叉的线程 您可以设置自己的堆栈大小
  • CPU寄存器和多任务处理

    我目前正在学习汇编 我很困惑 CPU 寄存器如何与多任务一起工作 所以在多任务系统中 CPU可以随时暂停某个程序的执行并运行另一个程序 那么在这一步中寄存器值是如何保存的呢 寄存器是压入堆栈还是以其他方式 CPU 寄存器如何与多任务一起工作
  • MikeOS 引导加载程序中的堆栈段

    我不明白这段代码 mov ax 07C0h Set up 4K of stack space above buffer add ax 544 8k buffer 512 paragraphs 32 paragraphs loader cli
  • 这个反斜杠在这段汇编代码中起什么作用?

    我不确定这些推线有什么区别 修剪下来来自 Linux 的 x86 entry calling h https github com torvalds linux blob 241e39004581475b2802cd63c111fec43b
  • FreePascal x64 上系统单元函数的汇编调用

    我有一些 Delphi 汇编代码 可以在 Win32 Win64 和 OSX 32 上编译并正常工作 XE2 但是 由于我需要它在 Linux 上工作 所以我一直在考虑编译它的 FPC 版本 到目前为止 Win32 64 Linux32 6
  • 为什么我的代码显示垃圾?

    当我也想打印列表中的每个数字时 我的代码显示垃圾 有什么问题吗 输出应如下所示 给定的数组是 2G 4 PT为什么这是垃圾总数是 7 Code ASSUME CS CODE DS DATA SS STK ORG 0000H DATA SEG
  • 高效memcspn

    有谁知道 memcspn 函数的有效实现吗 它的行为应该类似于 strcspn 但在内存缓冲区中查找跨度 而不是在以 null 结尾的字符串中查找跨度 目标编译器是 VisualC 谢谢 卢卡 一种近乎最佳的实现 size t memcsp
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • Grub 和进入实模式(低级汇编语言编程)

    我一直在开发一个玩具操作系统 并一直使用 grub 作为我的引导加载程序 最近尝试使用 VGA 时 我发现无法使用硬件中断 我发现这是因为我被 grub 置于保护模式 有人知道如何在不删除 grub 的情况下回到实模式吗 如果您使用 GRU
  • 调用可以是 cdecl 或 stdcall 的函数

    我需要编写调用外部函数的代码 该函数可以是 32 位 Windows 应用程序中的 stdcall 调用或 cdecl 我的代码 调用者 无法提前知道其中的哪一个 现在 如果我尝试从定义为 stdcall 的调用站点调用 cdecl 函数
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI

随机推荐

  • IndexError:使用 for 循环“弹出索引超出范围”

    我该如何解决这个问题IndexError 我尝试使用while循环 但没有任何改变 这是我的代码 它应该检查两个列表的对象的长度 la lb 并从中删除字符串la如果字符串短于lb字符串 反之亦然 另外 如果两个字符串的长度相同 则必须删除
  • 如何防止MSIL运行时注入? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 正如这里所见程序化 MSIL 注入或这里http www codeproject com Articles 463508 NET CLR Injection Modify IL
  • 如何在R闪亮字符串中插入新行

    在闪亮的 我有以下内容 output sequenceText lt renderText showSequence showSequence lt reactive selectedSeqs lt as numeric input seq
  • jQuery“可见”并不适用于所有浏览器,但适用于 Firefox

    我做了一个非常简单的小提琴here 并且可以在不同的浏览器中查看 它仅适用于 Firefox 换句话说 似乎 select tag id option visible 在其他浏览器中不起作用 怎么了 这是一个 jQuery 错误吗 代码是
  • 具有刚性变量的数组

    好吧 我正在做一个问题 其中我使用的函数有一个刚性变量 我想到了使用数组来解决这个问题 所以我想到使用与我创建的函数具有相同刚性变量的数组 但我不知道如何使用刚性变量创建数组 我尝试了以下操作但没有效果 rearrange Int gt a
  • Exec 命令未按预期工作

    我正在尝试从 PHP 脚本启动 CLI 命令 特别是我想使用这个命令convert a png a tif将图像转换为 tiff 当我从 CLI 启动此命令时 它会按预期工作 但如果我使用以下代码从 PHP 脚本启动 它不会在我的文件夹中创
  • Javascript 全局变量没有更新

    我正在制作这个网站 我想从另一个函数更新全局变量 全局变量i初始化为 0 我创建了 2 个函数 第一个用于更新全局变量并通过警报显示新值 第二个函数仅警报更新后的全局变量的新值 现在的问题是 当我调用第一个函数时 它会提醒新的更新值 但是当
  • Wagtail 单元测试:添加子页面将它们转换为基本类型

    尝试为 Wagtail 创建一些单元测试并遇到以下问题 gt gt root FrontPage add root instance FrontPageFactory build gt gt root
  • 使用 LINQ 进行多重排序[重复]

    这个问题在这里已经有答案了 我从一个基本类开始 我想使用 LINQ 在列表中操作它 如下所示 public class FooBar public virtual int Id get set public virtual string F
  • Delphi 7 - 如何使用输入框

    我正在编写一个程序 您必须在输入框中输入密码才能访问该程序的最小功能 但是 如果您单击输入框中的 取消 我的程序会出现错误消息 所以我想知道是否有人知道我如何才能做到这一点 因为通过 Messagedlg 我知道你使用 IF 但是我怎样才能
  • 在 WCF 中实现 JSON-RPC

    我一直在四处寻找 但没有找到解决方案 我想用 WCF 实现一个 JSON RPC 服务器 我找到了这个http jsonrpc2 codeplex com 但它不使用 WCF 我知道如何集成它 有人可以给我一个关于如何将所有东西组合在一起的
  • 区分不同类型的 MIFARE Ultralight

    如何识别不同类型的MIFARE Ultralight标签 在文档中AN10834Ultralight 和 Ultralight C 的不同之处在于 Auth 的答案 这个 验证 是什么 芯片的datasheet中没有对该功能的描述 我注意到
  • AOSP - 错误:覆盖目标 (...) 的命令,先前在 (...) 定义

    我正在尝试为不支持的设备构建 AOSP surnia Moto E2 2015 LTE 我之前解决了很多问题 但现在我遇到了一个无法避免的问题 我看到很多人都有这个问题 但他们只是警告 我能做些什么 或者你能帮我找到 surnia 设备树
  • “char *var[3]”和“char var[3][15]”有什么区别?

    我对以下两种方式感到困惑 char var 3 15 Hello world good bad as known this is for an 2D array char var 3 Hello world good bad and thi
  • GData 静态库:使用 -fno-objc-arc 从 ARC 中排除文件?

    我在使用 ARC 的应用程序中使用 GData 静态库 谷歌的说明说将头文件从库链接到项目目标 问题是 当我这样做时 我会收到编译器错误 因为 GData 库与 ARC 不兼容 谷歌声明 弧兼容性 当库源文件直接编译到使用 ARC 的项目中
  • 如何使用正则表达式(递归?)匹配嵌套函数调用(括号对)

    我正在寻找一个正则表达式 来匹配未知数量的嵌套函数 所以 expression function expression function function expression function function function expr
  • 如何从 URL 中删除 index.php?

    我的 Magento 安装中的所有 URL 都需要包含 index php 例如 http example com index php admin http example com index php customer account lo
  • 我无法在 iOS 中从 Facebook 获取用户数据

    我是 iPhone 编程新手 使用下面的代码我登录 Facebook 并获取数据 但这里的问题是 如果单击 Loginwithfacebook 按钮 Facebook 对话框打开 之后 如果再次单击相同的内容 我将输入 Facebook 的
  • JPA 2.0:在 JPA 2.0 中使用 javax.validation.* 包的异常

    当我尝试使用 hibernate 使用 JPA 进行 bean 验证时 会发生以下异常 Exception in thread main javax persistence PersistenceException PersistenceU
  • 8086中的堆栈段和堆栈指针

    我对堆栈段 ss 和堆栈指针 sp 寄存器有点困惑 当堆栈为空时 sp值等于ss值吗 我读到 当我们将一个字 2字节 推入堆栈时 sp会减2 如果第一个语句为真 sp ss 那么我可以说 如果堆栈不为空 堆栈指针的值总是较小或等于堆栈段的值