Multiplicación en Ensamblador
Mi primer programa en ensamblador: La Multiplicación :D. Intenté hacer el de la suma, pero aunque no me la crea, no me salió :-S Puff!
Yo se que es un cochinero, pero es mi primer programa. Solamente conozco tres funciones del ensamblador :P y no se ni que rollo, esto es nuevo para mi.
Antes del viernes tengo que haber hecho cuatro programitas: uno que me muestre la tabla de multiplicar de un número, otro que imprima un mensaje en pantalla, otro que lea desde el teclado y desplace la palabra según el teclado y otro mas que convierta números de dos dígitos a binario.
Se dice fácil para unos, pero para mi :-S !! Estoy nadando en un mar de confusión, frustración y presión puff! jiji (Que exagerado) jeje
Se vale criticar...
- .model small
- .stack
- .data
- .code
- chr1 db ?
- chr2 db ?
- chr3 db ?
- r1 db ?
- r2 db ?
- ac db 0
- .startup
- ;cls
- mov ah,00h ;Function(Set video mode)
- mov al,03 ;Mode 80x25 8x8 16
- int 10h ;Interruption Video
- mov ah,01h ;Function(character read)
- int 21h ;Interruption DOS functions
- sub al,30h ;ajustamos valores
- mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
- mov ah,01h ;Function(character read)
- int 21h ;Interruption DOS functions
- sub al,30h ;Ajustamos valores
- mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
- mov ah,02h ;Function(character to send to standard output)
- mov dl,'*' ;Character to show
- int 21h
- mov ah,01h ;Function(Read character)
- int 21h ;Interruption DOS Functions
- sub al,30h ;Transform(0dec = 30hex)
- mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
- mov ah,02h ;Character to send to standar output
- mov dl,'=' ;
- int 21h ;Interruption DOS functions
- ;Realizamos operación
- mov al,chr3 ;al = chr3
- mov bl,chr2 ;bl = chr2
- mul bl ;AL = chr3*chr2 (BL*AL)
- mov Ah,0h ;
- AAM ;ASCII Adjusment
- mov ac,AH ;ac = AH (Acarreo)
- mov r2,AL ;r2 = AL (Unidad del resultado)
- mov al,chr3 ;AL = chr3
- mov bl,chr1 ;BL = chr1
- mul bl ;AL = chr1*chr3 (BL*AL)
- mov r1,al ;r1 = AL (Decena del resultado)
- mov bl,ac ;BL = Acarreo anterior
- add r1,bl ;r1 = r1+ac (r1 + Acarreo)
- mov ah,00h ;
- mov al,r1 ;AL = r1 (Asignación para el ajust)
- AAM ;ASCII Adjustment
- mov r1,al ;r1 = AL
- mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
- ;Mostramos resultado
- mov ah,02h
- mov dl,ac
- add dl,30h
- int 21h ;Mostramos ac (Centena)
- mov ah,02H
- mov dl,r1
- add dl,30h
- int 21h ;Mostramos r1 (Decena)
- mov ah,02H
- mov dl,r2
- add dl,30h
- int 21h ;Mostramos r2 (Unidad)
- .exit
- end
Mis Algoritmos » Blog Archive » Hola mundo en ensamblador
2006-09-20 14:11:01
[...] Multiplicación básica en ensamblador [...]
ANNEL
2006-11-21 17:58:32
MMMMMMM... PUES QUERIOD AMIGO QUIERO DESIRTE K YO ESTOY IGUAL K TU PERO PUES NI MODO LO UNICO K NOS QUEDA ES ECHARLE GANAS PORQUE AL IGUAL K TU YYO TAMBIEN CUROS LA MATERIA Y ME STA COSANDO MUCHISMO ENTENDERLAAAA........
PERO EN FIN HAY K SER OPTIMISTAS PARA PODER ENTENDERLO BIEN OP POR LO MENOS PARA PASARRRR...
JAJAJJAJAJ...
BYE
Anyyyyyy...
Victor
2006-11-22 10:22:07
Si, así es ;-) gracias por el comentario :D
Eddy
2007-01-12 11:27:42
Y como lo ejecutas.. eso es lo q no se :S:S:S ????
x favor mandame la respuesta a mi email
breakdance16@hotmail.com
Victor
2007-01-12 11:43:01
Pues hay que compilarlo con el <a href="http://www.sce.carleton.ca/~mmacleod/masm.html" rel="nofollow" rel="nofollow">masm.exe</a> :-S , y obviamente la ejecución es en ambiente DOS.
RaBaGi
2007-10-26 10:20:30
Tu pinche multiplicacion tiene errores arreglala no, y te dice s llamar programador, ja
Victor De la Rocha
2007-10-26 10:31:09
Muchas gracias por tus alagos :) Todo bien por aquí. Uno que es principiante en esto ;) ¿Por que no nos dejas tu propuesta para analisarla y buscar quien es el programador?
luisalbertoscz
2007-11-28 19:47:42
jajaja creo q aqui solo llegan principiantes yo tambien estoy en apuron con ensamblador ... alguien q heche una manito... jejje
EDWIN RODRIGO
2009-06-02 15:51:41
/* HAMMM WENO ALMENOS ALGUNOS TRATAN DE AYUDAR BRINDANDO SUS CONOCIMIENTOS
PERO OTROS SOLO SE CREEN LA GRAN COSA HABLAN CRITICAN
Y NO HACEN NADA......ADE + EL ASEMBLER ES UN LENGUAJE Q CASI NADIE DOMINA PUESTO Q ES UN POCO DIFICIL DE INTERPRETAR.. PE RO Q XVERE Q SE INTEREZEN EN ESTO ..SUERTE BAY IO TBM ESTOY APRENDIENDO..BAYYY */
GIANNY PEREZ
2009-06-04 16:47:30
QUIERO UNPROGRAMA HECHO EN C++ QUE MUESTRE LAS TABLAS DEL MULTIPLICAR DEL 13 AL 18
erika
2010-03-15 17:17:23
nesecito ayuda noc como aser k en c++ me muestre los valores de las tablas de multiplicar ayudenma porfas. gracias...
jackie
2010-04-07 21:56:51
aqui esta el de la suma asi lo hice a ver k tal
;programa que suma dos numeros cada uno de dos digitos
;y le aplica el ajuste en ascii para separar en bcd el
;resultado
.model tiny
.stack
.data
msg db 'Echame los numeros a sumar $'
.code
.startup
mov ah,09h ;interrupcion para imprimir una cadena
lea dx,msg ;ontenemos la direccion de memoria de ms
int 21h ;ejecutamos la interrupcion
mov ah,01h ;interr. lee el caracter 1 del numero 1
int 21h ;ejecutamos la interrupcion
sub al,30h ;hacemos el aguste de caracter a numero
mov bl,al ;guardamos el numero en bl
int 21h ;lee el caracter 2 del numero 1
sub al,30h ;ajustamos el numero
mov cl,al ;copeamos a cl
int 21h ;lee el caracter 1 del numero 2
sub al,30h ;ajustamos el numero
add bl,al ;lo sumamos a las decenas
int 21h ;lee el caracter 2 del numero 2
sub al,30h ;ajustamos el numero
add cl,al ;sumamos a las unidades
mov ax,cx ;pasamos el R para convertirlo BCD
aaa ;convierte BCD
mov cx,ax ;respaldamos el resultado separado
add bl,ch ;sumamos el acarreo a las decenas
mov ax,bx ;pasamos ax para convertir a BCD
aaa ;convertimos BCD separado
mov bx,ax ;respaldamos el resultado
mov dl,bh ;muevo las centenas a dl
add dl,30h ;ajusto las centenas
mov ah,02h ;interr. mostrar un caracter
int 21h ;muestra las sentenas en pantalla
mov dl,bl ;muevo las decenas a dl
add dl,30h ;ajusto las decenas
int 21h ;muestro las decenas
mov dl,cl ;muevo las unidades a dl
add dl,30h ;ajusto las unidades
int 21h ;muestro las unidades
.exit
end
Oscar
2010-08-17 12:48:31
un simple 4 * 4 en ensamblador, veo que es un dolor de cabeza x(
Mike
2010-08-20 18:23:27
Haaa como abundan los trolles y la gente inútil, por los demás chidos comentarios y vic, no te molestes en contestar a los trolles y a los inútiles :) creo que compartir lo que haces es chido...
si te conocieran en persona sabrían que eres de los mejores programadores ;)
CHAVA ROMERO
2010-10-06 13:17:10
RaBaGi esta medi@ pendej@ de se gura no sabe ni correr un programa en ensamblador por que tu programa corre perfecto
LaLo
2010-11-06 15:54:24
aqui esta otro programa para sumar dos numeros espero que les sirva esta mas sencillo y practico
.Model small
.stack
.data
RES db ?, '$'
MENSA1 db 'PRESIONA UNA TECLA',10,13,'$'
MENSA2 db 'PRESIONA OTRA TECLA',10,13,'$'
MENSA3 db 'LA SUMA DE LOS NUMEROS ES',10,13,'$'
.code
MOV AX,@DATA
MOV DS,AX
MOV AH,00H
MOV AL,03H
INT 10H
MOV AH,09H
MOV DX,OFFSET MENSA1
INT 21H
MOV AH,01H ;AL= SE GUARDA LA TECLA PRESIONADA
INT 21H
SUB AL,30H
MOV CH,AL
MOV AH,02H
MOV BH,0
MOV DH,5
MOV DL,0
INT 10H
MOV AH,09H
MOV DX,OFFSET MENSA2
INT 21H
MOV AH,01H ;LEE UNA TECLA
INT 21H
SUB AL,30H
ADD CH,AL ;CH = CH + AL
ADD CH,30H
MOV RES,CH
MOV AH,02H
MOV BH,0
MOV DH,9
MOV DL,0
MOV AH,09H
MOV DX,OFFSET MENSA3
INT 21H
MOV AH,09H
MOV DX,OFFSET RES
INT 21H
MOV AH,4CH
INT 21H
end
z4hz4td30cw4
2010-11-10 09:41:18
Hola amigo también soy principiante en ensamblador de universidad... xD, genial tu programa, me agrado y me esta ayudando a entender mas el ensamblador......, te comento que desde que vi esta pagina me caes bien a como has hablado por aquí....
Es algo raro pero en serio me agrado como has escrito tu forma de comunicación....
Desconozco si todavía estas al pendiente de esta pagina no eh visto mas de tu pagina, puede que ya estés realizando tus actividades profesionales, pero si no es mucho pedir estar en comunicación con tigo para que nos apoyemos, si así lo deseas también y tienes tiempo,
Victor De la Rocha
2010-11-17 01:43:44
Hola z4hz4td30cw4, sigo al pendiente del sitio, pero no puedo contestarle a todos jeje... Pero si, aquí seguimos con ganas! Gracias por el comentario.
LILIS
2010-12-09 22:56:37
Hola a todos jeje amm x lo q veo muxos principiantes al iwual q yo echenle ganas y ps graxias por dejar sus programas son de mucha ayuda. ensamblador es algo complicado pero con la ayuda de muxos es mucho mas facil. suerte a todos..
Naydu
2011-05-29 23:34:58
Desarrollar un Programa que solicite el ingreso de una letra en minuscula y lo muestre en mayuscula.
Desarrollar un programa que solicite dos numeros y efectue a continuacion lo siguiente: 2*a-2*b, tal que a es el primer numero y b es el segundo numero.
por favor ayúdenme con estooo ...
jelson
2011-07-06 10:31:26
uhmmmmm
no entiendo nada de assembler.... necesito que me ayuden :s con la multiplicacion de dos numeros
ROYER
2011-07-06 13:00:51
haber haber ya emos visto las multiplicaiciones pero seri interesante hacer un algoritmo en lenguaje ensamblador que nos calcule la multiplicacion de dos numeros PERO utilizando usmas sucesivas vamos quien lo hace ...!!!!!
leno
2011-10-17 20:20:36
por favor help me please ayudenme un programa en assembler para multiplicar dos numeros de dos digitos kada uno ??