نشان دادن ساعت سیستم به صورت گرافیکی در masm32

majid1605

عضو جدید
من می خوام یه برنامه به صورت گرافیکی با استفاده از اپیکیشنهای ویندوز بنویسم .نحوه ایجاد پنجره و پیغام چاپ توی پنجره رو یاد گرفتم و الان می خوام ساعت رو هم نمایش بدم می خواستم بدونم توابع ساعت چیه و چه کتابخونه هایی رو باید فراخوانی کنم .ممنون میشم با یه مثال نحوه استفاده اشون رو هم بگید.
از masm32 در ویندوز 7 64بیتی استفاده می کنم
 

sabermotavali

عضو جدید
CloCk

CloCk

سلام دوست من
اینم یه ساعت دیجیتالی فقط کافیه کد زیر رو تو امولاتور کپی کنی همین
البته این کد به صورت کامل کامل
data segment
code segment
stack segmentExtra segment

Dot DB 004H,'$'

Hour DB ?
Minute DB ?
Second DB ?

HLine DB '--$'
VLine DB '|$'

Year DW ?
Month DB ?
Day DB ?
Day_of_week DB ?

Print_Year DB 4 dup (' '),'$'
Print_Day DB 2 dup ('0'),'$'

Sunday DB 'Sunday$'
Monday DB 'Monday$'
Tuesday DB 'Tuesday$'
Wednesday DB 'Wednesday$'
Thursday DB 'Thursday$'
Friday DB 'Friday$'
Saturday DB 'Saturday$'

January DB 'January$'
February DB 'February$'
March DB 'March$'
April DB 'April$'
May DB 'May$'
June DB 'June$'
July DB 'July$'
August DB 'August$'
September DB 'September$'
October DB 'October$'
November DB 'November$'
December DB 'December$'
ends

stack segment
dw 128 dup(0)
ends

;*********** Main Menu ***********;
code segment
start:
MOV AX, data
MOV DS, AX
MOV ES, AX


MOV AH , 2Ch ; System Time
INT 21h

MOV Hour , CH
MOV Minute , CL
MOV Second , DH

CALL Draw_Hour
CALL Draw_Minute
CALL Print_System_Date


BLink:

;****** CLEAR SCREEN ******
MOV AH , 6h
MOV AL , 3
MOV CH , 12
MOV CL , 39
MOV DH , 14
MOV DL , 39
MOV BH , 7
INT 10H
;****** CLEAR SCREEN ******

MOV AH , 86H
MOV CX , 15
MOV DX , 0
INT 15H


INC Second
CMP Second , 60
JNE Not_Ope

MOV Second , 0
INC Minute

CMP Minute , 60
JNE Just_Minute

MOV Minute , 0
INC Hour

CMP Hour , 24
JNE Refresh

MOV Hour , 0
MOV Minute , 0
MOV Second , 0
JMP Refresh

JMP Not_Ope
Refresh:
CALL Draw_Hour
CALL Draw_Minute
CALL Print_System_Date

JMP Not_Ope

Just_Minute:
CALL Draw_Minute

Not_Ope:

MOV DH , 12
MOV DL , 39
CALL Gotoxy

LEA DX , Dot
MOV AH , 9
INT 21H

MOV DH , 14
MOV DL , 39
CALL Gotoxy

LEA DX , Dot
MOV AH , 9
INT 21H

MOV AH , 86H
MOV CX , 15
MOV DX , 0
INT 15H

JMP BLink

MOV AH, 1
INT 21h
MOV AX, 4C00H
INT 21h
ends
;*********** Main Menu ***********;


;*********** GotoXY **************;
GotoXY PROC
MOV AH , 2H
MOV BH , 0
INT 10H
RET
GotoXY ENDP
;*********** GotoXY **************;


;*********** H-Line **************;
Draw_H_Line PROC
LEA DX , HLine
MOV AH , 9
INT 21H
RET
Draw_H_Line ENDP
;*********** H-Line **************;


;*********** V-Line **************;
Draw_V_Line PROC
LEA DX , VLine
MOV AH , 9
INT 21H
RET
Draw_V_Line ENDP
;*********** V-Line **************;


;*********** System-Date **************;
Print_System_Date Proc

;CX = year (1980-2099).
;DH = month.
;DL = day.
;AL = day of week (00h=Sunday)

MOV AH, 2AH
INT 21H

MOV Year , CX
MOV Month , DH
MOV Day , DL
MOV Day_of_week , AL


MOV DH , 11
MOV DL , 52
CALL GotoXY

CMP Day_of_week , 0
JNE Day_Not_0
LEA DX, Sunday
JMP Day_Not_6
Day_Not_0:

CMP Day_of_week , 1
JNE Day_Not_1
LEA DX, Monday
JMP Day_Not_6
Day_Not_1:

CMP Day_of_week , 2
JNE Day_Not_2
LEA DX, Tuesday
JMP Day_Not_6
Day_Not_2:

CMP Day_of_week , 3
JNE Day_Not_3
LEA DX, Wednesday
JMP Day_Not_6
Day_Not_3:

CMP Day_of_week , 4
JNE Day_Not_4
LEA DX, Thursday
JMP Day_Not_6
Day_Not_4:

CMP Day_of_week , 5
JNE Day_Not_5
LEA DX, Friday
JMP Day_Not_6
Day_Not_5:

LEA DX, Saturday
Day_Not_6:

MOV AH , 09H
INT 21H




MOV AL , Day ; AX=Day
MOV AH , 0
MOV CL , 10
LEA BX , Print_Day
ADD BX , 1

YearG1:
DIV CL
ADD AH , 48
MOV [BX] , AH
MOV AH , 0
DEC BX
CMP AX , 0
JNE YearG1

MOV DH , 12
MOV DL , 52
CALL GotoXY

LEA DX, Print_Day
MOV AH, 9
INT 21H




MOV DH , 13
MOV DL , 52
CALL GotoXY

CMP Month , 1
JNE Month_Not_1
LEA DX, January
JMP Month_Not_12
Month_Not_1:

CMP Month , 2
JNE Month_Not_2
LEA DX , February
JMP Month_Not_12
Month_Not_2:

CMP Month , 3
JNE Month_Not_3
LEA DX, March
JMP Month_Not_12
Month_Not_3:

CMP Month , 4
JNE Month_Not_4
LEA DX, April
JMP Month_Not_12
Month_Not_4:

CMP Month , 5
JNE Month_Not_5
LEA DX, May
JMP Month_Not_12
Month_Not_5:

CMP Month , 6
JNE Month_Not_6
LEA DX, June
JMP Month_Not_12
Month_Not_6:

CMP Month , 7
JNE Month_Not_7
LEA DX, July
JMP Month_Not_12
Month_Not_7:

CMP Month , 8
JNE Month_Not_8
LEA DX, August
JMP Month_Not_12
Month_Not_8:

CMP Month , 9
JNE Month_Not_9
LEA DX, September
JMP Month_Not_12
Month_Not_9:


CMP Month , 10
JNE Month_Not_10
LEA DX, October
JMP Month_Not_12
Month_Not_10:

CMP Month , 11
JNE Month_Not_11
LEA DX, November
JMP Month_Not_12
Month_Not_11:

LEA DX, December
Month_Not_12:
MOV AH , 09H
INT 21H



MOV AX , Year ; AX=Year
MOV CL , 10
LEA BX , Print_Year
ADD BX , 3

YearG10:
DIV CL
ADD AH , 48
MOV [BX] , AH
MOV AH , 0
DEC BX
CMP AX , 0
JNE YearG10

MOV DH , 14
MOV DL , 52
CALL GotoXY

LEA DX, Print_Year
MOV AH, 9
INT 21H

RET
Print_System_Date ENDP
;*********** System-Date **************;


;*********** Hour **************;
Draw_Hour PROC

;****** CLEAR SCREEN ******
MOV AH , 6h
MOV AL , 4
MOV CH , 11
MOV CL , 30
MOV DH , 14
MOV DL , 37
MOV BH , 7
INT 10H
;****** CLEAR SCREEN ******

MOV AL , Hour
MOV AH , 0
MOV CL , 10
DIV CL
PUSH AX

CMP AL , 0
JNE Next1

;Print 0 (Left)
MOV DH , 11
MOV DL , 30
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 29
CALL GotoXY
CALL Draw_V_Line


MOV DH , 12
MOV DL , 32
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 29
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 32
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 30
CALL GotoXY
CALL Draw_H_Line
JMP Fin
Next1:
CMP AL , 1
JNE Next2

;Print 1 (Left)
MOV DH , 12
MOV DL , 32
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 32
CALL GotoXY
CALL Draw_V_Line

JMP Fin
Next2:

;Print 2 (Left)
MOV DH , 11
MOV DL , 30
CALL GotoXY
CALL Draw_H_Line

MOV DH , 13
MOV DL , 30
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 32
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 29
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 30
CALL GotoXY
CALL Draw_H_Line

Fin:
POP AX
CMP AH , 0
JNE Next3

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next3:
CMP AH , 1
JNE Next4

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line
JMP Fin1
Next4:
CMP AH , 2
JNE Next5

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next5:
CMP AH ,3
JNE Next6

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next6:
CMP AH , 4
JNE Next7

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line
JMP Fin1
Next7:
CMP AH , 5
JNE Next8

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next8:
CMP AH , 6
JNE Next9

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next9:
CMP AH , 7
JNE Next10

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line
JMP Fin1
Next10:
CMP AH , 8
JNE Next11

MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
JMP Fin1
Next11:
MOV DH , 11
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 34
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 37
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 35
CALL GotoXY
CALL Draw_H_Line
Fin1:
RET
Draw_Hour ENDP
;*********** Hour **************;


;*********** Minute **************;
Draw_Minute PROC

;****** CLEAR SCREEN ******
MOV AH , 6h
MOV AL , 4
MOV CH , 11
MOV CL , 42
MOV DH , 14
MOV DL , 49
MOV BH , 7
INT 10H
;****** CLEAR SCREEN ******

MOV AL , Minute
MOV AH , 0
MOV CL , 10
DIV CL
PUSH AX

CMP AL , 0
JNE Next12

;Print 0 (Left)
MOV DH , 11
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line
JMP Fin2
Next12:
CMP AL , 1
JNE Next13

;Print 1 (Left)
MOV DH , 12
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line
JMP Fin2
Next13:
CMP AL , 2
JNE Next14

;Print 2 (Left)
MOV DH , 11
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 13
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line
JMP Fin2
Next14:
CMP AL , 3
JNE Next15

;Print 0 (Left)
MOV DH , 11
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line
JMP Fin2
Next15:
CMP AL , 4
JNE Next16

;Print 0 (Left)
MOV DH , 12
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line
JMP Fin2
Next16:

CMP AL , 5
JNE Next17

;Print 5 (Left)
MOV DH , 11
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line
JMP Fin2
Next17:

;Print 6 (Left)
MOV DH , 11
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 41
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 44
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 42
CALL GotoXY
CALL Draw_H_Line

Fin2:

POP AX
CMP AH , 0
JNE Next18

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next18:
CMP AH , 1
JNE Next19

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line
JMP Fin3
Next19:
CMP AH , 2
JNE Next20

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next20:
CMP AH ,3
JNE Next21

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next21:

CMP AH , 4
JNE Next22

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line
JMP Fin3
Next22:

CMP AH , 5
JNE Next23

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next23:
CMP AH , 6
JNE Next24

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next24:
CMP AH , 7
JNE Next25

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line
JMP Fin3
Next25:

CMP AH , 8
JNE Next26

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line
JMP Fin3
Next26:

MOV DH , 11
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 12
MOV DL , 46
CALL GotoXY
CALL Draw_V_Line

MOV DH , 12
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 13
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

MOV DH , 14
MOV DL , 49
CALL GotoXY
CALL Draw_V_Line

MOV DH , 15
MOV DL , 47
CALL GotoXY
CALL Draw_H_Line

Fin3:
RET
Draw_Minute ENDP
;*********** Minute **************;
end start

 

feritail

عضو جدید


MOV AL , Day ; AX=Day
MOV AH , 0
MOV CL , 10
LEA BX , Print_Day
ADD BX , 1

YearG1:
DIV CL
ADD AH , 48
MOV [BX] , AH
MOV AH , 0
DEC BX
CMP AX , 0
JNE YearG1
دوستان عزیز کسی میتونه این تکه کد رو برای من توضیح بده.
متوجه نمیشم داره چی کار میکنه.
اگه کسی برام توضیح بده یک دنیا ممنون میشم:gol:
 

Similar threads

بالا