www.pudn.com > 16bit.rar > PCLAMP.ASM


data segment 
     pb   db ? 
     mess db 'Enter any key can exit to dos!',0dh,0ah,'$' 
data ends 
stack segment stack 
     sta dw 50 dup(?) 
	top equ length sta 
stack ends 
code segment 
     assume cs:code,ds:data,es:data,ss:stack 
start: 
        mov ax,data 
	mov ds,ax 
	mov es,ax 
 
	mov ah,09h        ;是不是初始化8255呢? 
	mov dx,offset mess 
	int 21h 
	mov dx,21bh 
	mov al,82h 
	out dx,al 
	mov dx,219h 
	in al,dx 
	mov pb,al 
	mov dx,21bh 
	mov al,80h 
	out dx,al 
	mov dx,219h 
	mov al,pb 
	or al,0f0h 
	out dx,al  ; turn off yellow 
	mov dx,21ah 
	mov al,0f0h  ;4 red lights 
	out dx,al 
 
	call delay10 
 
 lll:mov al,10100101b ;turn on 1,3 green light 
     mov dx,21ah 
     out dx,al 
      
     call delay10 
     call delay10 
      
     or al,0f0h ; turn off 1,3 green light 
	;从开,关灯的操作看出:21a即C口的低四位控制1-4号灯的开和关 
     out dx,al 
     mov cx,0008h 
 
 ttt:mov dx,219h 
     mov al,pb 
     and al,10101111b ;1,3 yellow light turn on 
     
     out dx,al 
	call delay1 
	or al,01010000b 
	out dx,al ; 1,3 yellow light turn off 
	call delay1 
	loop ttt 
	mov dx,21ah 
	mov al,0f0h 
	out dx,al 
	call delay1 
     mov al,01011010b 
     out dx,al ;   2,4 green   1,3 red 
	call delay10 
	call delay10 
     or al,0f0h ; turn off 2,4 green light 
	out dx,al 
	mov cx,0008h 
 ggg:mov dx,219h 
     mov al,pb 
     and al,01011111b 
     out dx,al   ; turn on 2,4 yellow 
	call delay1 
	or al,10100000b 
	out dx,al  ; turn off 2,4 yellow 
	call delay1 
	loop ggg 
	mov dx,21ah 
	mov al,0f0h 
	out dx,al 
	call delay1 
	mov ah,06h 
	mov dl,0ffh 
	int 21h 
	jnz ppp 
     jmp lll 
 ppp:mov ax,4c00h 
     int 21h 
delay1 proc near 
	push cx 
	mov cx,8000h 
 ccc:loop ccc 
	pop cx 
	ret 
delay1 endp 
delay10 proc near 
     push ax 
     push cx 
	mov cx,0030 
 uuu:call delay1 
     loop uuu 
	pop cx 
	pop ax 
	ret 
delay10 endp 
code ends 
     end start