Microprocessor and Microcontroller Lab 5
5] Design and develop an assembly language program to read the current time and date from the system and display it in the standard format on the screen
5] Program Code (lab5a.asm)
.model small .stack 10 .data msg db 13,10,"the time is:" time db ?,?,':',?,?,"$" .code mov ax,@data mov ds,ax mov ah,2ch int 21h mov dx,cx mov cx,0 mov cl,dh call convert mov time,al mov time+1,ah mov cl,dl call convert mov time+3,al mov time+4,ah lea dx,msg mov ah,09h int 21h mov ah,4ch int 21h convert proc mov ax,0 cmp cl,0 jz down up: add al,1 daa loop up mov bl,10h div bl down: add al,30h add ah,30h ret convert endp end
5] Program code(lab5b.asm)
.MODEL small .STACK 100h .DATA messl DB 10, 13, 'Today is $' ; 1041, 13=CR .CODE Today PROC MOV AX, @data MOV DS, AX MOV DX, OFFSET messl MOV AH, 09h INT 21H MOV AH,2AH INT 21H PUSH CX MOV CX,0 MOV CL, DL PUSH CX MOV CL,DH PUSH CX MOV DH, 0 ;DISPLAY MONTH MOV DX, 0 POP AX MOV CX,0 MOV BX,10 DIVIDEM:DIV BX PUSH DX ADD CX,1 MOV DX, 0 CMP AX, 0 JNE DIVIDEM DIVDISPM:POP DX ADD DL,30h MOV AH, 02h INT 21H LOOP DIVDISPM MOV DL,'/' MOV AH,02h INT 21H ;DISPLAY DAY MOV DX, 0 POP AX MOV CX,0 MOV BX,10 DIVIDED:DIV BX PUSH DX ADD CX,1 MOV DX,0 CMP AX,0 JNE DIVIDED DIVDISPD:POP DX ADD DL,30H MOV AH,02H INT 21H LOOP DIVDISPD MOV DL,'/' MOV AH,02H INT 21H ;DISPLAY YEAR MOV DX,0 POP AX MOV CX,0 MOV BX,10 DIVIDEY:DIV BX PUSH DX ADD CX,1 MOV DX,0 CMP AX,0 JNE DIVIDEY DIVDISPY:POP DX ADD DL,30H MOV AH,02H INT 21H LOOP DIVDISPY MOV AL,0 MOV AH,4CH INT 21H TODAY ENDP END TODAY