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
¿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
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?
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.
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
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
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
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).
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
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.
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
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'.