Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 100h
- .stack 100h
- .data
- count db 0
- result dw 0
- numb1 dw 0
- numb2 dw 0
- adr dw 0
- sbr dw 0
- mlr dw 0
- qr db 0
- qm dw 0
- newinput db ?
- nl db 0ah,0dh,'$'
- msg db "Please Enter The Numbers: $"
- ms1 db "Number1: $"
- ms2 db " Number2: $"
- ad db "Addition: $"
- sb db "Subtraction: $"
- ml db "Multiplication: $"
- q db "Qoutient: $"
- r db "Remainder: $"
- .code
- newline macro
- ;line gap
- push ax
- mov ah,9
- lea dx,nl
- int 21h
- pop ax
- endm newline
- print1 macro x
- ;x print
- push ax
- push dx
- mov dx,x
- add dx,'0'
- mov ah,2
- int 21h
- pop dx
- pop ax
- endm print1
- main proc
- mov dx,@data
- mov ds,dx
- lea dx,msg
- mov ah,9
- int 21h
- newline
- call scanAX
- newline
- ;mov ax,result
- mov bx,result
- mov numb1,bx
- call scanAX
- newline
- lea dx,ms1
- mov ah,9
- int 21h
- mov bx,result
- mov numb2,bx
- mov ax,numb1
- call printAX
- lea dx,ms2
- mov ah,9
- int 21h
- mov ax,numb2
- call printAX
- newline
- lea dx,ad
- mov ah,9
- int 21h
- call addnum
- newline
- lea dx,sb
- mov ah,9
- int 21h
- call subnum
- newline
- lea dx,ml
- mov ah,9
- int 21h
- call mulnum
- newline
- lea dx,q
- mov ah,9
- int 21h
- call divnum
- newline
- mov ah,4ch
- int 21h
- endp main
- printAX proc
- push ax
- push bx
- mov bx,10
- processing:
- mov dx,0
- div bx ;AX=AX/10, DX=AX%10
- push dx
- inc count
- cmp ax,0
- je printing
- jmp processing
- printing:
- cmp count,0
- je done
- dec count
- pop dx
- print1 dx
- jmp printing
- done:
- pop bx
- pop ax
- ret
- endp printAX
- scanAX proc
- push bx
- push dx
- mov bx,10 ;base
- mov ax,0 ;init ax=0
- mov result,0
- scanprocess:
- mov ah,1
- int 21h
- cmp al,0dh ;checking if enter is pressed
- je scandone
- ;AX=0
- mov newinput,al
- sub newinput,'0'
- ;result=result*10+newinput
- mov ax,result
- mul bx ;dx:ax=ax*bx
- add al,newinput
- mov result,ax
- jmp scanprocess
- scandone:
- pop dx
- pop bx
- mov ax,result
- ret
- endp scanAX
- addnum proc
- mov cx,numb1
- add cx,numb2
- mov adr,cx
- mov ax,adr
- call printAX
- ret
- endp addnum
- subnum proc
- mov cx,numb1
- sub cx,numb2
- mov sbr,cx
- mov ax,sbr
- call printAX
- ret
- endp subnum
- mulnum proc
- mov ax,numb1
- mul numb2
- mov mlr,ax
- call printAX
- ret
- endp mulnum
- divnum proc
- mov dx,0
- mov ax,numb1
- mov bx,numb2
- div bx
- mov qr,al
- mov qm,dx
- call printAX
- newline
- lea dx,r
- mov ah,9
- int 21h
- mov ax,qm
- call printAX
- ret
- endp divnum
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement