Ayuda con ensamblador
Publicado por Marcial Martin (1 intervención) el 04/04/2007 18:39:30
Hola a todos,
Pues mi duda es la siguiente, estoy estudiando ensamblador por mi cuenta despues de hacer mis pinitos por c++ y php y quiero hacer un programa que me lea dos numeros por pantalla y me muestre el resultado de la suma de ambos. Hasta ahora he escrito esto aunque sin asber muy bien lo que estoy haciendo ( realmente es el lenguaje mas dificil con el que me he topado hasta ahora XD).
#MAKE_EXE#
DSEG SEGMENT 'DATA'
mensaje1 DB 10,13,'Introducir primer operando: $'
mensaje2 DB 10,13,'Introducir segundo operando: $'
mensaje3 DB 10,13,'Resultado: $'
suma DB 0
DB '$'
DSEG ENDS
SSEG SEGMENT STACK
DW 128 DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
;*******************************************
START PROC FAR
; Store return address to OS:
PUSH DS
MOV AX, 0
PUSH AX
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
MOV dx,offset mensaje1
CALL dx
;Almacenamos el numero introduccido por teclado en al
MOV ah, 01h
INT 21h
SUB al,'0' ; pasa a valor binario
ADD bl,al
MOV ah, 01h
INT 21h
MOV dx,offset mensaje2
CALL dx
MOV ah, 01h
INT 21h
SUB al,'0' ; pasa a valor binario
ADD bl,al
MOV ah, 01h
INT 21h
MOV al,bl
MOV ah,0
ADD al,'0' ; CONVIERTE A ASCII
MOV suma,0
MOV suma,al
LEA dx,mensaje3
CALL dx
; return to operating system:
RET
START ENDP
;*******************************************
CSEG ENDS
END START ; set entry point.
Si sois tan amables de decirme en que estoy fallando u ofrecerme una alternativa optimizada os lo agradeceria enormemente.
Un saludo
Pues mi duda es la siguiente, estoy estudiando ensamblador por mi cuenta despues de hacer mis pinitos por c++ y php y quiero hacer un programa que me lea dos numeros por pantalla y me muestre el resultado de la suma de ambos. Hasta ahora he escrito esto aunque sin asber muy bien lo que estoy haciendo ( realmente es el lenguaje mas dificil con el que me he topado hasta ahora XD).
#MAKE_EXE#
DSEG SEGMENT 'DATA'
mensaje1 DB 10,13,'Introducir primer operando: $'
mensaje2 DB 10,13,'Introducir segundo operando: $'
mensaje3 DB 10,13,'Resultado: $'
suma DB 0
DB '$'
DSEG ENDS
SSEG SEGMENT STACK
DW 128 DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
;*******************************************
START PROC FAR
; Store return address to OS:
PUSH DS
MOV AX, 0
PUSH AX
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
MOV dx,offset mensaje1
CALL dx
;Almacenamos el numero introduccido por teclado en al
MOV ah, 01h
INT 21h
SUB al,'0' ; pasa a valor binario
ADD bl,al
MOV ah, 01h
INT 21h
MOV dx,offset mensaje2
CALL dx
MOV ah, 01h
INT 21h
SUB al,'0' ; pasa a valor binario
ADD bl,al
MOV ah, 01h
INT 21h
MOV al,bl
MOV ah,0
ADD al,'0' ; CONVIERTE A ASCII
MOV suma,0
MOV suma,al
LEA dx,mensaje3
CALL dx
; return to operating system:
RET
START ENDP
;*******************************************
CSEG ENDS
END START ; set entry point.
Si sois tan amables de decirme en que estoy fallando u ofrecerme una alternativa optimizada os lo agradeceria enormemente.
Un saludo
Valora esta pregunta
0