Mostrando entradas con la etiqueta interfaz. Mostrar todas las entradas
Mostrando entradas con la etiqueta interfaz. Mostrar todas las entradas
miércoles, 11 de marzo de 2020
jueves, 20 de febrero de 2020
martes, 28 de enero de 2020
martes, 10 de septiembre de 2019
martes, 3 de septiembre de 2019
Hola Mundo en Arduino por pin 13
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13,LOW);
delay(2000);
}
NOTA.- IMPORTANTE CHECAR EL PUERTO COM EN ADMINISTRADOR DE DISPOSITIVOS,
EN LA OPCIÓN DE HERRAMIENTAS MARCAR CON CHECK BOARD GENUINO/UNO
lunes, 26 de agosto de 2019
Videos Turoriales de Arduino:
13 video Tutoriales:
https://www.youtube.com/watch?v=Kgz0vD1vSxY&t=3s ---- video 1 - que es? y partes de Arduino
https://www.youtube.com/watch?v=bwkHUXa9HWM ------ video 2, Hola mundo! en Arduino
jueves, 7 de marzo de 2019
Ciclos Condicionales:
Mejorar el siguiente Codigo, puede usar la libreria 'emu8086.inc' y que diga
si la palabra no contiene la cadena
http://jbwyatt.com/253/emu/asm_tutorial_07.html (Estructuras condicionales Loop y saltos)
si la palabra no contiene la cadena
http://jbwyatt.com/253/emu/asm_tutorial_07.html (Estructuras condicionales Loop y saltos)
org 100h
include 'emu8086.inc'
mov si, 0 ;ponemos si en 0
comienzo:
mov al, msg2[0] ;copiar la primera letra de la palabra A al
cmp msg[si],"$" ;si es el fin de la cadena mandar a final
jz final ; brinca si es igual
cmp msg[si], al ;comparar si encuentra la primera letra de la cadena
jne seguir ;brica si es diferente
mov di, 1 ;poner en 1 di
comprobar:
mov al, msg2[di]
mov bx, di
cmp msg[si+bx], al ;posicion de la letra coincidente + di, comparar con la cadena
jne seguir ;si no coincide mandar a seguir
inc di ;incrementar di para seguir recorriendo cadena
cmp msg2[di],"$" ;si es el fin de la cadena y el programa llego
jz resultado ;aca quiere decir que la cadena es parte de la palabra
loop comprobar ;bucle para recorrer cadena
seguir:
inc si ;para seguir recorriendo la palabra
loop comienzo ;bucle principal para recorrer palabra
resultado:
mov dx, offset msg3 ;copiar msg3 a dx
mov ah, 9 ;preparar ah con 9 para la interrupcion 21h
int 21h ;mostrar contenido en dx
final:
ret
msg db "tecnologico$"
msg2 db "tec$"
msg3 db "Si se encuentra$"
martes, 19 de febrero de 2019
1.7 PROCESO DE ENSAMBLADO Y LIGADO
1.7 PROCESO DE ENSAMBLADO Y LIGADO
Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador que no es más que un programa que “traduce” el programa fuente a un programa objeto. Y tercero un enlazador o linker , que genere el programa ejecutable a partir del programa objeto.
lunes, 18 de febrero de 2019
Div ejemplo1
aqui va el codigo
ORG 100h
call inicializar
call divaxbx
hlt;terminar proceso
inicializar:
mov ax,9
mov bx,9
ret
divtaxbx:
div bx
ret
Mult Eejemplo1
ORG 100h
call inicializar
call multaxbx
hlt;terminar proceso
inicializar:
mov ax,8
mov bx,9
ret
multaxbx:
mul bx
ret
miércoles, 13 de febrero de 2019
Mult Ejemplo 2
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definición de datos(variables), donde se almacenara información
.code
chr1 db ? ;primer digito
chr2 db ? ;segundo digito
chr3 db ? ;multiplo
chr4 db ?
r1 db ? ;resultado 1
r2 db ? ;resultado 2
r3 db ?
r4 db ?
ac db 0 ;acarreo
ac1 db 0
.startup
;cls
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read) Guarda en AL
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read) Guarda en AL
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character) Guarda en AL
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,01h ;Function(Read character) Guarda en AL
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr4,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
mov al,chr4 ;unidad del segundo numero
mov bl,chr2 ;unidad del primer numero
mul bl ;multiplicar
mov ah,0 ;limpiamos ah0
aam ;separamos de hex a dec
mov ac1,ah ;decenas del primera multiplicacion
mov r4,al ;unidades del primera multiplicacion
mov al,chr4 ;unidades del segundo numero
mov bl,chr1 ;decentas del primer numero
mul bl ;multiplicar
mov r3,al ;movemos el resultado de la operacion a r3
mov bl,ac1 ;movemos el acarreo a bl
add r3,bl ;sumamos resultado mas acarreo
mov ah,00h ;limpiamos ah por residuos
mov al,r3 ;movemos el resultado de la suma a al
aam ;separamos de hex a dec
mov r3,al ;guardamos unidades en r3
mov ac1,ah ;guardamos decenas en ac1
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
;suma final
;R4 resulta ser las unidades de mul y no se toma en cuenta ya que se pasa entero
mov ax,0000h ;limpiamos ax
mov al,r3 ;movemos el segundo resultado de la primera mult a al
mov bl,r2 ;movemos primer resultado de la segunda mult a bl
add al,bl ;sumamos
mov ah,00h ;limpiamos ah
aam ;separamos hex a dec
mov r3,al ;r3 guarda las decenas del resultado final
mov r2,ah ;r2 se utiliza como nuevo acarreo
mov ax,0000h ;''''
mov al,ac1 ;movemos el acarreo de la primera mult a al
mov bl,r1 ;movemos segundo resultado de la segunda mult a bl
add al,r2 ;sumamos el nuevo acarreo de la suma anterior a al
add al,bl ;sumamos al a bl
mov ah,00h ;limpiamos el registro ah
aam ;separamos de hex a dec
mov r1,al ;r1 guarda las centenas
mov r2,ah ;ah se sigue utilizando como acarreo
mov al,r2 ;movemos el acarreo a al
mov bl,ac ;movemos ac a bl
add al,bl ;sumamos al a bl
;aam ;separamos hex a dec
mov ac,al ;mov al a ac como nuestro acarreo final
;Mostramos resultado
mov ah,02h
mov dl,ac
add dl,30h
int 21h ;Mostramos ac (millar)
mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos r1 (centena)
mov ah,02H
mov dl,r3
add dl,30h
int 21h ;Mostramos r3 (decena)
mov ah,02H
mov dl,r4
add dl,30h
int 21h ;unidad
.exit
end
jueves, 4 de octubre de 2018
Uso de Loop:
.model small
.stack 64
datos segment
mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
repetir db 13,10,"Repitiendo el ciclo $"
datos ends
codigo segment
assume cs:codigo, ds:datos
inicio:
mov ax, datos
mov ds, ax
mov ah, 09
lea dx, mensaje
int 21h
mov ah, 01
int 21h
sub al, 30h
mov cl, al
ciclo:
mov ah, 09
lea dx, repetir
int 21h
loop ciclo
mov ax,4c00h
int 21h
codigo ends
end inicio
.model small
.stack 64
.data
mensaje db "Ingresa el numero de veces que se repetira el mensaje (1-9)",13,10,'$'
repetir db 13,10,"Repitiendo el ciclo $"
.code
inicio proc far
mov ax, @data
mov ds, ax
mov ah, 09
lea dx, mensaje
int 21h
mov ah, 01
int 21h
sub al, 30h
mov cl, al
ciclo:
mov ah, 09
lea dx, repetir
int 21h
loop ciclo
mov ax,4c00h
int 21h
inicio endp
end
;Ejercicio loop con numeros:
org 100h
.data
mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
.code
inicio:
mov ax,@data
mov ds, ax
mov dx,offset mensaje
mov ah,09h
int 21h
MOV DL, "0";se transfiere el caracter 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 26 interaciones
MOV AH, 02;se transifiere 02 al acumulador de byte alto
INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas
ret
;Ejercicio loop con numeros:
org 100h
.data
mensaje db "Programa que utiliza loop e imprime del 0 al 9",13,10,"$"
.code
inicio:
mov ax,@data
mov ds, ax
mov ah,09h
mov dx,offset mensaje
int 21h
MOV DL, "0";se transfiere el caracter 0 al registro de datos en el byte bajo
MOV CX, 10;se transfiere 10 al registro contador
PRINT_LOOP:;va a imprimir hasta acabar las 10 interaciones
MOV AH, 02;se transifiere 02 al acumulador de byte alto
INT 21h; se realiza la interrupcion del dato ascii leido desde el teclado
INC DL;siguiente caracter numerico
LOOP PRINT_LOOP;continua hasta acabar las 10 vueltas
ret
.model small
.stack 64
.data
n1 db 0
n2 db 0
suma db 0
msg1 db "Dame el primer valor: ",'$'
msg2 db 10,13,"Dame el segundo valor: ",'$'
msg3 db 10,13,"suma= ",'$'
.code
begin proc far
;Direccionamiento al segmento de datos
mov ax, @data
mov ds, ax
;Solicitamos el primer digito
mov ah,09
lea dx, msg1
int 21h
;se lee el primer valor
mov ah, 01
int 21h
sub al, 30h ;Convvierte el caracter a numero
mov n1, al
;Solicitamos el segundo digito
mov ah, 09
lea dx, msg2
int 21h
mov ah, 01
int 21h
sub al, 30h ;convierte el caracter
mov n2, al
;operacion de suma
mov al, n1
add al, n2
add al, 30h
mov suma, al
mov ah, 09
lea dx, msg3
int 21h
;Se imprime el caracter con el servicio 02 de la int 21h
mov ah, 02
mov dl, suma
int 21h
mov ah, 4ch
int 21h
Begin endp
end
org 100h .model small .stack 64 .data mensaje db 10,13 ,"Dame un numero",10,13,"$" mensaje2 db 10,13 ,"Dame un la potencia",10,13,"$" n1 db 0 n2 db 0 n3 db 0 .code inicio: ;función inicio mov ax,@data ;Movemos el segmento data a ax mov ds,ax ; Movemos lo que esta en ax a ds mov dx,offset mensaje ;Imprimimos el primer mensaje parte 1 mov ah, 09h ;Imprimimos el primer mensaje parte 2 int 21h ;Imprimimos el primer mensaje parte 3 mov ah,01 ;pausa y espera a que el usuario presione una tecla int 21h ;interrupción para capturar sub al,30h ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero mov n1,al ;Movemos lo que esta en al a la variable n1 mov n3,al ;Movemos lo que esta en al a la variable n3 mov ah, 09h ;imprimimos el mensaje 2 parte 1 mov dx,offset mensaje2 ;imprimimos el mensaje 2 parte 2 int 21h ;imprimimos el mensaje 2 parte 3 mov ah,01 ;pausa y espera a que el usuario presione una tecla int 21h ;interrupcion para capturar sub al,30h ;lo que el usuario presiono se guarda en al y se le resta 30h para convertirlo a un numero mov n2,al ;Guardamos lo que el usuario preciono el n2 mov cl,al ; movemos lo que esta en al a cl para decirle al ciclo cuantas vueltas va a dar sub cl,1 ;le restamos 1 para que no de una vuelta de mas call ciclo ;llamada a ciclo ciclo: ;Funcion call ciclo1 ;llamada el procediemto 1 ciclo1 proc near : ;procedimiento ciclo mov al,n1 ;potencia parte 1 mov bh,n3 ;potencia parte 2 mul bh ;potencia parte 3 mov n1,al loop ciclo1 ;loop a la funcion ciclo mov ax,4c00h ;fin parte 1 int 21h; fin parte 2 fin: ;funcion fin mov ax,4c00h ;funcion que termina el programa int 21h end inicio
miércoles, 19 de septiembre de 2018
martes, 8 de mayo de 2018
Progroma Ensamblador con macro:
bucle1 macro tama,x,y
mov CX, tama
BUCLE:
MOV DX, SI
ADD DX, x
MOV DH, y
coloca ;este es el macro para colocar en la posicion la letra
;se guarda letra por letra
MOV AL, [SI+OFFSET TITULO]
;guarda color por color
MOV BL, [SI+OFFSET COLORES]
color ;este es el macro que selecciona un color
INC SI
LOOPNZ BUCLE
endm
color macro ;macro que selecciona el color
MOV AH, 9
INT BIOS
endm
coloca macro;macro que selecciona una posicion
MOV AH, 2
INT BIOS
endm
.STACK 64
.MODEL SMALL
CR EQU 13
LF EQU 10
BIOS EQU 10H
DOS EQU 21H
TEXTO EQU 3
FIN EQU 4C00H
.DATA
;ponemos el texto que querramos mostrar
TITULO DB 'Agnax & Alizz Y pedrito',
;aqui va la lista de los colores
;del texto
colores DB 50H
DB 5fH
DB 50H
DB 5fH
DB 50H
DB 00H
DB 0f0H
DB 00h
DB 20H
DB 20H
DB 20H
DB 20H
DB 20H
DB 00H
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
DB 0fH
.CODE
;esta zona es para poner el texto
COLO PROC FAR
MOV AX, @DATA
MOV DS, AX
;Aquí se pone el macro del bucle
bucle1 25,30,12
MOV AH, 8
INT DOS
coloca ;este es el macro para colocar en la posicion la letra
MOV AX, FIN
INT DOS
COLO ENDP
ret
lunes, 12 de marzo de 2018
Aportación de Jonnatan Guzman J. programa de colores en Turbo....
BIOS EQU 10H
DOS EQU 21H
FIN EQU 4C00H
TEXTO EQU 3
PILA SEGMENT STACK
DB 64 DUP('PILA ')
PILA ENDS
DATOS SEGMENT
assume ds:DATOS,SS:PILA,cs:codigo
TITULO DB 'YO Y MI PAREJA '
colores db 5bh
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DATOS ENDS
codigo segment
COLO PROC FAR
mov AX, DATOS
mov ds,ax
mov ax,texto
int bios
mov cx,16
xor si,si
bucle:
push cx
mov dx,si
add dx,35
mov dh,12
call coloca
mov al,[si+offset titulo]
mov bl,[si+offset colores]
call color
pop cx
inc si
loopnz bucle
mov ah,8
int dos
xor dx,dx
call coloca
mov ax,fin
int dos
colo endp
color proc
mov ah,9
xor bh,bh
int bios
ret
color endp
coloca proc
mov ah,2
xor bx,bx
int bios
ret
coloca endp
codigo ends
end colo
DOS EQU 21H
FIN EQU 4C00H
TEXTO EQU 3
PILA SEGMENT STACK
DB 64 DUP('PILA ')
PILA ENDS
DATOS SEGMENT
assume ds:DATOS,SS:PILA,cs:codigo
TITULO DB 'YO Y MI PAREJA '
colores db 5bh
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DB 5FH
DB 5BH
DB 5FH
db 5BH
DATOS ENDS
codigo segment
COLO PROC FAR
mov AX, DATOS
mov ds,ax
mov ax,texto
int bios
mov cx,16
xor si,si
bucle:
push cx
mov dx,si
add dx,35
mov dh,12
call coloca
mov al,[si+offset titulo]
mov bl,[si+offset colores]
call color
pop cx
inc si
loopnz bucle
mov ah,8
int dos
xor dx,dx
call coloca
mov ax,fin
int dos
colo endp
color proc
mov ah,9
xor bh,bh
int bios
ret
color endp
coloca proc
mov ah,2
xor bx,bx
int bios
ret
coloca endp
codigo ends
end colo
Aportación Emmanuel Horta, Lourdes Brito.....programa de colores...
BIOS EQU 10H
DOS EQU 21H
FIN EQU 4C00H
.DATA
TITULO DB 'Agnax & Alizz '
COLORES DB 5BH
DB 5FH
DB 5BH
DB 5FH
DB 5BH
DB 00H
DB 0F0H
DB 00H
DB 09CH
DB 09FH
DB 09CH
DB 09FH
DB 09CH
DB 00H
DB 0CH
.CODE
INICIO PROC NEAR:
MOV AX, @DATA
MOV DS, AX
;Esta parte de aqui no es necesaria
INT BIOS
MOV CX, 15
BUCLE:
;Ponemos esto para no agarrar basura
MOV DX,SI
ADD DX,35 ;columna
MOV DH, 12 ;renglon
CALL COLOCA
MOV AL, [SI+OFFSET TITULO]
MOV BL, [SI+OFFSET COLORES]
CALL COLOR
INC SI
LOOPNZ BUCLE
MOV AH, 0
INT DOS
CALL COLOCA
MOV AX, FIN
INT DOS
COLOR PROC
MOV AH, 9
INT BIOS
RET
COLOCA PROC
MOV AH,2
INT BIOS
RET
END INICIO
DOS EQU 21H
FIN EQU 4C00H
.DATA
TITULO DB 'Agnax & Alizz '
COLORES DB 5BH
DB 5FH
DB 5BH
DB 5FH
DB 5BH
DB 00H
DB 0F0H
DB 00H
DB 09CH
DB 09FH
DB 09CH
DB 09FH
DB 09CH
DB 00H
DB 0CH
.CODE
INICIO PROC NEAR:
MOV AX, @DATA
MOV DS, AX
;Esta parte de aqui no es necesaria
INT BIOS
MOV CX, 15
BUCLE:
;Ponemos esto para no agarrar basura
MOV DX,SI
ADD DX,35 ;columna
MOV DH, 12 ;renglon
CALL COLOCA
MOV AL, [SI+OFFSET TITULO]
MOV BL, [SI+OFFSET COLORES]
CALL COLOR
INC SI
LOOPNZ BUCLE
MOV AH, 0
INT DOS
CALL COLOCA
MOV AX, FIN
INT DOS
COLOR PROC
MOV AH, 9
INT BIOS
RET
COLOCA PROC
MOV AH,2
INT BIOS
RET
END INICIO
Suscribirse a:
Entradas (Atom)