Click to See Complete Forum and Search --> : pc based digital clock via parallel port using assembly language in tasm


maonin
October 15th, 2011, 05:43 AM
hi, i have this project and we already have a code and the circuit but it is not working..
it's supposed to display the hours and minutes
the problems are:
1. the hour display is not displaying anything
2. the minute displays but it is advanced by one minute

so here's the code:
TITLE CLOCK.ASM
DOSSEG
.MODEL SMALL
.STACK 0100H
.DATA
PRINTERPORTBASEADDRESS equ 378h

.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX

CALL RTIME ; READ TIME
CALL DisplayTime ;DISPLAY TIME

MOV AX, 4C00H
INT 21H
MAIN ENDP

RTIME PROC
MOV AH, 02H
INT 1AH
RET

; CH - HOUR
; CL - MINUTES
; DH - SECONDS
RTIME ENDP

DisplayTime PROC
push DX ; was DH
push CX ; was CL
;
mov AL,CH
mov DX,PRINTERPORTBASEADDRESS
out DX,AL
mov AL,01h
mov DX,PRINTERPORTBASEADDRESS+2
out DX,AL ; enable display
call Delay
;
mov AL,00h
mov DX,PRINTERPORTBASEADDRESS+2
out DX,AL
pop AX ; pop CL (minutes)
mov DX,PRINTERPORTBASEADDRESS
out DX,AL
mov AL,02h
mov DX,PRINTERPORTBASEADDRESS+2
out DX,AL ; enable display
call Delay
;
mov AL,00h
mov DX,PRINTERPORTBASEADDRESS+2
out DX,AL
pop AX ; pop DH (seconds)
mov AL,AH
mov DX,PRINTERPORTBASEADDRESS
out DX,AL
mov AL,08h
mov DX,PRINTERPORTBASEADDRESS+2
out DX,AL ; enable display
call Delay
;
mov DX,PRINTERPORTBASEADDRESS+2
mov AL,00h
out DX,AL
ret

DisplayTime ENDP

Delay Proc
MOV CX, 00100h
X: PUSH CX
MOV CX, 0FFFFh
Y: LOOP Y
POP CX
LOOP X
RET

Delay ENDP
END

and the cicuit:
http://postimage.org/image/2egfc6wsk/

maonin
October 15th, 2011, 06:02 AM
please help.

S_M_A
October 15th, 2011, 05:47 PM
I've never tried it but I would expect any NT system to not grant access to the hardware... Either use a non NT OS or use the appropriate Win32 APIs like OpenFile http://msdn.microsoft.com/en-us/library/aa365430(VS.85).aspx