Ensamblador - Instrucciones Ensamblador

 
Vista:

Instrucciones Ensamblador

Publicado por Christian (4 intervenciones) el 28/02/2008 06:03:18
No se si alguien me podria explicar acerca de los codigos hexadecimales de las instruciones del ensamblador.

ADD reg16,r/m16 ; o16 03 /r [8086] en esta linea bueno se para que es le ADD

ADD reg32,r/m32 ; o32 03 /r [386]

ADD r/m8,imm8 ; 80 /0 ib [8086]
ADD r/m16,imm16 ; o16 81 /0 iw [8086]
ADD r/m32,imm32 ; o32 81 /0 id [386]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Instrucciones Ensamblador

Publicado por Christian (4 intervenciones) el 28/02/2008 06:05:33
No se si alguien me podria explicar acerca de los codigos hexadecimales de las instruciones del ensamblador.

ADD reg16,r/m16 ; o16 03 /r [8086]

Bueno se para que es le ADD pero lo demas no se que es lo que quiere decir.
que es "03 /r", especialmente eso de "/r" que es lo que representa

ADD reg32,r/m32 ; o32 03 /r [386]

ADD r/m8,imm8 ; 80 /0 ib [8086]
ADD r/m16,imm16 ; o16 81 /0 iw [8086]
ADD r/m32,imm32 ; o32 81 /0 id [386]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Instrucciones Ensamblador

Publicado por MSH (120 intervenciones) el 28/02/2008 18:48:05
Saludos:

No son códigos exactamente. Se refiere a la sintaxis de la instrucción ADD (suma)
donde:

r = registro
m=memoria

iw, id=dato inmediato (palabra-word)
imm=dato de memoria inmediato

reg16=registro de 16 bits
reg32=registro de 32 bits

¿Y esto para que sirve? para tener conocimiento acerca de como emplear correctamente la instrucción ADD

En ADD (y básicamente en cualquier otra instrucción asm x86) se permite realizar la suma de

registro/memoria (r/m)
registro/registro (r/r)
registro/dato inmediato (r/id)

por el tamaño de los números a sumar, es permitido:

suma entre datos de 8 bits o bytes ( ADD r/m8,imm8 ; 80 /0 ib [8086])
suma entre datos de 16 bits o palabra (ADD r/m16,imm16 ; o16 81 /0 iw [8086])
suma entre datos de 32 bits o palabra doble (ADD r/m32,imm32 ; o32 81 /0 id [386])

no son permitidas las sumas (y otras instrucciones)de :

memoria/memoria
dato inmediato/memoria o viceversa


Un libro ampliamente recomendado en este foro para quienes empiezan con asm es el de "Lenguaje ensamblador y programación para IBM y compatibles" de Peter Abel.

Espero haber resuelto tus dudas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Instrucciones Ensamblador

Publicado por Christian (4 intervenciones) el 28/02/2008 19:59:39
Gracias por reponder pero aun me queda una duda . en la linea:

ADD r/m8,imm8 ; 80 /0 ib [8086]) en esta linea '/0' que quiere decir eso no entiendo???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Instrucciones Ensamblador

Publicado por MSH (120 intervenciones) el 28/02/2008 21:11:19
80 /0 ib [8086] es el opcode o código de operación

El código de operación codifica sólo el tipo de operación a realizar. Esta codificación viene implícita al ensamblar tu código en asm. Por lo que al utilizar la instrucción ADD solo utilizarías esta sintaxis:

ADD r/m8,imm8 (Esto significa suma el contenido del registro con un dato en memoria, o con un dato inmediato de 8 bits, El resultado se alamacena en el registro)

Para más detalles, puedes consultar este link:

http://www.it.uc3m.es/ttao/html/ISA.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar