Академический Документы
Профессиональный Документы
Культура Документы
Educacin
VALENTIN ERICK
1313210073
PROGRAMACION:
;-----------------------------------------------------------------------------;Definicion del segmento de datos
DATOS SEGMENT
pregunta_nombre db "Cual es tu nombre?: "
nombre
db 64 DUP(0)
DATOS ENDS
;Definicion del segmento de pila
PILA SEGMENT STACK "STACK"
db 40h DUP(0)
PILA ENDS
;Definicion del segmento extra
EXTRA SEGMENT
RESULT DW 0,0
EXTRA ENDS
;Definicion del segmento de codigo
CODE SEGMENT
assume cs:code,ds:datos,es:extra,ss:pila
START PROC
;Inicializamos los registros de segmento
mov ax,datos
mov ds,ax
mov ax,pila
mov ss,ax
mov ax,extra
mov es,ax
;Fin de las inicializaciones
;Limpiamos la pantalla
mov ax,0B800h
;En esta direccion comienza la memoria de video
mov es,ax
;Lo cargamos en el segmento extra
xor di,di
;Ponemos DI=0. Esto equivale a mov di,0, pero
;xor di,di consume 3 ciclos de reloj y con mov 4
mov cx,80*25
;El tamao total es 2000 (80 lineas x 25 columnas)
b_clear:
;Mostramos un mensaje
mov si,offset mensaje
mov di,(80*10+10)*2 ;Linea 10, columna 10
mov cx,49
;Tamao del mensaje
b_saludo:
mov al,[si]
mov ah,1bh
mov es:[di],ax
inc si
inc di
inc di
loop b_saludo
mov ax,4C00h
int 21h
;Terminar el programa
START ENDP
CODE ENDS
END START
EJECUTANDO:
PASOS 1-EL ARCHIVO .ASM LO PONES EN C-TASM1.4-TASM
PASO2-LUEGO CUANDO ABRES EL PROGRAMA ESCRIBES: TASM
"NOMBRE DEL ARCHIVO"
LUEGO
PASO3- TLINK "NOMBRE DEL ARCHIVO"
PASO4-POR ULTIMO PARA EJECUTAR ESCRIBES EL NOMBRE DEL ARCHIVO
2) CALCULADORA
PROGRAMACION:
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 2numerodos 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
1)
2)
CONTROLAR UN MOTOR DC
CONTROLADORDE MOTOR DC
org 100h
;;
A EQU 0080H
;; Declarando puerto A
B EQU 0082H
;; Declarando puerto B
C EQU 0084H
;; Declarando puerto C
inicio:
;; Iniciando con el puerto "B"
movdx,B
inal,dx
cmp al,11111111b ;; El digito indica que todos los puertos estan en 1
je inicio ;; Este salto o bucle es para que no realize ninguna accion hasta que
presionemos
cmp al,11111110b ;; Es cuando el pulsador del horario esta presionado
je horario
cmp al,11111101b ;; Es cuando el pulsador del antihorarioesta presionado
jeantihorario
cmp al,11111011b ;; Es cuando el pulsador del stop esta presionado
je stop
;; Ahora definimos las accciones
horario:
movdx,A
mov al,11111110b ;; Mandamos solo 1 pulso al puente H para que gire horario
outdx,al
;; Retardando
nop
nop
nop
nop
;; Para los leds
movdx,C
mov al,10011111b
outdx,al
nop
nop
;; Ahora habilitamos para poder controlar mediante el proceso:
movdx,B
inal,dx
cmp al,11111110b ;; Es cuando presionamos el pulsador del horario
je horario
cmp al,11111011b ;; Es cuando presionamos el pulsador del antihorario
je stop
jmpantihorario ;; Regresamos al bucle para que no cambie la accion mientras no
haya pulsacion
stop
movdx,A
mov al,11111111b ;; Mandamos 1 logicos a las 2 entradas del puente H para que
no haya movimiento
outdx,al
;;Retardando
nop
nop
nop
;; Para los leds
movdx,C
mov al,10011001b
outdx,al
nop
nop
; Habilitando las demas acciones
movdx,B
inal,dx
cmp al,11111110b ;; Es cuando el primer pulsador esta presionado
je horario
cmp al,11111101b ;; Es cuando el segundo pulsador esta presionado
jeantihorario
jmp stop
ret
;;Cabe resaltar que las instrucciones NOP son solo para retardar