Articles of ensamblaje

¿Cómo ejecutar un progtwig sin un sistema operativo?

¿Cómo se ejecuta un progtwig por sí mismo sin un sistema operativo en ejecución? ¿Puede crear progtwigs de ensamblaje que la computadora puede cargar y ejecutar al inicio, por ejemplo, iniciar la computadora desde una unidad flash y ejecuta el progtwig que está en la CPU?

Asamblea, impresión del número de ASCII

Tengo un problema con mi código de ensamblaje. Quiero imprimir el número almacenado en el registro cx, pero cuando traté de imprimirlo, imprimí el carácter ascii en lugar del número ascii, así que decidí escribir un procedimiento para convertir ascii char en valor ascii. El problema es que cuando bash llamar a ese procedimiento, el […]

¿Por qué no hay un registro que contiene los bytes más altos de EAX?

%AX = (%AH + %AL) Entonces, ¿por qué no %EAX = (%SOME_REGISTER + %AX) para algún registro %SOME_REGISTER ?

¿Cómo funciona $ en NASM, exactamente?

message db “Enter a digit “, 0xA,0xD Length equ $- message ¿Se usa para obtener la longitud de una cuerda? ¿Cómo funciona internamente?

¿Cuál es la diferencia entre MOV y LEA?

Me gustaría saber cuál es la diferencia entre estas instrucciones: MOV AX, [TABLE-ADDR] y LEA AX, [TABLE-ADDR]

¿Cuáles son las mejores secuencias de instrucciones para generar constantes vectoriales sobre la marcha?

“Mejor” significa la menor cantidad de instrucciones (o la menor cantidad de uops, si alguna instrucción decodifica a más de un uop). El tamaño del código de máquina en bytes es un desempate para igual número de ins. La generación constante es, por su propia naturaleza, el comienzo de una nueva cadena de dependencia, por […]

Problemas con ADC / SBB e INC / DEC en bucles ajustados en algunas CPU

Estoy escribiendo un tipo BigInteger simple en Delphi. Consiste principalmente en una matriz dinámica de TLimb, donde un TLimb es un entero sin signo de 32 bits y un campo de tamaño de 32 bits, que también contiene el bit de signo para BigInteger. Para agregar dos BigIntegers, creo un BigInteger nuevo del tamaño apropiado […]

Modos de direccionamiento NASM x86 de 16 bits

Tengo problemas para señalar una dirección y escribir en mi caso una variable de tamaño byte. Esto me da el error “error: dirección efectiva no válida”: mov byte[AX], byte 0x0 Después de algunos rastros y errores, probé lo mismo pero con EAX. Esto comstack muy bien: mov byte[EAX], byte 0x0 ¿Que me estoy perdiendo aqui?

¿Cómo ver el ensamblaje detrás del código usando Visual C ++?

Estaba leyendo otra pregunta sobre la eficiencia de dos líneas de código, y el OP dijo que miró la asamblea detrás del código y que ambas líneas eran idénticas en el ensamblaje. Dejando a un lado la digresión, ¿cómo podría ver el código ensamblador creado cuando se comstack un progtwig? Estoy usando Visual C ++ […]

`testl` eax contra eax?

Estoy tratando de entender alguna asamblea. El assembly de la siguiente manera, estoy interesado en la línea testl : 000319df 8b4508 movl 0x08(%ebp), %eax 000319e2 8b4004 movl 0x04(%eax), %eax 000319e5 85c0 testl %eax, %eax 000319e7 7407 je 0x000319f0 Estoy tratando de entender ese punto de testl entre %eax y %eax ? Creo que los detalles […]