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

A. Elaborar un programa que permita ingresar por teclado 10 n�meros.

Verificar
cuantos de los numero ingresados son n�meros m�ltiplos de 3.
B. Elaborar un programa que permita ingresar por teclado 10 n�meros. Verificar
cuantos de los numero ingresados son n�meros primos y m�ltiplos de 3.
C. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total y verificar si la suma supera 20. Mostrar los resultados en ambos casos
con un mensaje.
D. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total, promedio y verificar si dicho promedio es m�nimo 7.
E. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros mayores a 5.
F. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros mayores a 5.
G. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros pares mayores a 5.
H. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros impares mayores a 5.
I. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros pares menores a 5.
J. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total de los n�meros impares menores a 5.
K. Elaborar un programa que permita ingresar por teclado 10 n�meros. Calcular la
suma total, de los n�meros menores a 5.
L. Elaborar un programa que permita generar la siguiente serie: X = 1 / 1 + 1 / 2 +
1 / 3 + 1 / 4 + 1 / 5 + 1 / 6 + 1 / 7 + 1 / 8 + 1 / 9
M. Elaborar un programa que permita generar la siguiente serie: X = 10, 9, 8, 7, 6,
5, 4, 3, 2, 1, 0
N. Elaborar un programa que permita generar la siguiente serie: X = 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10
�. Elaborar un programa que permita generar la siguiente serie: X = 2 / 1 + 4 / 2 +
6 / 3 + 8 / 4 + 10 / 5 + 12 / 6 + 14 / 7 + 16 / 8 + 18 / 9
O. Elaborar un programa que permita generar la siguiente serie: X = 2 / 3 + 4 / 6 +
6 / 9 + 8 / 12 + 10 /1 5 + 12 / 18 + 14 / 21 + 16 / 24 + 18 / 27
P. Elaborar un programa que permita generar los primeros 12 t�rminos de la tabla de
multiplicar del 4. Ejemplo: 4 x 1 = 4 � 4 x 12 = 48
Q. Elaborar un programa que permita generar los primeros 12 t�rminos de la tabla de
multiplicar del 3. Ejemplo: 3 x 1 = 3 � 3 x 12 = 36
CUENTA CARACTERES
Hola bueno. Primero no se me da muy bien el asm, pero te dejo esto. Ojala te
funcione. Si no te vas me avisas y le echo un vistazo

model small
.stack 64h
.data

cadena1 db 50 dup(' '),'$'; llena las cadenas con espacio

msj1 db 'El numero de caracteres es:$'


msj2 db 'Hola este programa cuenta caracteres de la cadena: $'

.code
.startup

mov ah,06h ; peticion de recorrido de la pantalla


mov al,00h ; indica la pantalla completa
mov bh,17h ; attributos de color y fondo 7 blanco 0 negro
mov cx,0000h ; esquina superior izquierda renglon columna
mov dx,184fh ; esquina inferior derecha renglon columna
int 10h ; llamada a la interrupcion de video BIOS
mov ah,02
mov dx,0402h
mov bh,00
int 10h

mov ah,09 ; Escribir cadena


mov dx,offset msj2
int 21h

mov bx,0000h
lea SI,cadena1 ; llena a SI con la direccion del primer caracter de la cadena1
mov cx,50 ; inicio el registro del contador en 10
regresa:
mov ah,07h ; Recoje por teclado un carater y lo coloca en AL sin eco
int 21h ; ejecuta la funcion del DOS
cmp al,13 ; Compara al con enter
je termina ; salta solo si la tecla oprimida es enter
mov [SI],al; copia el contenido de AL en el registro cuya direccion es igual al
contenido de SI
inc SI ; Incrementa en 1 el contenido de SI
inc bx
mov dl,al ; compia el contenido de dl en al
mov ah,02h ; Funcion de mostrar por pantalla el contenido de dl
int 21h ; ejecuta la funcion del DOS
loop regresa ; En contenido de CX disminuye en 1 y salta a regresa

termina:

mov al,bl
and ax,000fh
and bx,00f0h
shr bx,01
mov ah,bl
cmp al,0ah
jb dejar
daa
inc ah

dejar:
mov bl,al
mov al,ah
cmp al,0ah
jb decena
daa
mov dx,31h

decena:
mov bh,al
and bx,0f0fh
or bx,3030h
mov cx,bx

mov ah,02
mov dx,0702h
mov bh,00
int 10h
mov ah,09 ; Escribir cadena
mov dx,offset msj1
int 21h

mov ah,02
mov dx,071eh
mov bh,00
int 10h

mov dl,ch
mov dh,cl

mov ah,02
mov cx,01
int 21h
mov ch,dh
mov dl,ch
int 21h

.exit

Primer programa para entender como utilizar los registros:

ORG 100h
mov ax, 10 ;AX=10
mov bx, 00F9h ;BX=0xF9
inc bx ;BX++
add ax, 4 ;AX=AX+4
mov cx,45 ;CX=45
sub cx,cx ;CX=CX-CX
ret
Utilizar Loop:

ORG 100h
MOV CX, 5
MOV BX, 1
MOV DL, 2
comienzo:
MOV AX, BX
MUL DX
MOV BX, AX
LOOP comienzo
RET
Potencia:

name "potencia" ;8 chars DOS


org 100h ;counter to 100h
mov cx, num2
mov ax, num1
inicio:
mov bx,num1
mul bx ;ax = ax * bx
loop inicio ;c--

mov num3,ax ;copiamos el resultado


ret
;Variables "db" para byte y "dw" para word
num1 dw 0Ah
num2 dw 03h
num3 dw 0h
Raiz cuadrada:

org 100h
siguiente:
inc r
mov ax, r
mul ax
cmp ax, m
jbe siguiente ;(r*r) MENOR O IGUAL a m
dec r
ret

;Variables
m dw 146
r dw 0 ;Al final debe ser r=sqrt(m).
Arreglos:

name "arreglo"
org 100h
;un areglo se puede acceder a travez de []
mov cx, 9 ;cuantos elementos voy a recorrer, empezamos con el 9
inicio:
mov si, cx
mov dl, v[si]
cmp dl, mayor
jng siguiente:
mov mayor,dl
siguiente:
loop inicio
ret
v db 1,32,64,32,98,12,5,21,91,38
mayor db 0
Saber si un numero es mayor:

name "mayor"

mov AX, 5
mov BX, 5
;mov DX, AX

;CX el valor m�s grande entre AX Y BX


;AX-BX mayor a 0
sub AX,BX
js A_MENOR_B
mov CX,AX
jmp FIN
A_MENOR_B:
mov CX,BX
FIN:

;mov AX,DX
ret
Multiplicacion:

ORG 100h
MOV AL, 200 ; AL = 0C8h
MOV BL, 4
MUL BL ; AX = 0320h (800)

RET
Interrupciones (Ejemplo de 21h):

name "int01"
org 100h
mov ah, 1 ;Leer un caracter de la entrada estandar
int 21h ;Llamada al sistema operativo (DOS)
mov tecla, al
mov ah, 2 ;imprime un simbolo a la consola
mov dl, simbolo ;el caracter a mostrar, en este caso la E
int 21h ;Llamada al DOS

inc tecla
mov ah, 7 ;NO imprime un simbolo a la consola
mov dl, tecla ;
int 21h ;Llamada al DOS

ret
;Variables
tecla db 0
simbolo db 45H
;ah que queres hacer
;ah = 1 guarda caracter en al
;ah = 2 escribe un caracter en la consola. El ascii del cacacter a imprimir se pone
el dl
;AH = 7 es igual a el ah=2 pero el resultado no se ve en pantalla
;ah = 9 imprime una cadena en la consola. Considera el caracter $ como fin de
cadena.
;La direccion de la cadena se expresa en DX
Cadenas:

org 100h
mov msg[2], 34H
mov dx, offset msg
mov ah, 9
int 21h
ret
msg db "hello world $"

Cambiar a may�sculas:

name "int02"
ORG 100H
lectura:
mov ah,7
int 21h

mov tecla, al
cmp al,13
jz fin:
cmp tecla, 122 ;si tecla es mayor a 122 entonces ir a fin3 (tecla > 122)
ja fin3
cmp tecla,96 ;si tecla no es mayor a 96 ir a fin3 (tecla <= 96)
jng fin3
sub tecla, 32 ;si es 'a' hasta 'z' entonces restarle 32
fin3:
mov ah,2
mov dl,tecla
int 21h
jmp lectura
fin:
ret
tecla db 0

Procedimientos:

org 100h
mov bx, 5h
mov ax, 10h
call inicializar
inc ax
ret
inicializar PROC
MOV ax, 1234h
ret
inicializar ENDP
///////////////////////////////////
nclude andres.h
INCLUDE ISC.H
RC EQU 10
LONG EQU 10

.MODEL SMALL
.STACK
.DATA

msg10 db �Menu� Escoja una opcion.�,�$�


msg11 db �a) Adicion�,�$�
msg12 db �b) Sustraccion�,�$�
msg13 db �c) Multiplicacion�,�$�
msg14 db �d) Divicion�,�$�
msg15 db �e) Potencia�,�$�
msg50 db �s) Salir�,�$�
msg60 db �v) Volver a realizar operacion con nuevos numeros.�,�$�
msg16 db �Opcion: �,�$�
msg17 db �Primer cifra: �,�$�
msg18 db �Segunda cifra: �,�$�
msg100 db �Resultado: �,�$�
opcion db 1 dup (� �)

error1 db �Opcion no valida vuelve a elegir opcion.�,�$�


error2 db �Debe elegir solo digitos (0,�,9).�,�$�
error3 db �Debe presionar enter.�,�$�

MSJ1 DB �ESCRIBE EL PRIMER NUMERO : �,�$�


MSJ2 DB �ESCRIBE EL SEGUNDO NUMERO : �,�$�
NUM1 DB 10 DUP (0)
NUM2 DB 10 DUP (0)
NUM1AUX DB 10 DUP (0)
NUM2AUX DB 10 DUP (0)
CONTROL1 DB 0
CONTROL2 DB 0
residuo dw 0
CUCO1 DW 0
CUCO2 DW 0
DIEZ DW 1
DIEZ1 DW 1
NUM1BIN DW 10 dup (0)
NUM2BIN DW 10 dup (0)
SUMABIN DW 10 dup (0)
RESULTSUM DB 10 DUP(� �)
.CODE
;����������������������-
;����������������������-
proc muestraMenu far
fondo

ir 7,10
vermsg msg10

prin:
ir 9,10
vermsg msg11
ir 10,10
vermsg msg12
ir 11,10
vermsg msg13
ir 12,10
vermsg msg14
ir 13,10
vermsg msg15
ir 15,10
vermsg msg16

capcharv

mov opcion,al

cmp al,97
je cap
cmp al,98
je cap
cmp al,99
je cap
cmp al,100
je cap
cmp al,101
je cap

er1:
fondo
ir 4,20
vermsg error1
jmp prin
cap:
ret
endp
;���������-NUMERO 1����������-
;����������������������-
;����������������������-
numerouno proc far
IRXY 8,10
VERMSJ MSJ1

MOV BX,0
CICLO1:
PONERCAR 8
SIGUE1:
CAPCAR
;�������VALIDACION���
CMP AL,13
JE ORDENAR
CMP AL,30H
JL CICLO1
CMP AL,39H
JA CICLO1
;����VALIDACION SUPERADA Y GUARDANDO���
MOV NUM1AUX[BX],AL
INC BX
INC CONTROL1
INC CUCO1
CMP CONTROL1,10
JNE SIGUE1
;�����-ORDENANDO��
ORDENAR:
MOV AX,CUCO1
MOV BX,LONG
SUB BX,AX

MOV SI,0
CICLO2:
MOV CL,NUM1AUX[SI]
MOV NUM1[BX],CL
INC SI
INC BX
CMP BX,10
JNE CICLO2

ret
endp
;���������-NUMERO 2����������-
numerodos proc far

IRXY 9,10
VERMSJ MSJ2

MOV BX,0
CICLO3:
PONERCAR 8
SIGUE2:
CAPCAR
;�������VALIDACION���
CMP AL,13
JE ORDENAR1
CMP AL,30H
JL CICLO3
CMP AL,39H
JA CICLO3
;����VALIDACION SUPERADA Y GUARDANDO���
MOV NUM2AUX[BX],AL
INC BX
INC CONTROL2
INC CUCO2
CMP CONTROL2,10
JNE SIGUE2
;�����-ORDENANDO��
ORDENAR1:
MOV AX,CUCO2
MOV BX,LONG
SUB BX,AX

MOV SI,0
CICLO4:
MOV CL,NUM2AUX[SI]
MOV NUM2[BX],CL
INC SI
INC BX
CMP BX,10
JNE CICLO4

ret
endp
;�����MOSTRAR CAPTURA������-
;������������������
;������������������

QUITARCERO PROC FAR

MOV BX,0
CICLO5:
MOV AL,NUM1[BX]
AND AL,00001111B
MOV NUM1[BX],AL
MOV CL,NUM2[BX]
AND CL,00001111B
MOV NUM2[BX],CL
INC BX
CMP BX,10
JNE CICLO5
RET
ENDP
;������������������
;������������������
convert1 proc far
MOV AX,0
MOV BX,10
MOV CX,10
LEA SI,NUM1+9
MARCA:
MOV AL,[SI]
AND AX,000FH
MUL DIEZ
ADD NUM1BIN,AX
MOV AX,DIEZ
MUL BX
MOV DIEZ,AX
DEC SI
LOOP MARCA
RET
ENDP
;������������������
convert2 proc far
MOV AX,0
MOV BX,10
MOV CX,10
LEA SI,NUM2+9
MARCA1:
MOV AL,[SI]
AND AX,000FH
MUL DIEZ1
ADD NUM2BIN,AX
MOV AX,DIEZ1
MUL BX
MOV DIEZ1,AX
DEC SI
LOOP MARCA1
RET
ENDP
;������������������

SUMA MACRO a,b,total


PUSH AX
MOV AX,a
ADD AX,b
MOV total,AX
POP AX
ENDM
;������������������
RESTA MACRO a,b,total
PUSH AX
MOV AX,a
SUB AX,b
MOV total,AX
POP AX
ENDM
;������������������
convbinascii proc far

MOV CX, 0010


LEA SI, RESULTSUM+9
MOV AX, SUMABIN

CICLO6:
CMP AX,CX
JB CICLO7
XOR DX,DX
DIV CX
OR DL,30H
MOV [SI],DL
DEC SI
JMP CICLO6

CICLO7:
OR AL,30H
MOV [SI],AL
; mov resultsum,[si]
ret
endp
;������������������
;������������������
multi proc far
MOV Ax,num1bin
MUL num2bin
MOV sumabin,ax
RET
endp
;������������������
;������������������
divide proc far
mov ax,num1bin
mov residuo,ax
mov bx,num2bin
mov si,0
ciclo35:
cmp residuo,bx
jb termina1
PUSH AX
MOV AX,residuo
SUB AX,num2bin
MOV residuo,AX
inc si
POP AX
jmp ciclo35
termina1:
mov sumabin,si
ret
endp
;������������������
;������������������
potencia proc far
mov ax,0001h
mov sumabin,ax
mov di,0
ciclo40:
cmp di,num2bin
je termina2
MOV Ax,num1bin
MUL sumabin
MOV sumabin,ax
inc di
jmp ciclo40
termina2:
RET
endp
;������������������
;������������������
proceso1 proc far

cmp opcion,97
je adicion
cmp opcion,98
je sustraccion
cmp opcion,99
je multiplicacion
cmp opcion,100
je division
cmp opcion,101
je elevar

adicion:
suma num1bin,num2bin,sumabin
jmp hecho

sustraccion:
resta num1bin,num2bin,sumabin
jmp hecho

multiplicacion:
call multi
jmp hecho

division:
call divide
jmp hecho

elevar:
call potencia
jmp hecho

hecho:

ret
endp
;������������������
;������������������
proceso2 proc far

CALL CONVBINASCII

IRXY 11,10
vermsg msg100
MOSTRARCAPTURA 10,resultsum

ir 22,10
vermsg msg50
ir 23,10
vermsg msg60

ir 15,10
capcharv
mov opcion,al
ret
endp
;������������������
;������������������
limpiar proc far
mov di,0
cic:
mov sumabin[di],0
mov resultsum[di],0
inc di
cmp di,10
jne cic
ret
endp
;������������������
;������������������
;�����������������
INICIO
comien:
call muestraMenu

cmp opcion,115
je saldeaqui

PANTALLA AZULBLANCO
CALL NUMEROUNO
CALL NUMERODOS
CALL CONVERT1
CALL CONVERT2

regresa:

call proceso1

call proceso2

cmp opcion,118
je comien
cmp opcion,115
jne regresa

IRXY 24,10
saldeaqui:
FIN

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