include andres.h
INCLUDE ISC.H
RC EQU 10
LONG EQU 10
.MODEL SMALL
.STACK
.DATA
msg10 db “Menu… Escoja una opcion.”,”$”
msg11 db “a) Adicion”,”$”
msg12 db “b) Sustraccion”,”$”
msg13 db “c) Multiplicacion”,”$”
msg14 db “d) Divicion”,”$”
msg15 db “e) Potencia”,”$”
msg50 db “s) Salir”,”$”
msg60 db “v) Volver a realizar operacion con nuevos numeros.”,”$”
msg16 db “Opcion: “,”$”
msg17 db “Primer cifra: “,”$”
msg18 db “Segunda cifra: “,”$”
msg100 db “Resultado: “,”$”
opcion db 1 dup (” “)
error1 db “Opcion no valida vuelve a elegir opcion.”,”$”
error2 db “Debe elegir solo digitos (0,…,9).”,”$”
error3 db “Debe presionar enter.”,”$”
MSJ1 DB “ESCRIBE EL PRIMER NUMERO : “,”$”
MSJ2 DB “ESCRIBE EL SEGUNDO NUMERO : “,”$”
NUM1 DB 10 DUP (0)
NUM2 DB 10 DUP (0)
NUM1AUX DB 10 DUP (0)
NUM2AUX DB 10 DUP (0)
CONTROL1 DB 0
CONTROL2 DB 0
residuo dw 0
CUCO1 DW 0
CUCO2 DW 0
DIEZ DW 1
DIEZ1 DW 1
NUM1BIN DW 10 dup (0)
NUM2BIN DW 10 dup (0)
SUMABIN DW 10 dup (0)
RESULTSUM DB 10 DUP(‘ ‘)
.CODE
;——————————————————————-
;——————————————————————-
proc muestraMenu far
fondo
ir 7,10
vermsg msg10
prin:
ir 9,10
vermsg msg11
ir 10,10
vermsg msg12
ir 11,10
vermsg msg13
ir 12,10
vermsg msg14
ir 13,10
vermsg msg15
ir 15,10
vermsg msg16
capcharv
mov opcion,al
cmp al,97
je cap
cmp al,98
je cap
cmp al,99
je cap
cmp al,100
je cap
cmp al,101
je cap
er1:
fondo
ir 4,20
vermsg error1
jmp prin
cap:
ret
endp
;—————————-NUMERO 1——————————-
;——————————————————————-
;——————————————————————-
numerouno proc far
IRXY 8,10
VERMSJ MSJ1
MOV BX,0
CICLO1:
PONERCAR 8
SIGUE1:
CAPCAR
;——————–VALIDACION——–
CMP AL,13
JE ORDENAR
CMP AL,30H
JL CICLO1
CMP AL,39H
JA CICLO1
;———–VALIDACION SUPERADA Y GUARDANDO———
MOV NUM1AUX[BX],AL
INC BX
INC CONTROL1
INC CUCO1
CMP CONTROL1,10
JNE SIGUE1
;—————-ORDENANDO——
ORDENAR:
MOV AX,CUCO1
MOV BX,LONG
SUB BX,AX
MOV SI,0
CICLO2:
MOV CL,NUM1AUX[SI]
MOV NUM1[BX],CL
INC SI
INC BX
CMP BX,10
JNE CICLO2
ret
endp
;—————————-NUMERO 2——————————-
numerodos proc far
IRXY 9,10
VERMSJ MSJ2
MOV BX,0
CICLO3:
PONERCAR 8
SIGUE2:
CAPCAR
;——————–VALIDACION——–
CMP AL,13
JE ORDENAR1
CMP AL,30H
JL CICLO3
CMP AL,39H
JA CICLO3
;———–VALIDACION SUPERADA Y GUARDANDO———
MOV NUM2AUX[BX],AL
INC BX
INC CONTROL2
INC CUCO2
CMP CONTROL2,10
JNE SIGUE2
;—————-ORDENANDO——
ORDENAR1:
MOV AX,CUCO2
MOV BX,LONG
SUB BX,AX
MOV SI,0
CICLO4:
MOV CL,NUM2AUX[SI]
MOV NUM2[BX],CL
INC SI
INC BX
CMP BX,10
JNE CICLO4
ret
endp
;————–MOSTRAR CAPTURA——————-
;——————————————————
;——————————————————
QUITARCERO PROC FAR
MOV BX,0
CICLO5:
MOV AL,NUM1[BX]
AND AL,00001111B
MOV NUM1[BX],AL
MOV CL,NUM2[BX]
AND CL,00001111B
MOV NUM2[BX],CL
INC BX
CMP BX,10
JNE CICLO5
RET
ENDP
;—————————————————–
;——————————————————
convert1 proc far
MOV AX,0
MOV BX,10
MOV CX,10
LEA SI,NUM1+9
MARCA:
MOV AL,[SI]
AND AX,000FH
MUL DIEZ
ADD NUM1BIN,AX
MOV AX,DIEZ
MUL BX
MOV DIEZ,AX
DEC SI
LOOP MARCA
RET
ENDP
;——————————————————
convert2 proc far
MOV AX,0
MOV BX,10
MOV CX,10
LEA SI,NUM2+9
MARCA1:
MOV AL,[SI]
AND AX,000FH
MUL DIEZ1
ADD NUM2BIN,AX
MOV AX,DIEZ1
MUL BX
MOV DIEZ1,AX
DEC SI
LOOP MARCA1
RET
ENDP
;——————————————————
SUMA MACRO a,b,total
PUSH AX
MOV AX,a
ADD AX,b
MOV total,AX
POP AX
ENDM
;——————————————————
RESTA MACRO a,b,total
PUSH AX
MOV AX,a
SUB AX,b
MOV total,AX
POP AX
ENDM
;——————————————————
convbinascii proc far
MOV CX, 0010
LEA SI, RESULTSUM+9
MOV AX, SUMABIN
CICLO6:
CMP AX,CX
JB CICLO7
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI],DL
DEC SI
JMP CICLO6
CICLO7:
OR AL,30H
MOV [SI],AL
; mov resultsum,[si]
ret
endp
;——————————————————
;——————————————————
multi proc far
MOV Ax,num1bin
MUL num2bin
MOV sumabin,ax
RET
endp
;——————————————————
;——————————————————
divide proc far
mov ax,num1bin
mov residuo,ax
mov bx,num2bin
mov si,0
ciclo35:
cmp residuo,bx
jb termina1
PUSH AX
MOV AX,residuo
SUB AX,num2bin
MOV residuo,AX
inc si
POP AX
jmp ciclo35
termina1:
mov sumabin,si
ret
endp
;——————————————————
;——————————————————
potencia proc far
mov ax,0001h
mov sumabin,ax
mov di,0
ciclo40:
cmp di,num2bin
je termina2
MOV Ax,num1bin
MUL sumabin
MOV sumabin,ax
inc di
jmp ciclo40
termina2:
RET
endp
;——————————————————
;——————————————————
proceso1 proc far
cmp opcion,97
je adicion
cmp opcion,98
je sustraccion
cmp opcion,99
je multiplicacion
cmp opcion,100
je division
cmp opcion,101
je elevar
adicion:
suma num1bin,num2bin,sumabin
jmp hecho
sustraccion:
resta num1bin,num2bin,sumabin
jmp hecho
multiplicacion:
call multi
jmp hecho
division:
call divide
jmp hecho
elevar:
call potencia
jmp hecho
hecho:
ret
endp
;——————————————————
;——————————————————
proceso2 proc far
CALL CONVBINASCII
IRXY 11,10
vermsg msg100
MOSTRARCAPTURA 10,resultsum
ir 22,10
vermsg msg50
ir 23,10
vermsg msg60
ir 15,10
capcharv
mov opcion,al
ret
endp
;——————————————————
;——————————————————
limpiar proc far
mov di,0
cic:
mov sumabin[di],0
mov resultsum[di],0
inc di
cmp di,10
jne cic
ret
endp
;——————————————————
;——————————————————
;—————————————————
INICIO
comien:
call muestraMenu
cmp opcion,115
je saldeaqui
PANTALLA AZULBLANCO
CALL NUMEROUNO
CALL NUMERODOS
CALL CONVERT1
CALL CONVERT2
regresa:
call proceso1
call proceso2
cmp opcion,118
je comien
cmp opcion,115
jne regresa
IRXY 24,10
saldeaqui:
FIN
Filed under: Ensamblador |
hola andres!
soy naira, tengo que hacer una unidad aritmetico logica en lenguaje ensamblador y c (creo) para la asignatura estructura de computadores II. Soy de Valladolid, por si eso ayuda (nose xa q xo weno jaja).
El tema es: que consiga pedir dos numeros A y B por pantalla, de 4 digitos, y que pueda sumarles, restarles, multiplicarles y dividirles.
He visto el cosigo en tu pagina,pero no me entero de nada, y no se si me sirve de algo en mi trabajo.MUCHAS GRACIAS POR ADELANTADO 😉
Mira Naira, el programa k puse, es totalmente funcional, probado en mi clase. funciona de la sig. manera: En ambiente windows abres el Simbolo del Sistema (si es WXP) o command (si es W95, W98), de ahi buscas el directorio donde lo almacenaste y lo ejecutas.
El codigo que muestro tal ves no es muy comprensivo porque utiliza las librerias descritas en esta pagina las que son ISC.H y andres.H , recuerda que tienen que estar guardadas con extencion H.
Ahora, no se que compilador utilices, pero para poder compilar este codigo ensamblador utilizamos el tasm.
Deja tu correo para poder comunicarme contigo ya que asi no puedo estar seguro si leeras esto o no.
pero no dejo las liberias 😦
Andres este programa puede servir sin utilizar la libreria que mencionas
Hola David.
MMMM, si puede sin las librerias pero hay un problema…, las macros son las que estan contenidas en la libreria, si se las quitas… tienes que sustituir las macros por su codigo equivalente (el que corresponde a esa macro), ese es el primer problema… que tendrias que estar cambiando todas las llamadas a las macros dentro del programa; otro sera que… al cambiar las macros por sus codigos equivalentes… el programa se haria mas largo… y esto ocacionaria que los brincos (jmp) a veces no llegaran a donde deben de ir… y el compilador te marcaria error, esto pues lo resuelves colocando saltos intermedios. Jejeje, no se si me explique. Bueno, espero que te sirva mi comentario… y disculpa por tardar en atenderte.
Su servilleta: Malandres.
hola , bye
Hola Rosa, hasta pronto.
hola
quien eres
Hola.. estaba viendo tu programa para guiarme en uno que tengo que hacer.. en assembler pero en el 8085.. es una calculadora de 6 digito.. 4 enteros y dos decimales.. que los datos entren por un teclado y se muestren en un display.. pero tengo algunas dudas.. pues es la primera vez que voy a programar en assembler.. y queda poco tiempo pa entregar la asignacion.
hola como estas, voy empezando a utilizar ensamblador no se si puedes ayudarme con las suma de 2 numero introducidos desde el teclado, quisiera que me mandaras el codigo a mi correo, pero quisiera que fuera un codigo muy sencillo.
mi correo es ecortes278@hotmail.com
Sklep komputerowy z tanimi czesciami komputerowymi:
sklep komputerowy
cuales son los valores de X y de Y para la ecuacion X(elevado a la 3) + XY(elevado a la 2) – Y (elevado a la 2)
hola malandres te felicito por tu programa pero tengo una pequeña duda como le harias para que programa las operaciones con valores de hasta 10 digitos
Que onda malandres fijate que yo corri tu ejemplo y funciono me gustaria saber como le harias para llegar hasta 20 digitos en las operaciones. Soy un principiante en assembler.
@Luis Vasquez: Hace tu tarea Guicho 😀
¿ kien es Guicho ?
¿pero como conseguimos esas librerias?, ¿podrias poner un enlace para descargarlas? requiero de tu programa y me urge.
Gracias por tu aporte a la humanidad
agregame vale_salta_94@… me llamo vale jajajja yu
hola
me llamo vale
tengo 14
jajaaj
0020000+0002220 CUANTO ES ??=·$
CUENTO ES 440+550
que maricos son
Muchas gracias por este code!
me ha sido de mucho ayuda espero puedas agregarme como tu contacto en el messenger :S
La verdad que me hace un buen tutoriado de lenguaje ensamblador
gracias de antemando!
gouki_san@hotmail.com
agregame necesito ayuda con el codigo, saludos cesar
hola me gustaria que me ayudes porfavor ya que debo hacer un programa parecido solo que en simuproc si me puedes ayudar te lo agradecere
te de mi mail. nickynaag_3@yahoo.com
hola a todos nesecito hacer una calculadora, no se si alguien me puede ayudar me urgue para el curso de assembler, por otro lado no puedo hacer la conexion del puerto paralelo, mi sistema operativos es vista, estoy usando macroassembler, quiero encender una luces en unos leds me urgue si alguiem me puede ayyudar, mi correo es luisitoangelito28@hotmail.com, muy agradecido
andres no puedo correr tu codigo me sales este mensaje de error:
Assembling: C:\pruebas\nene.asm
MASM : fatal error A1000: cannot open file : C:\pruebas\nene.asm
El volumen de la unidad C no tiene etiqueta.
El n£mero de serie del volumen es: 9AFB-8CC1
Directorio de C:\pruebas
10/06/2009 02:00 p.m. 5,996 nene.txt
1 archivos 5,996 bytes
0 dirs 48,210,395,136 bytes libres
si me puede ayudar te lo agradesco
hola luis… lo que pasa es que el programa esta diseñado para ser compilado en el TASM pero no en el MASM. la verdad no se en que se diferencie en cuanto al codigo. :s Saludos.
hey este programa esta chido me salvaste la vida porque en un examen venia un problema igualito y ya lo hice excelente aporte sigue asi no te critico nada por que no soy de esas personas
loqo toi pidiendo una calcularora i no me apareze nadaa
QE BRONKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Hola andres ; Me podrias ayudar hacer uno parecido pero con mas digitos …, probe el codigo de aqui , pero no me da los resultados correctos …y en el potencia me salen mucho simbolos …..podrias ayudarme hacer el codigo de una calculadora pero con dos digitos max…es para calificacion ., es un proyecto , por faaaa, lenguaje ensamblador esta algo enredado –si le entiendo pero muy poco …gracias ..es para el jueves el proyecto si me podrias ayudar …
que rabia estoy buscando una calculadora y me sale esto cojan oficio
hola la verdad en este webo tendrian que poner una calcu x q soy tan vaga que no kiero aserlo con mi mente jjajajjajajajajajajaja
que es magnifico la conputadora i claro tanbien la calculadora chau besos para el que lo lee
que es magnifico la conputadora i claro tanbien la calculadora chau besos para el que lo lee i estan adorables
que es andres.h
PUES LA LIBRERIA
OLA ANDRES TENGO KE ASER UNA CALCULADORA EN EXEL 2003 II NOSE COMO EMPEZAR ME PUEDES AYUDAR XFAVOR!!
bueno jeje
aj yo quiero que salga la calculadora para poner los N.N para que me salga el resultado
ja ja ja ja ja ja ja ja ja ja ja ja ja los odiooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo☺☻♥♦♣♠•◘○
Oye fijate que cabal estoy en mi clase de Assembler, y tenemos que hacer una calculadora que suma, divida, reste y multiplique, pero estamos usando la arquitectura 8086, mi pregunta es si me puedes ayudar? dejo mi correo adjunto lei tu codigo y lo pege en mi Ensamblador pero no tengo andres.H
qe ionndaa
haiii hola gente miren acabo de ntrar a la secu y se me dificultan las potencias alguien podria ayudarme o esplicarme les agradeceria mucho
oye canectte
Hola, quien eres?
me parese muy jevi
OLA
ey amigo al tratar de ejecutar tu codigo me sale un un un out of memory que significa esto
busco calcuradora para agregsr radicacion y me salis con esta mierda .|.
no se si alguien tiene las librerias del programa… andres si las tienes porfavor mandamelas chivdihe@hotmail.con
gracias pero esto no me ayudo
y las librerias?
ESTAN ABAJO 😦 PERO AUN ASI PONIENDOSELAS ME SALE UN ERROR