Domingo 22 de Diciembre de 2024, 12:36
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
) »
Ayuda De Expertos
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ayuda De Expertos (Leído 1995 veces)
SAJOSUE
Nuevo Miembro
Mensajes: 5
Ayuda De Expertos
«
en:
Martes 26 de Octubre de 2004, 23:34 »
0
Señores tengan ustedes buen día, el motivo de peticion es para solicitar si alguien me puede ayudar con el siguiente codigo de una calculadora, esta calculadora esta en texto pero necesito que estas opciones se puedan elegir en el mouse o moviemdome con las flechas, si alguien fuera tan fino de ayudarme le quedare muy agradecido, el codigo con el que cuento es el siguiente:
.model small
segd segment
errorcap db 0
cantidad db 0
cantunor dw 0
cantdosr dw 0
cantunon db 6, 0, 6 dup (?)
cantdosn db 6, 0, 6 dup (?)
funcion db 0
resulta db 13, 10,13,10,"el resultado es: $"
resultar db 11 dup (?)
mena db "Programa calculadora, que le permite realizar las"
db 13,10
db "operaciones de multiplicacion, division, suma"
db 13,10,"y resta sobre dos cantidades enteras."
db 13,10,13,10,"$"
menu db 13,10,13,10,"digite:",13,10,13,10
db "(1) para multiplicar.",13,10
db "(2) para dividir.",13,10
db "(3) para sumar.",13,10
db "(4) para restar.",13,10
db "(5) para terminar.",13,10,"$"
error db 7,7,7,13,10,"error: en la seleccion de las opciones.$"
; db 13,10,13,10,"$"
error1 db 7,7,7,13,10,"error$"
cantunom db 7,7,7,13,10,"dame primera cantidad: $"
cantdosm db 7,7,7,13,10,"dame segunda cantidad: $"
potencia dw 0001h, 000ah, 0064h, 03E8h, 2710h
potenciaf dw $
segd ends
segc segment
assume ds: segd, cs:segc
start: mov ah, 0fh
int 10h
mov ah, 0
int 10h
mov ax, segd
mov ds, ax
mov dx, offset mena
call imprime
mov si, offset resultar
add si, 11
mov al, "$"
mov [si], al
otra: mov dx, offset menu
call imprime
call obtentecla
cmp al, 49
jae sigue
mov dx, offset error
call imprime
jmp otra
sigue: cmp al, 53
jbe todobien
mov dx, offset error
call imprime
jmp otra
todobien: cmp al, 53
jnz checatodo
jmp funcion5
checatodo: mov funcion, al
capcant01: mov dx, offset cantunom
call imprime
mov ah, 0ah
mov dx, offset cantunon
int 21h
mov errorcap, 0
mov cantidad, 0
call convnum
cmp errorcap, 1
jz capcant01
mov cantunor, bx
capcant02: mov errorcap, 0
mov cantidad,1
mov dx, offset cantdosm
call imprime
mov ah, 0ah
mov dx, offset cantdosn
int 21h
call convnum
cmp errorcap, 1
jz capcant02
mov cantdosr, bx
mov al, funcion
cmp al, 31h
jne funcion2
call multiplica
jmp otra
funcion2: cmp al, 32h
jne funcion3
call divide
jmp otra
funcion3: cmp al, 33h
jne funcion4
call suma
jmp otra
funcion4: cmp al, 34h
jne funcion5
call resta
jmp otra
funcion5: mov ax, 4c00h
int 21h
multiplica proc near
xor dx, dx
mov ax, cantunor
mov bx, cantdosr
mul bx
call convascii
mov dx, offset resulta
call imprime
mov dx, offset resultar
call imprime
ret
multiplica endp
divide proc near
mov ax, cantunor
mov bx, cantdosr
cmp bx, 0
jnz divide01
mov cantidad, 3
call huboerror
ret
divide01: div bx
xor dx, dx
call convascii
mov dx, offset resulta
call imprime
mov dx, offset resultar
call imprime
ret
divide endp
suma proc near
xor dx, dx
mov ax, cantunor
mov bx, cantdosr
add ax, bx
jnc sumaconv
adc dx, 0
sumaconv: call convascii
mov dx, offset resulta
call imprime
mov dx, offset resultar
call imprime
ret
suma endp
resta proc near
xor dx, dx
mov ax, cantunor
mov bx, cantdosr
sub ax, bx
jnc restaconv
sbb dx, 0
restaconv: call convascii
mov dx, offset resultar
call imprime
ret
resta endp
imprime proc near
mov ah, 9
int 21h
ret
imprime endp
obtentecla proc near
mov ah, 0
int 16h
ret
obtentecla endp
convnum proc near
mov dx, 0ah
cmp cantidad, 0
jnz convnum01
mov di, offset cantunon + 1
mov cx, [di]
mov si, offset cantunon + 2
jmp convnum02
convnum01: mov di, offset cantdosn + 1
mov cx, [di]
mov si, offset cantdosn + 2
convnum02: xor ch, ch
mov di, offset potencia
dec si
add si, cx
xor bx, bx
std
convnum03: lodsb
cmp al, "0"
jb convnum04
cmp al, "9"
ja convnum04
sub al, 30h
cbw
mov dx, [di]
mul dx
jc convnum05
add bx, ax
jc convnum05
add di, 2
loop convnum03
jmp convnum06
convnum04: call huboerror
jmp convnum06
convnum05: mov cantidad, 2
call huboerror
convnum06: cld
ret
convnum endp
convascii proc near
push dx
push ax
mov si, offset resultar
mov cx, 10
mov al, "."
convascii01: mov [si], al
inc si
loop convascii01
pop ax
pop dx
mov bx, ax
mov ax, dx
mov si, offset resultar
add si, 11
mov cx, 10
obtendigito: dec si
xor dx, dx
div cx
mov di, ax
mov ax, bx
div cx
mov bx, ax
mov ax, di
add dl, 30h
mov [si], dl
or ax, ax
jnz obtendigito
or bx, bx
jnz obtendigito
ret
convascii endp
huboerror proc near
cmp cantidad, 0
jnz huboerror02
mov dx, offset error1
call imprime
mov errorcap, 1
jmp huboerror05
huboerror02: cmp cantidad, 1
jnz huboerror03
mov dx, offset error1
call imprime
mov errorcap, 1
jmp huboerror05
huboerror03: cmp cantidad, 2
jnz huboerror04
mov dx, offset error1
call imprime
mov errorcap, 1
jmp huboerror05
huboerror04: mov dx, offset error1
call imprime
mov errorcap, 1
huboerror05: ret
huboerror endp
segc ends
.stack
end start
Gracias de antemano, cuando corro este codigo en un celerom me da error sera que tengo algo mal definido gracias, por todo.
Tweet
SAJOSUE
Nuevo Miembro
Mensajes: 5
Re: Ayuda De Expertos
«
Respuesta #1 en:
Miércoles 3 de Noviembre de 2004, 17:14 »
0
<span style='font-size:14pt;line-height:100%'>Disculpen talvez no me exprese como debia de haber sido, el codigo que publique si es de una calculadora pero para hacer las operciones se tiene que digitar la opcion, y pues lo que necesito que me ayuden es que pueda elegirlas con el puntero del mouse, si alguien fuera tan amable de ayudarme se le agradecer mucho pues la tengo que entregar gracias por todo.
</span>
Super_G
Miembro MUY activo
Mensajes: 375
Re: Ayuda De Expertos
«
Respuesta #2 en:
Viernes 17 de Diciembre de 2004, 15:46 »
0
Entoces te seria util el funcionamiento basico de un boton.
Pero antes debes saber como manejar el mouse.
por ejemplo en DOS el controlador de microsoft para el mouse se usa la int 33h
de las cuales las funcione mas basicas para que te seran utiles son la de inicio(0h) coordenadas de la posicion del puntero del mouse y el estado de los botones.
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
ASM (Ensamblador)
(Moderador:
Eternal Idol
) »
Ayuda De Expertos