http://www.youtube.com/watch?v=6_3O5k5Cdrg
En el link anterior se puede ver de manera casera la forma de realizar una placa electrónica en tarjeta virgen.
domingo, 31 de marzo de 2013
miércoles, 13 de marzo de 2013
Ejemplo con procedimientos
Este programa realiza la suma de dos números enteros sin signo en el EMU8086. Lo nuevo de este programa es la declaración y llamada a procedimientos.
Los procedimientos se utilizan para reducir las líneas de código principal y hacerlo más legible.
org 100h
jmp start
msg1 db 'digite primer numero: $'
msg2 db 'digite segundo numero: $'
msg3 db 'resultado= $'
salta db 0Dh,0Ah,24h
decenas db ?
unidades db ?
diez db 0ah
;procedimiento leer numero
lee_num proc
mov ah,01h
int 21h
ret
lee_num endp ;fin de procedimiento
;procedimiento saltar linea
saltar proc
mov dx,offset salta ;saltar a la sig linea
mov ah,09h
int 21h
ret
saltar endp ;fin de procedimiento
start:
mov ah,09h ;imprimir primer msg
lea dx,msg1
int 21h
call lee_num
sub al,30h ;hacemos el ajuste de caracter a numero
mov bl,al ;guardar primer numero en bl
call saltar
mov ah,09h ;imprimir segundo msg
lea dx,msg2
int 21h
call lee_num
sub al,30h ;ajustamos el numero
mov cl,al ;copiamos a cl
mov al,bl ;mover el primer numero a al
add al,cl ;sumar los dos numeros
mov ah,0000h ;pone a cero ah
idiv diez ;rutina para realizar la
mov decenas,al ;division y encontrar los
mov unidades,ah ;numeros en decimal
mov dx,0000h
mov ah,00h ;borrar pantalla
mov al,03h
int 10h
mov ah,09h ;imprimir tercer msg
lea dx,msg3 ;resultado = ...
int 21h
add decenas,30h ;imprimir las decenas
mov dl,decenas
mov ah,02h
int 21h
add unidades,30h ;imprimir las unidades
mov dl,unidades
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
miércoles, 6 de marzo de 2013
Suma de dos número enteros sin signo en ensamblador
El programa que se muestra a continuación se ha compilado con el emulador 8086 para Intel. Se trata de sumar dos números enteros sin signo, la idea es que tengan acceso a un programa bastante sencillo y lo mejoren....
org 100h
jmp start
msg1 db 'digite primer numero: $'
msg2 db 'digite segundo numero: $'
msg3 db 'resultado= $'
salta db 0Dh,0Ah,24h
decenas db ?
unidades db ?
diez db 0ah
start:
mov ah,09h ;imprimir primer msg
lea dx,msg1
int 21h
mov ah,01h ;leer primer numero
int 21h
sub al,30h ;hacemos el aguste de caracter a numero
mov bl,al ;guardar primer numero en bl
mov dx,offset salta ;saltar a la sig linea
mov ah,09h
int 21h
mov ah,09h ;imprimir segundo msg
lea dx,msg2
int 21h
mov ah,01h ;leer segundo numero
int 21h
sub al,30h ;ajustamos el numero
mov cl,al ;copiamos a cl
mov al,bl ;mover el primer numero a al
add al,cl ;sumar los dos numeros
mov ah,0000h ;pone a cero ah
idiv diez ;rutina para realizar la
mov decenas,al ;division y encontrar los
mov unidades,ah ;numeros en decimal
mov dx,0000h
mov ah,00h ;borrar pantalla
mov al,03h
int 10h
mov ah,09h ;imprimir tercer msg
lea dx,msg3 ;resultado = ...
int 21h
add decenas,30h ;imprimir las decenas
mov dl,decenas
mov ah,02h
int 21h
add unidades,30h ;imprimir las unidades
mov dl,unidades
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
org 100h
jmp start
msg1 db 'digite primer numero: $'
msg2 db 'digite segundo numero: $'
msg3 db 'resultado= $'
salta db 0Dh,0Ah,24h
decenas db ?
unidades db ?
diez db 0ah
start:
mov ah,09h ;imprimir primer msg
lea dx,msg1
int 21h
mov ah,01h ;leer primer numero
int 21h
sub al,30h ;hacemos el aguste de caracter a numero
mov bl,al ;guardar primer numero en bl
mov dx,offset salta ;saltar a la sig linea
mov ah,09h
int 21h
mov ah,09h ;imprimir segundo msg
lea dx,msg2
int 21h
mov ah,01h ;leer segundo numero
int 21h
sub al,30h ;ajustamos el numero
mov cl,al ;copiamos a cl
mov al,bl ;mover el primer numero a al
add al,cl ;sumar los dos numeros
mov ah,0000h ;pone a cero ah
idiv diez ;rutina para realizar la
mov decenas,al ;division y encontrar los
mov unidades,ah ;numeros en decimal
mov dx,0000h
mov ah,00h ;borrar pantalla
mov al,03h
int 10h
mov ah,09h ;imprimir tercer msg
lea dx,msg3 ;resultado = ...
int 21h
add decenas,30h ;imprimir las decenas
mov dl,decenas
mov ah,02h
int 21h
add unidades,30h ;imprimir las unidades
mov dl,unidades
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
Suscribirse a:
Entradas (Atom)