lunes, 11 de febrero de 2019

Suma y resta en emu8086

Vamos a aprender a restar y a sumar en el lenguaje ensamblador, aquí el código de la resta:

.MODEL SMALL
.STACK 64
.DATA
    N1 DB 0
    N2 DB 0
    RESTA DB 0
    MSG1 DB "DAME EL PRIMER VALOR ","$"
    MSG2 DB 10,13, "DAME EL SEGUNDO VALOR ","$"
    MSG3 DB 10,13, "RESTA = ",'$'
.CODE
 BEGIN PROC FAR
     MOV AX,@DATA
     MOV DS,AX
   
     MOV AH,09
     LEA DX,MSG1
     INT 21H
   
   
     MOV AH,01
     INT 21H
     SUB AL,30H
     MOV N1,AL
   
   
     MOV AH,09
     LEA DX,MSG2
     INT 21H
     MOV AH,01
     INT 21H
     SUB AL,30H
     MOV N2,AL
   
     MOV AL,N1
     SUB AL,N2
     ADD AL,30H
     MOV RESTA,AL
     MOV AH,09
     LEA DX,MSG3
     INT 21H
   
   
     MOV AH,02
     MOV DL,RESTA
     INT 21H
     MOV AH,4CH
     INT 21H
     BEGIN ENDP
     END



Y ahora el programa que hace la suma y su código:

.MODEL SMALL
.STACK 64
.DATA
    N1 DB 0
    N2 DB 0
    RESTA DB 0
    MSG1 DB "DAME EL PRIMER VALOR ","$"
    MSG2 DB 10,13, "DAME EL SEGUNDO VALOR ","$"
    MSG3 DB 10,13, "SUMA= ",'$'
.CODE
 BEGIN PROC FAR
     MOV AX,@DATA
     MOV DS,AX
   
     MOV AH,09
     LEA DX,MSG1
     INT 21H
   
   
     MOV AH,01
     INT 21H
     SUB AL,30H
     MOV N1,AL
   
   
     MOV AH,09
     LEA DX,MSG2
     INT 21H
     MOV AH,01
     INT 21H
     SUB AL,30H
     MOV N2,AL
   
     MOV AL,N1
     ADD AL,N2
     ADD AL,30H
     MOV RESTA,AL
     MOV AH,09
     LEA DX,MSG3
     INT 21H
   
   
     MOV AH,02
     MOV DL,RESTA
     INT 21H
     MOV AH,4CH
     INT 21H
     BEGIN ENDP
     END


1 comentario: