Complemento a dos en Assembly
neg voltea el signo; los saltos con signo lo leen bien.
; Two's complement: neg flips sign, signed jumps read it right.
global _start
section .text
_start:
mov rax, 25
neg rax ; -25
cmp rax, 0
jl .below ; signed less-than sees the sign
mov rdi, 0
jmp .exit
.below:
neg rax ; back to 25
lea rdi, [rax + rax] ; 50
.exit:
mov rax, 60 ; exit code 50
syscall
Cómo funciona
neg raxcalcula 0 menos el valor.jles el salto menor-que *con signo*.- Los códigos de salida son sin signo — devuelve el 50 positivo.
Palabras clave y builtins usados aquí
globalraxrdisection
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 360
- Tokens
- 46
- Ritmo de tres estrellas
- 55 tpm
Al ritmo de tres estrellas de 55 tokens por minuto, este intento toma unos 50 segundos.
Paso 3 de 3 en Aritmética; paso 6 de 31 en Fundamentos del lenguaje.