Domingo 22 de Diciembre de 2024, 13:04
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
) »
Re: Par e Impar
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Par e Impar (Leído 21529 veces)
Logan
Nuevo Miembro
Mensajes: 19
Re: Par e Impar
«
en:
Lunes 29 de Septiembre de 2003, 20:49 »
0
Hola Amigos, tengo un problemilla , estoy realizando un programa que me determine si un numero es Par o Impar pero algo no esta bien, aqui les muestro el codigo esperando que uno de ustedes me pueda iluminar porque no he podido, siento que estoy mal en los saltos, pero no lo consigo, les agradezco mucho ayuda bye.
pila segment stack
pila ends
data segment
msg1 db "Par",10,13,"$"
msg2 db "Impar",10,13,"$"
num dw 6
d dw 2
data ends
code segment
assume ds:data,cs:code,ss:pila
inicio:
mov ax,data
mov ds,ax
mov dx,0
mov ax,num
mov bx,d
div bx
cmp ah,0d
jz par
jmp impar
par:
mov dx,offset msg1
mov ah,09h
int 21h
jmp fin
impar:
mov dx,offset msg2
mov ah,09h
int 21h
jmp fin
fin:
mov ah,4ch
int 21h
code ends
end inicio
Tweet
Estamos aqui porque jamás terminaremos de aprender....
Super_G
Miembro MUY activo
Mensajes: 375
Re: Par e Impar
«
Respuesta #1 en:
Miércoles 1 de Octubre de 2003, 06:02 »
0
vi tu programa a la rapida , y me parece que el error puede estar en tu comparacion ya que al realizar la divicion entre un registro de 16 bits el resto de la division(DXAX/BX) se ira a DX y no a AH, una solucion simplemente podria ser hacer la comparacion de 0 con DX, o la divicion hacerla con bl....pero la vere mas detenidamente despues
Logan
Nuevo Miembro
Mensajes: 19
Re: Par e Impar
«
Respuesta #2 en:
Jueves 2 de Octubre de 2003, 19:33 »
0
Muchas gracias Super_G era precisamento lo que me dijiste, el resuduo queda en DX, solo cambie eso y el programa funciona correctamente, ahora leeré más del por qué de este almacenamiento en DX y no en AH como yo creia, gracias nuevamente, hasta pronto.
Estamos aqui porque jamás terminaremos de aprender....
colitroni
Nuevo Miembro
Mensajes: 8
Par e Impar
«
Respuesta #3 en:
Jueves 9 de Octubre de 2003, 02:48 »
0
Asi a bote pronto, tb se me ocurre hacerlo con una operacion and, ya que si el bit menos significativo está a 1 el nº seguro q es impar, corregirme si me equivoco
He realizado lo que comento arriba y el programa quedaria asi:
DSEG SEGMENT 'DATA'
num dw 2456 ;numero que se introduce
msgp db 'El numero introducido es par.$'
msgi db 'El numero introducido es impar.$'
DSEG ENDS
SSEG SEGMENT STACK 'STACK'
DW 100h DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
START PROC FAR
;todo esto para terminar el programa con ret
PUSH DS
MOV AX, 0
PUSH AX
; empieza programa
MOV AX, DSEG
MOV DS, AX
mov bx,num ;pongo en bx el numero introducido
and bx,1 ; compruebo el bit 0
cmp bx,1 ; si bx=1 es impar
je impar
mov dx,offset msgp ; preparo el mensaje par
jmp continua
impar:
mov dx,offset msgi ; preparo el mensaje impar
continua:
mov ah,09h ; muestro el mensaje en pantalla
int 21h
RET
START ENDP
;*******************************************
CSEG ENDS
END START ; set entry point.
El programa funciona perfectamente. Salu2.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Re: Par e Impar