Sep
19
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
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 mi código.
.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 8 Comments
Make A CommentComments RSS Feed TrackBack URL




September 20th, 2006 at 2:11 pm
[...] Multiplicación básica en ensamblador [...]
November 21st, 2006 at 5:58 pm
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...
November 22nd, 2006 at 10:22 am
Si, así es
gracias por el comentario 
January 12th, 2007 at 11:27 am
Y como lo ejecutas.. eso es lo q no se :S:S:S ????
x favor mandame la respuesta a mi email
breakdance16@hotmail.com
January 12th, 2007 at 11:43 am
Pues hay que compilarlo con el masm.exe :-S , y obviamente la ejecución es en ambiente DOS.
October 26th, 2007 at 10:20 am
Tu pinche multiplicacion tiene errores arreglala no, y te dice s llamar programador, ja
October 26th, 2007 at 10:31 am
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?
November 28th, 2007 at 7:47 pm
jajaja creo q aqui solo llegan principiantes yo tambien estoy en apuron con ensamblador ... alguien q heche una manito... jejje