Вы находитесь на странице: 1из 8

Lenguaje Ensamblador

Practicas:
 Programa en leguaje ensamblador que 1-Sume 2 núm.
2-Reste 2 núm. (a-b) a>=b y muestre el resultado.
 Programa que permita solicitar un valor "N" al usuario
0<=n<=6.Leido ese dato, sumar esa "N" cantidad de
dígitos leídos desde el teclado.

Docente:
Ing. Andrés Díaz Elizalde

Integrantes:
Asad Zetina Victor Guillermo

Sánchez González Fabiola

Velueta Figueroa Francisca


Programa en leguaje ensamblador que 1-Sume 2 núm.
2-Reste 2 núm. (a-b) a>=b y muestre el resultado.
.MODEL SMALL ; Modelo de memoria es small
.DATA ; Segmento de datos

Cuadro db " ",0ah,0dh


db " ------------------------- ",0ah,0dh
db " | Eliga la Operacion |",0ah,0dh
db " | |",0ah,0dh
db " | 1. Suma |",0ah,0dh
db " | 2. Resta |",0ah,0dh
db " ------------------------- ",0ah,0dh
db "$"
M DB ' ',10,13,'$' ;espacio del salto
Msg1 db 'Ingrese 1er numero : $'
Msg2 db 'Ingrese 2do numero : $'
Msg3 db 'Resultado : $'
Preg db 0DH,0AH,'Desea continuar? (S/N):',24h
Oper db 0DH,0AH,'Que desea realizar : $ '
line db 10,13,36

.STACK ; Segmento de Pila


.CODE ; Segmento de codigo

INICIO: ; Etiqueta del inicio del programa


;---------------------------Inicio--------------
Empezar:

lea dx, Cuadro


mov ah,09h
int 21h
mov Ax,Data ; Inicializa DS con la direccion de data
mov Ds, Ax ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;----------------- Elegimos la opcion --------------------------------

lea dx, Oper


mov ah,09
int 21h
Practicas*

CALL saltar; call


mov ah,01
int 21h

;----------------Comparamos la opcion-----------------------
cmp al,31h
je Sumar
cmp al,32h
je Restar
;..........................................SUMA.......................................

CALL saltar ;la instruccion CALL realiza un salto a una subrutina con retorno

Sumar:

MOV AH,09H ;Visualización de la cadena MENSAJE1


LEA DX,Msg1
INT 21H

CALL saltar
;-------------------Leer Primer numero--------------------
mov Ah,01h ; Lectura del primer Valor
int 21h

sub Al,30h ; Ajuste de caracter a numero( resto 30H (48Dec) para obtener el
numero )

mov Bl,Al ; Pasamos el contenido de AL a BL

;-------------------Leer segundo numero--------------------


CALL saltar ;la instruccion CALL realiza un salto a una subrutina con retorno

MOV AH,09H
LEA DX,Msg2 ;Visualización de la cadena MENSAJE2
INT 21H

; lectura del segundo valor


mov Ah,01h
int 21h

sub Al,30h ; Ajuste de caracter a numero( resto 30H (48Dec) para obtener el
numero )

mov Cl,Al ; Pasamos el contenido de AL a CL


Practicas*

CALL saltar

MOV AH,09H
LEA DX,Msg3 ;VisualizaciOn de la cadena MENSAJE3
INT 21H

add Bl,Cl ; Realizamos la suma


add Bl,30h ; Convertimos resultado a ASCII

mov DX,BX ; Copiamos BX a DX para presentar en pantalla


mov ah,02h ;Muestra en pantalla el valor( Int 02h es para mostrar caracter)

int 21h

call pregunta

;.......................................... RESTA.......................................
Restar:

CALL saltar

MOV AH,09H ;Visualización de la cadena MENSAJE1


LEA DX,Msg1
INT 21H

;-------------------Leer Primer numero--------------------


mov Ah,01h ; Lectura del primer Valor
int 21h

sub Al,30h ; Ajuste de caracter a numero( resto 30H (48Dec) para obtener el
numero )

mov Bl,Al ; Pasamos el contenido de AL a BL

;-------------------Leer segundo numero--------------------


CALL saltar ;la instruccion CALL realiza un salto a una subrutina con retorno

MOV AH,09H
LEA DX,Msg2 ;Visualización de la cadena MENSAJE2
INT 21H

; lectura del segundo valor


mov Ah,01h
Practicas*

int 21h

sub Al,30h ; Ajuste de caracter a numero( resto 30H (48Dec) para obtener el
numero )
mov Cl,Al ; Pasamos el contenido de AL a CL

CMP BL,CL ; AQUI HACE LA COMPARACION


JL Restar

CALL saltar

MOV AH,09H
LEA DX,Msg3 ;VisualizaciOn de la cadena MENSAJE3
INT 21H

sub Bl,Cl ; Realizamos la suma


add Bl,30h ; Convertimos resultado a ASCII

mov DX,BX ; Copiamos BX a DX para presentar en pantalla


mov ah,02h ;Muestra en pantalla el valor( Int 02h es para mostrar caracter)

int 21h

call pregunta

;;;;;;;;;;;;;;;;;;;;;;pregunta;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Pregunta:

lea dx, Preg


mov ah,09
int 21h

mov ah,08
int 21h

cmp al,'s'

lea dx, line


mov ah,9
int 21h
Practicas*

int 21h

jne Salir
jmp Empezar
;:::::::::::::::::::::::::::.SALIDA:::::::::::::::::::::::::::::::::::::::

Salir proc
mov ah,4ch
int 21h

salir endp

saltar PROC ;PROC-ENDP permite dar nombre a una subrutina, marcando con
claridad su inicio y su fin

MOV AH,09H
LEA DX,M
INT 21H

RET
saltar ENDP

END INICIO

Practicas*
Programa que permita solicitar un valor "N" al usuario 0<=n<=6.Leido ese
dato, sumar esa "N" cantidad de dígitos leídos desde el teclado

.MODEL SMALL ; Modelo de memoria es small


.STACK
.DATA

M DB ' ',10,13,'$' ;espacio del salto


M1 db "Introduce un numero 0 < n <= 6 $"
M2 db "Introduce un numero: $"
M3 db "El resultado es: $"
conta db ?
.CODE

INICIO:

mov ax,data
mov ds,ax

;-------------------Leer el Num--------------------
leer:
mov ah,09h ;VisualizaciOn de la cadena M1
mov dx, offset M1 ; OFFSET( Regresa el desplazamiento del operando)
int 21h

CALL saltar;la instruccion CALL realiza un salto a una subrutina con retorno

mov ah,01h ; Lectura del numero


int 21h
sub al,30h ; Ajuste de caracter a numero
mov bh,al
cmp al,0
jge compara_2 ;JGE (Salta si es mas grande o igual o salta si no es menor que)
jmp leer ;JMP (desviar el flujo de un programa sin tomar en cuenta las condiciones
actuales de las banderas ni de los datos.)

compara_2:
cmp bh,6
jle leer_numeros ;JLE (salto condicional)
jmp leer
Practicas*

CALL saltar;la instruccion CALL realiza un salto a una subrutina con retorno

leer_numeros:
mov ch, bh ; guardad el valor "n" leido, en ch
CALL saltar; call

lectura_suma:
CALL saltar;call

mov ah,09h ;VisualizaciOn de la cadena M2


lea dx,M2
int 21h
CALL saltar; CALL
mov ah,01h ; Lectura del primer valor
int 21h

sub al,30h ; Ajuste de caracter a numero


add conta, al
dec ch
cmp ch,0
je imprime_resul ;JE(Salta si es igual o salta si es cero)
jmp lectura_suma

imprime_resul:
call saltar
mov ah,09h ;VisualizaciOn de la cadena M3
mov dx,offset M3
int 21h

mov dl, conta


add dl,30h

mov ah,02H ;Sale caracter


int 21h
mov ax,4c00h; (4c00h)rutina finalizara el programa
int 21h

Salir:
mov ah,4ch
int 21h

saltar PROC ;PROC-ENDP permite dar nombre a una subrutina, marcando con
claridad su inicio y su fin

MOV AH,09H
LEA DX,M
Practicas*

INT 21H

RET
saltar ENDP

end inicio

Вам также может понравиться