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