• Viernes 29 de Marzo de 2024, 08:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - joseph_xD

Páginas: [1]
1
ASM (Ensamblador) / Suma de matrices
« 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

Páginas: [1]