Assembly 这个减法的值是多少?

Assembly 这个减法的值是多少?,assembly,x86,Assembly,X86,如果最初AL由0x00组成,并且被0xc5减去,那么AL的最终值是多少 代码: asm3: 推ebp//基本指针加载(延长) mov ebp,esp//堆栈加载(延长) mov-eax,0xb6/[00b6] xor-al,al这是正确的。从零减去0xC5,结果是二者的补数为0xC5,0x3B: section .data sys_exit: equ 60 section .text global _start _start: nop xor al, al sub al, 0

如果最初
AL
0x00
组成,并且被
0xc5
减去,那么
AL
的最终值是多少

代码:

asm3:
推ebp//基本指针加载(延长)
mov ebp,esp//堆栈加载(延长)
mov-eax,0xb6/[00b6]

xor-al,al这是正确的。从零减去
0xC5
,结果是二者的补数为
0xC5
0x3B

section .data
sys_exit: equ 60

section .text
global _start

_start: nop
    xor al, al
    sub al, 0xC5
    nop            ; al = 0x3B
    mov al, 0xC5
    neg al
    nop            ; al = 0x3B
    mov rax, sys_exit
    xor rdi, rdi 
    syscall

谢谢@拉菲尔。然而,可能的结果是什么?我得到的是
0x3e37
,但它似乎不正确。你能分享你的结果吗?那是不可能的
al
是一个字节。您正在检查
ax
?我期望
eax
的最终值。考虑到
sal
ax上的操作,0x10
不会移动
eax
较高2字节中的值。是
0x00003e37
还是
0xf2003e37
这是根据我的计算,不确定我是否在堆栈上正确地获取了所有3个输入。@JigerJain不清楚您在哪里有这个期望。在字节PTR[ebp+0xf]
之后,您是否希望出现这种情况?
section .data
sys_exit: equ 60

section .text
global _start

_start: nop
    xor al, al
    sub al, 0xC5
    nop            ; al = 0x3B
    mov al, 0xC5
    neg al
    nop            ; al = 0x3B
    mov rax, sys_exit
    xor rdi, rdi 
    syscall