Академический Документы
Профессиональный Документы
Культура Документы
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
.code
.startup
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
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:
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
;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
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������-
;������������������
;������������������
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
;������������������
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