小编Μετ*_*ετα的帖子

为什么在执行 mov eax,0FFFFFFFFh 后,寄存器 eax 在调试器中显示为 0xccffffffh

我的初学者书籍“汇编语言一步一步”中的说明有一行:mov eax,0FFFFFFFFh。在将程序重新加载到调试器“Insight”中后,eax的值从0x0开始,但在行之后mov eax, 0FFFFFFFFh eax变为 0xccffffff,如 Insight 中的寄存器窗口所述。

作为测试,我尝试过mov eax,02Dh,它变成了 0xcc00002d。

我研究了 0xcc 并找到了有关 INT3 的信息:https ://en.wikipedia.org/wiki/INT_(x86_instruction)#INT3 ,其中达到了我的理解极限。我所了解的是 INT3 的操作码是 0xCC,它与调试有关。我正在调试,但这对 0xFFFFFFFF 的前两个 0xFFH 是不礼貌的,因此我肯定希望 NASM 不会允许这样。

不确定是不是因为我正在运行 x86-64 或特定于我的处理器的东西。我的操作系统是 Linux。

沙盒.asm

section .data
section .text

  global _start

_start:
    nop

    mov eax,0FFFFFFFFh
    mov ebx,02Dh
    ; !Reader - Important!
    ; !Examining values from this point! 

    ; Not reading values past this point
    dec ebx
    inc eax

    nop

section .bss
Run Code Online (Sandbox Code Playgroud)

生成文件 …

x86 assembly gdb insight

5
推荐指数
1
解决办法
366
查看次数

标签 统计

assembly ×1

gdb ×1

insight ×1

x86 ×1