Test Foro de elhacker.net SMF 2.1

Programación => Programación General => ASM => Mensaje iniciado por: EmmanuelTR9 en 14 Abril 2021, 04:36 AM

Título: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 14 Abril 2021, 04:36 AM
Estoy tratando de realizar una suma primero pero con una presentacion pero al mostrar el numero 1 fijo estableciendolo desde un inicio no puedo darle un salto de linea para que no se vea todo junto. y al mostrar el valor b solo me aparece una letra, alguien me podria decir cual es el error ya estuve intentando pero nada :(

;.386 PROCESADOR 80386 CON REGISTROS DE 32 BITS

;.286 PROCESADOR 80286 CON REGISTRO DE 16 BITS

.MODEL SMALL ; MODOS PARA COMPILACION TINY, SMALL, MEDIUM, COMPACT, LARGE

.STACK ; ESPACIO PARA LA PILA POR DEFAULT 64

.data ; Mensajes a mostrar

linea1 db ' Mensaje 1 ',10,13,'$'

linea2 db 'Mensaje 2',10,13,'$'

linea3 db 'El primer numero es: ',10,13,'$'

linea4 db ' El segundo numero es: ',10,13,'$'

linea5 db 'La suma de los dos numeros es: ',10,13,'$'

linea6 db 'la resta de los dos n?meros es: ',10,13,'$'

A db 04h

B db 03h

valor db ?

.code; INSTRUCCIONES DEL PROGRAMA

codigoss:  ; INICIA PROGRAMA --- PROGRAMA-

MOV AX,seg @data

    MOV DS,AX



    MOV AH,09H

    LEA DX,linea1

    INT 21H



    MOV AH,02H

    INT 21H ;Salto de Linea



    MOV AH,09H

    LEA DX,linea2

    INT 21H







    MOV AH,09H

    LEA DX,linea3

    INT 21H



    MOV AH,09H

    mov ax, seg @data

    mov ds,ax

    mov ah,A ;Muestra el valor A





    MOV AH,02H

    INT 21H ;Salto de Linea



    MOV AH,09H

    LEA DX,linea4

    INT 21H



    MOV AH,09H

    mov ax, seg @data



    mov ah,B ;Muestra Valor B





    MOV AH,02H

    INT 21H ;Salto de Linea



    MOV AH,09H

    LEA DX,linea5

    INT 21H



    ;Instruccion de suma

    mov ax, seg @data

    mov ds,ax

    mov ah,a

    add ah,b

    mov valor,ah

    mov dl, valor

    add dl, 30h

    mov ah, 02h





    MOV AH,02H

    INT 21H ;Salto de Linea



    MOV AH,09H

    LEA DX,linea6

    INT 21H









    mov ax,4c00h    ; FUNCION SALIR DEL CODIGO

    int 21H ; INTERRUMPIR MS-DOS

    End codigoss; TERMINAR PROGRAMA

end


Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 14 Abril 2021, 09:21 AM
¿Cual es el valor de DL cuando llamas al servicio 2 de la interrupcion 0x21? Solo cuando coincida con el valor ASCII del salto de linea funcionara como queres.

http://www.ctyme.com/intr/rb-2554.htm
https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 15 Abril 2021, 02:33 AM
Cita de: Eternal Idol en 14 Abril 2021, 09:21 AM
¿Cual es el valor de DL cuando llamas al servicio 2 de la interrupcion 0x21? Solo cuando coincida con el valor ASCII del salto de linea funcionara como queres.

http://www.ctyme.com/intr/rb-2554.htm
https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea
Es que solo me base en un ejercicio que anteriormente hice, y no entiendo muy bien, entonces que tendria que hacer no entiendo bien?
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 15 Abril 2021, 08:24 AM
Cita de: EmmanuelTR9 en 15 Abril 2021, 02:33 AMEs que solo me base en un ejercicio que anteriormente hice, y no entiendo muy bien, entonces que tendria que hacer no entiendo bien?

Primero deberias responderte la pregunta que te hice: ¿Cual es el valor de DL cuando llamas al servicio 2 de la interrupcion 0x21? No es una pregunta ociosa o retorica, con solo entender la razon por la cual la hice deberias poder deducir la solucion a tu problema. Si todavia no lo ves claro lee los enlaces que te pase y deberias ser capaz de resolver el problema en unos 30 segundos.
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 15 Abril 2021, 13:50 PM
Cita de: Eternal Idol en 15 Abril 2021, 08:24 AM
Primero deberias responderte la pregunta que te hice: ¿Cual es el valor de DL cuando llamas al servicio 2 de la interrupcion 0x21? No es una pregunta ociosa o retorica, con solo entender la razon por la cual la hice deberias poder deducir la solucion a tu problema. Si todavia no lo ves claro lee los enlaces que te pase y deberias ser capaz de resolver el problema en unos 30 segundos.

Pues así teniendo el código nunca le doy valor a DL y si es asi leyendo lo que me mandaste el valor sería 09h
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 15 Abril 2021, 15:40 PM
Cita de: EmmanuelTR9 en 15 Abril 2021, 13:50 PM
Pues así teniendo el código nunca le doy valor a DL y si es asi leyendo lo que me mandaste el valor sería 09h

Correcto lo primero y cerca lo segundo:
https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 15 Abril 2021, 15:49 PM
Cita de: Eternal Idol en 15 Abril 2021, 15:40 PM
Correcto lo primero y cerca lo segundo:
https://es.wikipedia.org/wiki/Salto_de_l%C3%ADnea


Ahora no entiendo cuál es el error es que en teoría en mis clases no hay nada para que me pueda apoyar apenas me estoy familiarizando con esto y es por esto pido ayuda
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 15 Abril 2021, 16:12 PM
Cita de: EmmanuelTR9 en 15 Abril 2021, 15:49 PM

Ahora no entiendo cuál es el error es que en teoría en mis clases no hay nada para que me pueda apoyar apenas me estoy familiarizando con esto y es por esto pido ayuda

Cita de: WikipediaRepresentación
En ASCII y Unicode, el salto de línea se representa mediante el código decimal 10 (en hexadecimal 0A).
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 15 Abril 2021, 16:26 PM
Cita de: Eternal Idol en 15 Abril 2021, 16:12 PM

Ahora entiendo que necesito poner 0A pero eso intente ayer y si me hace el salto de línea pero me borra el valor de A y B
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 15 Abril 2021, 17:09 PM
Te recomiendo depurar (https://en.wikipedia.org/wiki/Debug_(command)) tu codigo linea por linea, en ninguna parte se escribe el valor de A y/o B en consola (pensa que para empezar vas a tener que transformar su valor ENTERO en ASCII). Por ejemplo revisa el codigo entres las lineas 73 y 79, se preparan los parametros pero no se llama a ningun servicio como para que el comentario (";Muestra el valor A") sea cierto.

Es imposible programar haciendo copy/paste sin entender.
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: EmmanuelTR9 en 17 Abril 2021, 03:38 AM
Cita de: Eternal Idol en 15 Abril 2021, 17:09 PM
Te recomiendo depurar (https://en.wikipedia.org/wiki/Debug_(command)) tu codigo linea por linea, en ninguna parte se escribe el valor de A y/o B en consola (pensa que para empezar vas a tener que transformar su valor ENTERO en ASCII). Por ejemplo revisa el codigo entres las lineas 73 y 79, se preparan los parametros pero no se llama a ningun servicio como para que el comentario (";Muestra el valor A") sea cierto.

Es imposible programar haciendo copy/paste sin entender.

Ya realice pero no puedo hacer la multiplicación no me da error pero al imprimir solo me aparece este signo <

;Procedimiento Multiplicacion
    mov al, A
    mul B
    mov Valor, al
    ;Mostrar multiplicacion
    mov ah, 09h
    lea dx, linea7
    int 21h
    mov dl, Valor
    add dl, 30h
    mov ah, 02h
    int 21h
   
    mov ah,02h
    mov dl,0ah ;salto de línea
    int 21h  ;Salto de Linea   
Título: Re: Ejercicio suma,resta,multiplicacion
Publicado por: Eternal Idol en 17 Abril 2021, 07:01 AM
Esta mejor encaminado PERO para numeros de mas de un digito sumarle el valor del caracter 0 en ASCII no funciona. Si multiplicas 3 * 4 te da 12, o 0xC + 0x30 = 0x3C = 60, si tipeas alt + 60 en el teclado numerico te da justamente <. En este caso necesitas '1' y '2'.