RECIBE.ASM

(Decarga Ejecutable: Recibe.Com)

 

lee32 macro var32m					; Macro que Junta Nibbles
        mov cx,8
        xor eax,eax
        xor ebx,ebx
veces8:
        lee nible
        mov al,nible
        add ebx,eax
        ror ebx,4      
        loop veces8

        mov var32m,ebx
        mov eax,var32m
        mov cx,8
cicloesc32:
         rol eax,4
         mov ebx,eax
         and bl,1111b
         escribec bl
         loop cicloesc32

endm



lee macro nible						; Macro que lee Nibbles
        
        mov si,0408h
	xor ax,ax ;AX = 0
        push ds 
        mov ds,ax 
	mov ax,word ptr [SI] ;AX = [0h:SI]
	pop ds ;recupero DS de la pila ;ahora en AX tengo la dirección base
 
        mov dx,ax
        sub ax,ax
        add dx,1
ciclo:
        in  al,dx
        shr al,3
        xor al,00010000b
        and al,00011111b
        cmp al,10000b
        jne ciclo

        mov ecx,11111111111111111111111111111111b
etiqueta:
        loop etiqueta

        sub dx,1
        out dx,al
        add dx,1
        
ciclo2:
        in al,dx
        shr al,3
        xor al,10000b
        and al,00011111b
        cmp al,10000b
        jge ciclo2
        mov nible,al
        sub dx,1
        mov al,20
        out dx,al
endm

envia macro nible        			; Macro que envia el bit de control

	mov si,0408h
	xor ax,ax ;AX = 0
        push ds 
        mov ds,ax 
	mov ax,word ptr [SI] ;AX = [0h:SI]
        pop ds ;recupero DS de la pila ;ahora en AX tengo la direccion base

        mov dx,ax
        sub ax,ax
        mov al,10000b
        out dx,al
        sub ax,ax
        add dx,1
ciclo:
        in al,dx
        shr al,3
        xor al,10000b
        and al,00011111b
        cmp al,10000b
        jne ciclo

        mov ecx,11111111111111111111111111111111b
etiqueta:
        loop etiqueta

        mov al,nible
        sub dx,1
        out dx,al
        mov ecx,11111111111111111111111111111111b
etiqueta2:
        loop etiqueta2
        mov al,20
        out dx,al

endm

escribec macro car
	mov al,car
        add al,48
	mov bx,0
	mov ah,14
	int 10h
        sub al,48
endm

escritex macro texn

        mov ah,09h
        lea dx,texn
        int 21h
endm        
    
	
												; Programa .COM
codigo segment
.386
        assume cs:codigo,ds:codigo,ss:codigo
        org 100h
begin: jmp programa

car db	64
dbase db 0
dato db 0
nible db 0
tex1 db 'envia$'
tex2 db 'lee$'
var32 dd 0
var16 dw 0
var8 db 0

												; Procedimiento
programa proc far
;codigo
        mov dx,378
        mov al,20
        out dx,al

        lee32 var32


        mov dx,378
        mov al,20
        out dx,al

        ret        
programa endp
codigo ends
        end begin