Ghasem Dehghani
سه شنبه 29 خرداد 1386, 19:05 عصر
با سلام
دوستان من تازه اسمبلی رو شروع کردم و برای شروع هم برنامه یک ماشین حساب با چهار عمل اصلی را برای شروع مطالعه میکنم لطفا هر کسی که از قسمتی یا تمام اونها اطلاع داره راهنمایی کنه .
در ضمن سوالاتم رو هم جلوی هر خط به شکل قرمز نوشتم .
با تشکر و سپاس فراوان .:لبخندساده:
stseg segment
dw 32 dup(?)
stseg ends
dtseg segment
DIGIT1 DB 3,?,3 DUP(?)
DIGIT2 DB 3,?,3 DUP(?)
operand DB 2,?,2 DUP (0)
natijeh DB '= $'
HelpInput DB '#1 op #2$'
SHOOROO db ' IN THE NAME OF GOD$'
ostad db ' Test1$'
tahi db ' Test2$'
dtseg ends
;=============================================== CALCULATOR
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,SS:STSEG,DS:DTSEG
MOV AX,DTSEG
MOV DS,AX
MOV BH,07H 1-( man az inja ro nafahmidam yani chi ta
MOV CX,0000H ..........
MOV DX,184FH ..........
MOV AH,06H ..........
INT 10H inaj
MOV DH,13
MOV DL,25
CALL CURSUR
LEA DX,HelpInput
MOV AH,09H
INT 21H
MOV DH,1
MOV DL,30
CALL CURSUR
LEA DX,SHOOROO
MOV AH,09H
INT 21H
MOV DH,3
MOV DL,22
CALL CURSUR
LEA DX,ostad
MOV AH,09H
INT 21H
MOV DH,5
MOV DL,23
CALL CURSUR
LEA DX,tahi
MOV AH,09H
INT 21H
MOV DH,16
MOV DL,25
call cursur
LEA DX,DIGIT1 2- age az in ghesmat ta
MOV AH,0AH ..........
INT 21H ..........
LEA SI,DIGIT1+2 .........
CALL ASC_TO_DEC .....
MOV CX,AX inja ro ham tozih bedin mamnon misham
MOV DH,16
MOV DL,28
CALL CURSUR
LEA DX,operand
MOV AH,0AH
INT 21H
MOV DH,16
MOV DL,30
CALL CURSUR
LEA DX,DIGIT2
MOV AH,0AH
INT 21H
LEA SI,DIGIT2+2
CALL ASC_TO_DEC
XCHG AX,CX
CMP operand+2,'+'
JE ADDD
CMP operand+2,'-'
JE SUBB
CMP operand+2,'*'
JE MULL
CMP operand+2,'/'
JE DIVV
ADDD: ADD AL,CL
JMP ENDD
SUBB: SUB AL,CL
JMP ENDD
MULL: MUL CL
JMP ENDD
DIVV: DIV CL
SUB AH,AH
ENDD:
CALL natijeh_TO_ASC
MOV DH,16
MOV DL,33
CALL CURSUR
MOV AH,09H
LEA DX,natijeh
INT 21H
MOV AH,07H
INT 21H
MOV CH,16
MOV CL,22
MOV DH,17
MOV DL,46
MOV AH,06H
MOV BH,07H
INT 10H
EEE: in dastor ro ham nafahmidam yani hi ???????????
MOV AH,4CH (in 4ch ham yani chi ? che kodie?)
INT 21H ta inja
main ENDP
natijeh_TO_ASC PROC
SUB DX,DX
MOV BX,10
DIV BX
OR DL,30H
MOV natijeh[4],DL
SUB DX,DX
DIV Bx
OR DL,30H
MOV natijeh[3],DL (toye [ ] ye seri adad gozashte shode
, ina yani chi va chera toye in gozashtan ? )
SUB DX,DX
DIV Bx
OR DL,30H in 30h yani chi va che kodi ?
MOV natijeh[2],DL
OR AL,30H
MOV natijeh[1],AL
RET inam ke fekr konam shekaste barname bashe ke khodesh biad biron az barname , doroste????
natijeh_TO_ASC ENDP
ASC_TO_DEC PROC
MOV BL,10
MOV DX,WORD PTR[SI] (az inja ta akhare in dastor ro nafahmidam,
AND DX,0F0FH yani in kodhaii ke gozashte shode ro
MOV AL,DL nemidonam yani chi ? mesle :
SUB AH,AH PTR[SI] ya 0F0FH ya chera word gozashte shode?
MUL BL
ADD AL,DH
RET
ASC_TO_DEC ENDP
CURSUR PROC
MOV BH,00H in 2ta 00H va 02h che tabeii hast?
MOV AH,02H
INT 10H
RET
CURSUR ENDP
cdseg ends
end main
دوستان من تازه اسمبلی رو شروع کردم و برای شروع هم برنامه یک ماشین حساب با چهار عمل اصلی را برای شروع مطالعه میکنم لطفا هر کسی که از قسمتی یا تمام اونها اطلاع داره راهنمایی کنه .
در ضمن سوالاتم رو هم جلوی هر خط به شکل قرمز نوشتم .
با تشکر و سپاس فراوان .:لبخندساده:
stseg segment
dw 32 dup(?)
stseg ends
dtseg segment
DIGIT1 DB 3,?,3 DUP(?)
DIGIT2 DB 3,?,3 DUP(?)
operand DB 2,?,2 DUP (0)
natijeh DB '= $'
HelpInput DB '#1 op #2$'
SHOOROO db ' IN THE NAME OF GOD$'
ostad db ' Test1$'
tahi db ' Test2$'
dtseg ends
;=============================================== CALCULATOR
CDSEG SEGMENT
MAIN PROC FAR
ASSUME CS:CDSEG,SS:STSEG,DS:DTSEG
MOV AX,DTSEG
MOV DS,AX
MOV BH,07H 1-( man az inja ro nafahmidam yani chi ta
MOV CX,0000H ..........
MOV DX,184FH ..........
MOV AH,06H ..........
INT 10H inaj
MOV DH,13
MOV DL,25
CALL CURSUR
LEA DX,HelpInput
MOV AH,09H
INT 21H
MOV DH,1
MOV DL,30
CALL CURSUR
LEA DX,SHOOROO
MOV AH,09H
INT 21H
MOV DH,3
MOV DL,22
CALL CURSUR
LEA DX,ostad
MOV AH,09H
INT 21H
MOV DH,5
MOV DL,23
CALL CURSUR
LEA DX,tahi
MOV AH,09H
INT 21H
MOV DH,16
MOV DL,25
call cursur
LEA DX,DIGIT1 2- age az in ghesmat ta
MOV AH,0AH ..........
INT 21H ..........
LEA SI,DIGIT1+2 .........
CALL ASC_TO_DEC .....
MOV CX,AX inja ro ham tozih bedin mamnon misham
MOV DH,16
MOV DL,28
CALL CURSUR
LEA DX,operand
MOV AH,0AH
INT 21H
MOV DH,16
MOV DL,30
CALL CURSUR
LEA DX,DIGIT2
MOV AH,0AH
INT 21H
LEA SI,DIGIT2+2
CALL ASC_TO_DEC
XCHG AX,CX
CMP operand+2,'+'
JE ADDD
CMP operand+2,'-'
JE SUBB
CMP operand+2,'*'
JE MULL
CMP operand+2,'/'
JE DIVV
ADDD: ADD AL,CL
JMP ENDD
SUBB: SUB AL,CL
JMP ENDD
MULL: MUL CL
JMP ENDD
DIVV: DIV CL
SUB AH,AH
ENDD:
CALL natijeh_TO_ASC
MOV DH,16
MOV DL,33
CALL CURSUR
MOV AH,09H
LEA DX,natijeh
INT 21H
MOV AH,07H
INT 21H
MOV CH,16
MOV CL,22
MOV DH,17
MOV DL,46
MOV AH,06H
MOV BH,07H
INT 10H
EEE: in dastor ro ham nafahmidam yani hi ???????????
MOV AH,4CH (in 4ch ham yani chi ? che kodie?)
INT 21H ta inja
main ENDP
natijeh_TO_ASC PROC
SUB DX,DX
MOV BX,10
DIV BX
OR DL,30H
MOV natijeh[4],DL
SUB DX,DX
DIV Bx
OR DL,30H
MOV natijeh[3],DL (toye [ ] ye seri adad gozashte shode
, ina yani chi va chera toye in gozashtan ? )
SUB DX,DX
DIV Bx
OR DL,30H in 30h yani chi va che kodi ?
MOV natijeh[2],DL
OR AL,30H
MOV natijeh[1],AL
RET inam ke fekr konam shekaste barname bashe ke khodesh biad biron az barname , doroste????
natijeh_TO_ASC ENDP
ASC_TO_DEC PROC
MOV BL,10
MOV DX,WORD PTR[SI] (az inja ta akhare in dastor ro nafahmidam,
AND DX,0F0FH yani in kodhaii ke gozashte shode ro
MOV AL,DL nemidonam yani chi ? mesle :
SUB AH,AH PTR[SI] ya 0F0FH ya chera word gozashte shode?
MUL BL
ADD AL,DH
RET
ASC_TO_DEC ENDP
CURSUR PROC
MOV BH,00H in 2ta 00H va 02h che tabeii hast?
MOV AH,02H
INT 10H
RET
CURSUR ENDP
cdseg ends
end main