Preguntas con la etiqueta [assembly]

Lista assembly preguntas

¿Usar GCC para producir un ensamblaje legible?

11
respuestas
315
votos
218.3k
vistas

Me preguntaba cómo usar GCC en mi archivo fuente C para volcar una versión mnemotécnica del código de máquina para poder ver en qué se estaba compilando mi código. Puedes

Me di cuenta cuando EDX contiene algún valor predeterminado aleatorio como 00401000, y luego uso una instrucción DIV como esta: mov eax,10 mov ebx,5 div ebx provoca un ERROR DE

Mostrar números con DOS

1
respuestas
5
votos
6.7k
vistas

Me encargaron escribir un programa que mostrara la dirección lineal de la PSP de mi programa. Escribí lo siguiente: ORG 256 mov dx,Msg mov ah,09h ;DOS.WriteStringToStandardOutput int 21h mov ax,ds

¿Cuál es el propósito de la instrucción LEA?

0
respuestas
871
votos
900.4k
vistas

Para mí, parece un MOV original. ¿Cuál es su propósito y cuándo debo usarlo?

Supongamos que tengo lo siguiente declarado: section .bss buffer resb 1 Y estas instrucciones siguen en section .text: mov al, 5 ; mov-immediate mov [buffer], al ; store mov bl,

He leído en diferentes lugares que se hace por "razones de rendimiento", pero todavía me pregunto cuáles son los casos particulares en los que esta alineación de 16 bytes mejora

Estoy escribiendo un pequeño sistema operativo, para practicar. Empecé con el gestor de arranque. Quiero crear un pequeño sistema de comando que se ejecute en modo real de 16 bits

Quería escribir algo básico en ensamblaje en Windows. Estoy usando NASM, pero no consigo que nada funcione. ¿Cómo escribo y compilo un programa Hola Mundo sin la ayuda de funciones

Cuando intento comprender el ensamblaje (con la optimización del compilador activada), veo este comportamiento: Un bucle muy básico como este. outside_loop; while (condition) { statements; } A menudo se compila

Estaba buscando la forma más rápida de acceder a popcountgrandes conjuntos de datos. Encontré un efecto muy extraño : cambiar la variable del bucle de unsignedauint64_t hizo que el rendimiento

Tengo una ubicación de memoria que contiene un carácter que quiero comparar con otro carácter (y no está en la parte superior de la pila, por lo que no puedo

Estaba tratando de entender cómo funciona la instrucción de cálculo de direcciones, especialmente con leaqel comando. Luego me confundo cuando veo ejemplos que se utilizan leaqpara realizar cálculos aritméticos. Por

Tengo problemas para comprender la diferencia entre los registros guardados de la persona que llama y de la persona que llama y cuándo usar qué. Estoy usando el MSP430: procedimiento:

¿Cómo se hace esto? Si quiero analizar cómo se compila algo, ¿cómo obtendría el código ensamblador emitido?

Al compilar el siguiente código: global main extern printf, scanf section .data msg: db "Enter a number: ",10,0 format:db "%d",0 section .bss number resb 4 section .text main: mov rdi,