I'm trying to do the this, the final user enters a vector of n position, in this case 1 to 10 position, then the final user enters the content in each position of the vector, ex. the vector has 3 position V[1]=2,V[2]=p and V[3]=18,

i need to separate the vector in two new vectors, one for the numbers and the other for the letters, but i have serios problems with that.

My problems are:

i don't know how to diferenciate a number of a letter, they automaticaly change into a ascii caracter. ex: letter a is 49 in ascii, but if the final user enters the same number (49), how i diferenciate from the letter ??
i have problems too with the two new vectors, how do i fill these vectors with the old position of the first vector.



; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

.486                            ;crea codigo de 32 bits
.model flat, stdcall          ; modelo de memoria 32 bit
option casemap :none      ; case sensitive

include \masm32\include\windows.inc        ;siempre de primero
include \masm32\macros\macros.asm      ;Para que MASM soporte los macros

; -----------------------------------------------------------------
; Incluye archivos en MASM que forman prototipos para la llamada de funciones
; -----------------------------------------------------------------
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc

; ------------------------------------------------
; Librerias de archivos que tienen definiciones para exportar funciones
; ------------------------------------------------
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

; --------------------------
; inicializa 10 valores DWORD
; --------------------------
itm0  dd ?
itm1  dd ?
itm2  dd ?
itm3  dd ?
itm4  dd ?
itm5  dd ?
itm6  dd ?
itm7  dd ?
itm8  dd ?
itm9  dd ?
; ---------------------------------
; Pone las direcciones en el arreglo
; ---------------------------------
array dd itm0,itm1,itm2,itm3,itm4
        dd itm5,itm6,itm7,itm8,itm9

.code              ;Le dice al MASM donde el codigo comienza

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

start:                          ;Inicio del programa

    call main                  ;Salta al procedimiento principal


; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

main proc

    LOCAL cnt  :DWORD          ; Conteo para el loop
    LOCAL str1  :DWORD
    LOCAL var1  :DWORD

    ; Imprimimos mensaje por pantalla
    loc 10, 2

    ; Pedimos la cantidad de posiciones que va a tener el vector
    loc 0, 4
    mov str1, input("ENTER THE NUMBER OF POSITION  (BETWEN 1 y 10) : ")    ; Cadena con el valor
    mov cnt,sval(str1)                          ; La convertimos a numero
    loc 0, 6
    push esi
    push edi

    mov esi, array              ; Movemos la direccion del arreglo dentro del ESI

    ; Pedimos cada posicion del vector
    mov str1, input("ENTER THE VALUE IN N(1 TO 10) POSITION : ")    ; Cadena con el valor
    mov edi,               ; La diferencia la ponemos dentro del EDI
    print str$(esi)            ; Muestra la direccion del valor
    print chr$(" = Direccion En Memoria",13,10,13,10)
    mov edi,uval(str1)
    print str$(edi)            ; Muestra el valor referenciado
    print chr$("      = CONTENT OF THE VECTOR",13,10,13,10)
    add esi, 4                  ; Suma 4 al ESI para llegar al proximo elemento del arreglo
    sub cnt, 1                  ; Resta 1 del contador
    jnz label1                  ; Salta de nuevo a LABEL1 si cnt no es cero

    pop edi
    pop esi

    loc 10, 30
    mov str1, input("PUSH ENTER TO FINISH....")



main endp

; ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл

end start                      ; Le dice al MASM donde el programa finaliza
Posted on 2005-11-07 14:43:57 by chola
Posted on 2005-11-09 10:48:12 by chola
If the user enters 49, they will enter two characters, '4' and '9'. Their values are 34h (decimal 52) and 39h (decimal 57).
Posted on 2005-11-10 00:51:41 by tenkey
ok, but the content of a vector is only one element or many.

ex. inside the first position of a vector has 4 or 2344552134.

that's the problem, how diferrenciate the number and the letters
Posted on 2005-11-11 08:55:54 by chola
There are at least two ways. In both cases you will need to add information, the extra information is sometimes called "type". The type or kind will be a value that says you stored either a number or a non-number. You define how the user enters the data. By setting the rules for entering data, you know if you are receiving numbers or non-numbers.

Method #1 - parallel arrays

; "type" is a reserved word, so we will use "kind"
kind DWORD 10 dup(?) ; kind can actually be a BYTE
vec  DWORD 10 dup(?)

Method #2 - array of ordered pairs

; first DWORD is kind, second DWORD is value
vec0 DWORD ?,?
vec1 DWORD ?,?
; ... repeat ...
vec9 DWORD ?,?

You can also use STRUCTs in Method #2.
Posted on 2005-11-12 01:13:23 by tenkey
Thank You  ;)
Posted on 2006-02-08 09:40:31 by chola