Domingo 22 de Diciembre de 2024, 20:26
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Numeros Negativos
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Numeros Negativos (Leído 2870 veces)
xomi
Nuevo Miembro
Mensajes: 4
Numeros Negativos
«
en:
Jueves 15 de Septiembre de 2005, 02:53 »
0
hola estoy empezando a programar en ASM, no tengo muchos conocimientos y tengo que entregar un poyecto para el lunes el cual trata de lo siguiente
se tiene un arreglo A con valores positivos y negativos de tipo byte, implemente un programa que apartir de A genere dos Arreglos
B con los valores positivos de A
C con los valores negativos de B
el arreglo A debe ser recorrido via un ciclo con JMP que analice en cada vuelta si el valor debe ir en B o en C lo estoy realizando en MASM32
creo que he podido realizar lo de los positivos pero con los negativos no puedo ojala y me puedan ayudar se los agradeseria
Código: Text
;copia de areglos entre a y b
.386
.model flat, stdcall
option casemap: none
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
a sbyte 1,2,3,4,5,6
b sbyte 0,0,0,0,0,0
.code
inicio:
mov eax, 0
mov ebx, 0
mov edx, 0
ciclo:
push eax
mov al,a[ebx]
mov b[ebx], al
invoke StdOut, ustr$(eax)
print chr$(" A ",13,10)
pop eax
push edx
mov dl, b[ebx]
invoke StdOut, ustr$(edx)
print chr$(" B ",13,10)
pop edx
.if ebx < 5
.if a[ebx]> 0
inc ebx
jmp ciclo
.endif
.endif
invoke ExitProcess,0
end inicio
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: Numeros Negativos
«
Respuesta #1 en:
Jueves 15 de Septiembre de 2005, 11:43 »
0
Un par de apuntes, estas dependiente mucho tanto de MASM (el ensamblador en si) como de MASM 32 (el paquete), no se si te lo aceptaran.
Ahora el codigo, lo que estas haciendo hasta ahora es recorrer desde 0 a 6 el array y al hacer:
Código: Text
mov b[ebx], al
Estas llenando b
siempre con el valor de a
cuando deberias hacer ahi la comparacion para saber si el numero es o no negativo. Teniendo en cuenta que los bytes con signo van de -128 a 127 podes hacer una comparacion de este tipo para seguir usando operadores de MASM:
Código: Text
.if al < 128
mov b[ebx], al
;aca imprimirias NUMERO + B
.else
;aca imprimirias NUMERO + C
mov carray[ebx], al
.endif
Como nota adicional no podes modificar ebx tan alegremente ya que es utilizado por Windows.
:smartass: :devil: :comp:
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
xomi
Nuevo Miembro
Mensajes: 4
Re: Numeros Negativos
«
Respuesta #2 en:
Jueves 15 de Septiembre de 2005, 18:47 »
0
Gracias eh podido resolverlo
si quisiera capturar los valores de A desde teclado que tendia que hacer
Código: Text
.386
.model flat, stdcall
option casemap: none
include \masm32\include\windows.inc
include \masm32\macros\macros.asm
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
a sbyte -1,2,-3,4,5,6;[B]como podria capturar estos valores desde teclado[/B]
b sbyte 0,0,0,0,0,0
t sbyte 0,0,0,0,0,0
.code
inicio:
mov eax, 0
mov ebx, 0
ciclo:
.if ebx < 6
mov al,a[ebx]
.if a[ebx] > 0
mov b[ebx],al
.endif
.if a[ebx] < 0
mov t[ebx],al
.endif
inc ebx
jmp ciclo
.endif
mov eax,0
mov ebx,0
cpositivo:
.if ebx < 6
mov al, b[ebx]
invoke StdOut, ustr$(eax)
inc ebx
jmp cpositivo
.endif
mov eax,0
mov ebx,0
print chr$(10)
cnegativo:
.if ebx < 6
mov al, t[ebx]
invoke StdOut, str$(t[ebx])
inc ebx
jmp cnegativo
.endif
invoke ExitProcess,0
end inicio
Gracias por ayudarnos a los que estamos empezando
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Numeros Negativos