Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: Morringos en 31 Marzo 2011, 06:31 am



Título: Pasar tipo byte a tipo word sin uso de movs?
Publicado por: Morringos en 31 Marzo 2011, 06:31 am
Buenas a todos, tengo una duda en ensamblador, lo cual apenas estoy aprendiendo, pero me he encontrado con dos problemas los cuales no les he podido encontrar una solución y tampoco la causa, les pongo un código de ejemplo:

Código:
title "Ejemplo X"
    .model small
    .stack 1064
    .data
        var1 db 48,36
    .code
     
    mov ax, @data
    mov ds, ax
     
    mov ax, var1                 ;Operand types do not match
    mov dx, ax
    mov ah, 09h
    int 21h
     
     
    mov ah, 4ch
    int 21h
     
    end

Donde está el comentario, es en donde me detecta el error puesto como comentario, también, como la variable "var1" es de tipo byte, encontré las instrucciones: "movs", "movsx" y "moszx", pero cuando las trato de utilizar de la siguiente manera: "movs ax, var1", me marca un error diciéndome: "Ilegar instruction for currently selected processor(s).

¿Alguien tiene alguna idea sobre el por qué me pasa eso y sobre cómo solucionar lo que quiero hacer?

Gracias
Saludos.


Título: Re: Pasar tipo byte a tipo word sin uso de movs?
Publicado por: Eternal Idol en 31 Marzo 2011, 17:02 pm
¿Que intentas hacer con 48,36? ¿Un numero real? ¿Dos numeros enteros?

Código
  1. mov ah, var1
  2. mov al, var1  + 1


Título: Re: Pasar tipo byte a tipo word sin uso de movs?
Publicado por: Morringos en 1 Abril 2011, 03:42 am
Según tengo entendido que al poner: "var1 db 48,36", estoy declarando una variable de tipo byte con un valor de 48 decimal y el 36 indica el final de la cadena, así es como lo he aprendido, no sé si esté mal, igual que si al lugar de 36, pusiera un '$'.

O...¿cómo indicas el final de una variable? Porque pensándolo bien, con "var1 db 48,36", ¿estoy declarando un arreglo de 2 elementos verdad? No sé cómo es para indicarle el final de la variable cuando es númerica o no necesita.


Gracias.
Saludos.  :D


Título: Re: Pasar tipo byte a tipo word sin uso de movs?
Publicado por: Eternal Idol en 1 Abril 2011, 11:44 am
No se necesita, eso es para cadenas de texto.

Si solo queres un byte entonces es suficiente esto:
Código
  1. var1 db 48

Y el codigo tal como te lo mostre (con 0 en lugar de var + 1) o tambien:
Código
  1. xor ax, ax
  2. mov al, var1