jueves, 3 de febrero de 2011

Ejemplo de uso de direccionamiento indexado

;*******************************************************
; Esta aplicación captura un texto desde el teclado
; cambia las minúsculas por mayúsculas y presenta
; el texto modificado en pantalla.
;
; Elaborado por Fernando Monrroy
; UAGRM verano de 2011
;*******************************************************
.MODEL small
.STACK 100h

.DATA
invi1 DB 10,13,'Ingrese un texto de hasta 80 caracteres desde el teclado',10,13,'$'
ms1 DB 10,13,'El texto en MAYUSCULAS es:',10,13,'$'
mxLon DB 81
nchr DB ?
txto DB 81 DUP(?)
salto DB 10,13,'$'

.CODE
MOV AX,@DATA
MOV DS,AX
MOV AH,9
LEA DX,invi1
INT 21H
MOV AH,10
LEA DX,mxLon
INT 21H
MOV AH,9
LEA DX,ms1
INT 21H
XOR BH,BH
MOV BL,nchr
MOV AL,'$'
MOV txto[BX],AL
lazo: MOV AL,txto[BX]
CMP AL,'a'
JAE uno
mas: DEC BX
JNE lazo
JMP dos
uno: CMP AL,'z'
JA mas
SUB AL,20h
MOV txto[BX],AL
JMP mas
dos: MOV AH,9
LEA DX,txto
INT 21H
LEA DX,salto
INT 21H
MOV AH,1
INT 21H
MOV AH,4ch
INT 21h
END

martes, 1 de febrero de 2011

Suma y Resta números de una cifra

.MODEL small
.STACK 100h

.DATA
ms1 DB 10,13,'Ingrese un numero de una cifra: $'
ms2 DB 10,13,'La suma es: $'
ms3 DB 10,13,'La diferencia es: $'
ms4 DB 10,13,'$'
m DB ?
n DB ?
s DB ?
d DB ?

.CODE
MOV AX,@DATA
MOV DS,AX
MOV AH,9
LEA DX,ms1
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV m,AL
MOV AH,9
LEA DX,ms1
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV n,AL
MOV AH,9
LEA DX,ms2
INT 21H
MOV AL,m
ADD AL,n
AAM
ADD AX,3030H
MOV BX,AX
MOV AH,2
MOV DL,BH
INT 21H
MOV DL,BL
INT 21H
MOV AH,9
LEA DX,ms3
INT 21H
MOV AL,m
SUB AL,n
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,9
LEA DX,ms4
INT 21H
MOV AH,1
INT 21H

MOV AH,4ch
INT 21h
END

Suma y Resta números de dos cifras

;************************************************************
; Captura dos números de dos cifras, calcula la suma y la
; diferencia y las presenta en pantalla.
; Para obtener resultados correctos debe proporcionarse
; primero el número mayor.
; Utiliza funciones de la int 21h
;
; Elaborado por Fernando Monrroy. 2011
; para el curso de programación ensamblador
;
;************************************************************

.MODEL small
.STACK 100h

.DATA
ms1 DB 10,13,'Ingrese un numero de dos cifras: $'
ms2 DB 10,13,'La suma es: $'
ms3 DB 10,13,'La diferencia es: $'
ms4 DB 10,13,'$'
m DB ?
n DB ?
s DB ?
d DB ?
cien DB 100

.CODE
MOV AX,@DATA
MOV DS,AX
MOV AH,9
LEA DX,ms1
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV m,AL
INT 21H
SUB AL,30H
MOV AH,m
AAD
MOV m,AL
MOV AH,9
LEA DX,ms1
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV n,AL
INT 21H
SUB AL,30H
MOV AH,n
AAD
MOV n,AL

MOV AH,9
LEA DX,ms2
INT 21H
MOV AL,m
ADD AL,n
XOR AH,AH
DIV cien
ADD AL,30H
MOV DL,AL
MOV AL,AH
AAM
ADD AX,3030H
MOV BX,AX
MOV AH,2
INT 21H
MOV DL,BH
INT 21H
MOV DL,BL
INT 21H
MOV AH,9
LEA DX,ms3
INT 21H
MOV AL,m
SUB AL,n
AAM
ADD AX,3030H
MOV BX,AX
MOV AH,2
MOV DL,BH
INT 21H
MOV DL,BL
INT 21H
MOV AH,9
LEA DX,ms4
INT 21H
MOV AH,1
INT 21H

MOV AH,4ch
INT 21h
END