1
					
						
						« en: Sábado 24 de Noviembre de 2012, 05:06 »
					 
					
					Hola, necesito ayuda con este código de asembler que supuestamente debe sumar una matriz de 2x2
el problema es que aprece el mensaje A11: yo ingreso un numero x ejemplo 12
luego aparece A12: ingreso 14 y luego no aparece nada más
mi sistema operativo es windows 7 32bits e intale el turbo assembler 5.0
si pudieran ayudarme se los agradecira mucho nose mucho sobre asembler
no he llevado el curso pero un profesor nos dejo de tarea buscar codigos de assembler de diferentes temas a mi me toco de operaciones aritmeticas de matrices
y tratar de explicar lo que entendamos.
TITLE MATRICES
        .MODEL SMALL
        .STACK 64
        .DATA
;MATRIZ A
A11     DB      ?
A12     DB      ?
A21     DB      ?
A22     DB      ?
;MATRIZ B
B11     DB      12
B12     DB      12
B21     DB      12
B22     DB      12
;MATRIZ RESULTANTE
R11     DB      ?
R12     DB      ?
R21     DB      ?
R22     DB      ?
ASCVAL  DB      '00','$'
DIVR    DB      ?
;MENSAJES PARA INGRESO MATRIZ
MSG11   DB      'A11: ','$'
MSG12   DB      'A12: ','$'
MSG21   DB      'A21: ','$'
MSG22   DB      'A22: ','$'
MSGB11  DB      'B11: ','$'
MSGB12  DB      'B12: ','$'
MSGB21  DB      'B21: ','$'
MSGB22  DB      'B22: ','$'
MSG     DB      'MATRIZ RESULTADO','$'
MSG2    DB      'DERECHOS RESEVADOS POR REFLEX','$'
;VARIABLES PARA LEER DEL BUFFER DEL TECLADO
NAMEPAR LABEL   BYTE
MAXLEN  DB      3
ACTLEN  DB      ?
NAMEFLD DB      3 DUP('')
        .CODE
BEGIN   PROC    FAR
        MOV     AX,@DATA
        MOV     DS,AX
;IMPRIMIR EN PANTALLA MENSAJE MSG11
        MOV     AH,09H
        LEA     DX,MSG11
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE A11
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     A11,AL
        MOV     AX,10
        MUL     A11
        MOV     A11,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     A11,AL
;LIMPIA PANTALLA 
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSG12
        MOV     AH,09H
        LEA     DX,MSG12
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE A12
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     A12,AL
        MOV     AX,10
        MUL     A12
        MOV     A12,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     A12,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSG21
        MOV     AH,09H
        LEA     DX,MSG21
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE A21
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     A21,AL
        MOV     AX,10
        MUL     A21
        MOV     A21,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     A21,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSG22
        MOV     AH,09H
        LEA     DX,MSG22
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE A22
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     A22,AL
        MOV     AX,10
        MUL     A22
        MOV     A22,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     A22,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSGB11
        MOV     AH,09H
        LEA     DX,MSGB11
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE B11
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     B11,AL
        MOV     AX,10
        MUL     B11
        MOV     B11,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     B11,AL
;LIMPIA PANTALLA 
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSGB12
        MOV     AH,09H
        LEA     DX,MSGB12
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE B12
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     B12,AL
        MOV     AX,10
        MUL     B12
        MOV     B12,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     B12,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSGB21
        MOV     AH,09H
        LEA     DX,MSGB21
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE B21
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     B21,AL
        MOV     AX,10
        MUL     B21
        MOV     B21,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     B21,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;IMPRIMIR EN PANTALLA MENSAJE MSGB22
        MOV     AH,09H
        LEA     DX,MSGB22
        INT     21H
;LEE DESDE TECLADO Y LO TRASPASA A LA VARIABLE B22
        MOV     AH,0AH
        LEA     DX,NAMEPAR
        INT     21H
        LEA     SI,NAMEFLD
        MOV     AL,[SI]
        SUB     AL,48
        MOV     B22,AL
        MOV     AX,10
        MUL     B22
        MOV     B22,AL
        LEA     SI,NAMEFLD(1)
        MOV     AL,[SI]
        SUB     AL,48
        ADD     B22,AL
;LIMPIA PANTALLA
        MOV     AH,08H
        INT     10H
        MOV     BH,AH
        MOV     AX,0600H
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
;SUMA LAS MATRICES A Y B
        MOV     AH,A11
        ADD     AH,B11
        MOV     R11,AH
        MOV     AH,A12
        ADD     AH,B12
        MOV     R12,AH
        MOV     AH,A21
        ADD     AH,B21
        MOV     R21,AH
        MOV     AH,A22
        ADD     AH,B22
        MOV     R22,AH
;IMPRIMIR EN PANTALLA MENSAJE MSG
        MOV     AH,09H
        LEA     DX,MSG
        INT     21H
;TRANSFORMA LA VARIABLE R11 A ASCII
        MOV     AL,R11
        CBW
        MOV     DIVR,10
        DIV     DIVR
        ADD     AL,48
        ADD     AH,48
        MOV     ASCVAL(0),AL
        MOV     ASCVAL(1),AH
;UBICA EL CURSOR EN LA POSICION 2,1
        MOV     AH,02H
        MOV     BH,00H
        MOV     DH,2
        MOV     DL,1
        INT     10H
;IMPRIME LA VARIABLE R11 EN PANTALLA
        MOV     AH,09H
        LEA     DX,ASCVAL
        INT     21H
;TRANSFORMA LA VARIABLE R12 A ASCII
        MOV     AL,R12
        CBW
        MOV     DIVR,10
        DIV     DIVR
        ADD     AL,48
        ADD     AH,48
        MOV     ASCVAL(0),AL
        MOV     ASCVAL(1),AH
;UBICA EL CURSOR EN LA POSICION 2,4
        MOV     AH,02H
        MOV     BH,00H
        MOV     DH,2
        MOV     DL,4
        INT     10H
;IMPRIME LA VARIABLE R12 EN PANTALLA
        MOV     AH,09H
        LEA     DX,ASCVAL
        INT     21H
;TRANSFORMA LA VARIABLE R21 A ASCII
        MOV     AL,R21
        CBW
        MOV     DIVR,10
        DIV     DIVR
        ADD     AL,48
        ADD     AH,48
        MOV     ASCVAL(0),AL
        MOV     ASCVAL(1),AH
;UBICA EL CURSOR EN LA POSICION 3,1
        MOV     AH,02H
        MOV     BH,00H
        MOV     DH,3
        MOV     DL,1
        INT     10H
;IMPRIME LA VARIABLE R21 EN PANTALLA
        MOV     AH,09H
        LEA     DX,ASCVAL
        INT     21H
;TRANSFORMA LA VARIABLE R22 A ASCII
        MOV     AL,R22
        CBW
        MOV     DIVR,10
        DIV     DIVR
        ADD     AL,48
        ADD     AH,48
        MOV     ASCVAL(0),AL
        MOV     ASCVAL(1),AH
;UBICA EL CURSOR EN LA POSICION 3,4
        MOV     AH,02H
        MOV     BH,00H
        MOV     DH,3
        MOV     DL,4
        INT     10H
;IMPRIME LA VARIABLE R22 EN PANTALLA
        MOV     AH,09H
        LEA     DX,ASCVAL
        INT     21H
;UBICA EL CURSOR EN LA POSICION 3,4
        MOV     AH,02H
        MOV     BH,00H
        MOV     DH,10
        MOV     DL,1
        INT     10H
        MOV     AH,09H
        LEA     DX,MSG2
        INT     21H
;FINALIZA EL PROGRAMA Y VUELVE A DOS 
        MOV     AX,4C00H
        INT 21H
BEGIN   ENDP
        END     BEGIN