سلام. من تو خطهاي زير از برنامه مشكل دارم. لطفا كمك كنيد خيلي واجبه
1) dalile pop kardane ax bx dx (khate 36-38)
2) khate 48 : chera mul si? va inke chetori si ba bx zarb mishe?
3) 51 : chera sub dl,48 ?
setare_asemooniii: 52 : chera add ax,dx ?
4) chera div si ? va chera natije mire dakhele bx ?
5) 73 : chera or ax,ax ?
6) 76 : chera add dl,48 ?
7) 80 : mov byte ptr[bx],$ manzoor az $ chiye? karesh chiye
data segment
temp db 10 dup(0)
str db 'Please Enter Number1:',"$"
str1 db 'Please Enter Operator:',"$"
str2 db 'Please Enter Number2:' ,"$"
str3 db 'result:',"$"
str4 db 'invalid operator',"$"
num1 dw ?
num2 dw ?
result dw ?
operator db ?
data ends
code segment
assume cs:code,ds:data
;------------------------------------getnumber-------------------------------------------------------------------------------------------
getnum proc
push ax
push bx
push dx
again: mov ah,8
int 21h
cmp al,13
je finish
cmp al,'0'
jl again
cmp al,'9'
jg again
mov [bx],al
inc bx
mov dl,al
mov ah,2
int 21h
jmp again
finish:mov [bx],al
pop dx
pop bx
pop ax
ret
getnum endp
;-------------------------------------------asctobin-------------------------------------------
asctobin proc
push bx
push si
push dx
mov si,10
mov ax,0
next: mul si
mov dl,[bx]
inc bx
sub dl,48
add ax,dx
cmp byte ptr[bx],13
jne next
pop dx
pop si
pop bx
ret
asctobin endp
;------------------------------------------bintoasc-----------------------------------------------
bintoasc proc
push cx
push dx
push si
push bx
push ax
mov si,10
xor cx,cx
next2: xor dx,dx
div si
push dx
inc cx
or ax,ax
jnz next2
l1: pop dx
add dl,48
mov [bx],dl
inc bx
loop l1
mov byte ptr[bx],'$'
pop ax
pop bx
pop si
pop dx
pop cx
ret
bintoasc endp
;------------------------------------------------amaliat---------------------------------------------------
amaliat proc
mov ax,num1
mov bx,num2
mov dl,operator
cmp dl,'+'
jne menha
add ax,bx
ret
menha: cmp dl,'-'
jne zarb
sub ax,bx
ret
zarb: cmp dl,'*'
jne taghsim
mul bx
ret
taghsim: cmp dl,'/'
jne invalid
sub dx,dx
div bx
ret
invalid:
lea dx,str4
mov ah,9h
int 21h
ret
amaliat endp
;------------------------------------------------------------MAIN---------------------------------------------------------
main proc
mov ax,data
mov ds,ax
lea dx,str
mov ah,9h
int 21h
lea bx,temp
call getnum
call asctobin
mov num1,ax
lea dx,str1
mov ah,9h
int 21h
mov ah,1
int 21h
mov operator,al
lea dx,str2
mov ah,9h
int 21h
call getnum
call asctobin
mov num2,ax
call amaliat
mov result,ax
lea dx,str3
mov ah,9h
int 21h
mov ax,result
call bintoasc
mov dx,bx
mov ah,9
int 21h
;************************************************* ****************
;exit
mov ah,4ch
int 21h
main endp
code ends
end main