STACKSG SEGMENT STACK ‘STACK’
DW 32 DUP(0)
STACKSG ENDS
;———————————————–
CODESG SEGMENT ‘CODE’
ASSUME SS:STACKSG,CS:CODESG
MAIN PROC FAR
CALL CLEAR ;۱-پاک کردن صفحه مانیتور
BACK1:
CALL CURSOR ;۲-ست کردن مکان نما cursor
CALL TIME ;۳-مشخص کردن زمان
MOV AL,CH ;۴-Move hour to AL (انتقال مقدار ساعت به درون)
CALL DISPLA1 ;۵-نمایش ساعت
CALL COLON ;۶-نمایش علامت : روی مانیتور
MOV AL,CL ;۷-Move minute to AL
CALL DISPLA1 ;۸-نمایش دقیقه
CALL COLON ;۹- نمایش علامت : روی مانیتور
MOV AL,DH ;۱۰-Move seconds to AL (انتقال مقدار ساعت به درون)
CALL DISPLA1 ;۱۱- نمایش ثانیه
JMP BACK1 ;۱۲- پرش به لیبل نام برده شده
MOV AX,4C00H ;۱۳-
INT 21H ;۱۴- ۱۳و۱۴ پایان پردازش
MAIN ENDP ; پایان قسمت MAIN
; پاک کردن صفحه مانیتور
; ————-
CLEAR PROC NEAR
PUSH BX ;۱۵-PUSH BX
MOV AX,0600H ;۱۶-درخواست وقفه
MOV CX,0000H ;۱۷-گوشه بالایی سمت چپ
MOV DX,184FH ;۱۸-گوشه پایینی سمت راست
MOV BH,0EH ;۱۹-رنگ سیاه و زرد
INT 10H ;۲۰-فعالسازی وقفه
POP BX ;۲۱-Restore BX
RET ;۲۲-Return to MAIN
CLEAR ENDP ; پایان این قسمت
; ست کردن موقعیت مکان نما در روی صفحه . مختصات ۱۲و۴۰
; ——————-
CURSOR PROC NEAR
PUSH DX ;۲۳-PUSH DX
MOV AH,02H ;۲۴-درخواست وقفه
MOV BH,00H ;۲۵-استفاده از صفحه صفر
MOV DH,12 ;۲۶-سطر۱۲
MOV DL,40 ;۲۷-ستون ۴۰
INT 10H ;۲۸-فعالسازی وقفه
POP DX ;۲۹-Restore BX
RET ;۳۰-Return to MAIN
CURSOR ENDP ; پایان این قسمت از کد
; Get time
; ——–
TIME PROC NEAR
MOV AH,2CH ;۳۱-درخواست وقفه
INT 21H ;۳۲-فعالسازی وقفه
RET ;۳۳-Return to MAIN
TIME ENDP ; پایان این قسمت از کد
; نمایش : روی مانیتور
; ———————–
COLON PROC NEAR
PUSH DX ;۳۴-Push DX
MOV DL,’:’ ;۳۵-Move ASCII of : to DL
MOV AH,02H ;۳۶-درخواست وقفه
INT 21H ;۳۷-فعالسازی وقفه مورد نظر
POP DX ;۳۸-بازگردان ارزش داده
RET ;۳۹-Return to MAIN
COLON ENDP ; پایان این قسمت از کد
; قطعه کد نمایش اعداد در مانیتور
; ————————–
DISPLA1 PROC NEAR
PUSH DX ;۴۰-Push DX
; ابدیل باینری به کد اسکی
|
دیدگاهتان را بنویسید