Está en la página 1de 2

DATOS SEGMENT

MENSAJE DB "HOLA MUNDO$"


DATOS ENDS
PILA SEGMENT STACK 'STACK'
DB 200 DUP(0) ;
PILA ENDS ;
CODIGO SEGMENT
ASSUME
CS:CODIGO,DS:DATOS,SS:PILA
;ASSUME asocia los registros de
segmentos con sus nombres
;
de segmentos apropiados
PRINCIPAL PROC
MOV AX,DATOS
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MENSAJE
INT 21H
MOV AH,4CH
INT 21H
PRINCIPAL ENDP
CODIGO ENDS
END PRINCIPAL
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TITLE
.MODEL SMALL
.STACK
.DATA
cad1 DB 10,13," UMSA
2013",10,13,"INFORMATICA",10,13,"
$"
.CODE
begin:
MOV AX,@DATA
MOV DS,AX
MOV AH,9
LEA DX,cad1
INT 21H
MOV AH,4CH
INT 21H
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TITLE ma1b.asm (EXE) Imprime
cadenas

;TITLE (Directiva) imprime el titulo


en la linea 2 de cada pagina
CR EQU 13 ;EQU Define un valor
LF EQU 10
PILA SEGMENT PARA STACK 'STACK' ;
SEGMENT (Directiva) para definir un
segmento
DW 32 DUP(0)
PILA ENDS
DATOS SEGMENT PARA 'DATA'
CAD1 DB "HOLA ASSEMBLER $"
CAD2 DB "INFORMATICA 2013$"
DATOS ENDS
CODIGO SEGMENT PARA 'CODE'
BEGIN PROC FAR
ASSUME
SS:PILA,DS:DATOS,CS:CODIGO
;ASSUME (directiva) indica al
ensamblador el proposito de cada
segmento en
;el programa
MOV AX,DATOS
MOV DS,AX
MOV DX,OFFSET CAD1
MOV AH,9
INT 21H
MOV AH,2
MOV DL,CR
INT 21H
MOV DL,LF
INT 21H
MOV DX,OFFSET CAD2
MOV AH,9
INT 21H
MOV AX,4C00H
INT 21H
BEGIN ENDP
CODIGO ENDS
END BEGIN

;;;;;;;;;;;;;;;;;;;;;;;;;;;;, ;PROGRAMA
OBTIENE EL COMPLEMENTO A 2 DE
UN NUMERO
pila segment para stack 'stack'
db 200 dup (0)
pila ends
datos segment para 'data'
var db 40H
datos ends
codigo segment para 'code'
empieza proc far
assume cs: codigo, ds: datos, ss:
pila
mov ax,datos
mov ds,ax
mov al,var
mov dl,al
mov ah,2
int 21
not al
inc al
mov dl,al
mov ah,2
int 21
mov ah,4ch
int 21h
empieza endp
codigo ends

end empieza
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SUMA DOS NUMEROS
.model small
.stack
.data
valor db ?
.code
;.startup
inicio:
mov ah, 01h ;Leer carcter desde el
teclado
int 21h ;Lee primer caracter
sub al, 30h ;Resto 30H (48Dec) para
obtener el numero
mov valor, al ;Lo guardo en variable
valor
mov ah, 01h ;Leer carcter desde el
teclado
int 21h ;Leo el segundo caracter
sub al, 30h ;Resto 30H (48Dec) para
obtener segundo valor
add al, valor ;Realizo la suma de los
dos valores
mov dl, al ;Pongo en dl el nmero a
imprimir
add dl, 30h ;Agrego 30 (48Dec) para
obtener el caracter
mov ah, 02h ;Funcion para imprimir
un carcter en pantalla
int 21h
;.exit
end inicio
end

También podría gustarte