Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- assume cs:code, ds:data
- code segment
- begin:
- jmp main
- chislo dw 0
- mult10 dw 1
- main proc near
- mov ax, data
- mov ds,Ax
- mov ah, 09h
- lea dx, msg1
- int 21h
- mov ah, 0ah
- lea dx,param
- int 21h
- lea si,field -1
- mov bh,0
- mov bl, actlen
- call InNumber
- mov ax,chislo
- mov a1,ax
- mov chislo,0
- mov mult10,1
- mov ah, 09h
- lea dx,new_line
- int 21h
- mov ah, 09h
- lea dx, msg2
- int 21h
- mov ah, 0ah
- lea dx,param
- int 21h
- lea si,field - 1
- mov bh,0
- mov bl, actlen
- call InNumber
- mov ax,chislo
- mov a2,ax
- mov BX, a1
- mov CX, a2
- cmp BX, CX
- JG More
- JL Less
- JE Equal
- More:
- mov ax, a2
- cwd
- add ax, a1
- cwd
- mov bx, a1
- sub bl, 1
- idiv bx
- cwd
- mov word ptr chislo, ax
- mov word ptr chislo+2, dx
- jmp output
- mov ax, a2
- cwd
- mov bx, a2
- imul bx
- mov bx, 8
- idiv bx
- cwd
- mov word ptr chislo, ax
- mov word ptr chislo+2, dx
- jmp output
- ;__________________________________________
- Equal:
- mov ax, 23
- mov dx, 0
- mov word ptr chislo, ax
- mov word ptr chislo+2, dx
- ;__________________________________________
- output:
- mov chislo, ax
- call FromNumber
- mov ah, 09h
- lea dx,new_line
- int 21h
- mov ah, 09h
- lea dx, msg
- int 21h
- mov ah, 09h
- lea dx,otvet
- int 21h
- mov ah, 0ah
- lea dx,param
- int 21h
- mov ax,4c00h
- int 21h
- ret
- main endp
- InNumber proc
- ;---------------------------
- mov cx,10
- b20:
- mov al,[si+bx]
- and ax, 000fh
- mul mult10
- add chislo, ax
- mov ax,mult10;
- mul cx
- mov mult10,ax
- dec bx
- jnz b20
- ret
- InNumber endp
- FromNumber proc
- mov cx,0010;
- lea si, otvet + 5
- mov ax,chislo
- mov bx, ax
- and bx, 8000h
- cmp bx, 8000h
- jb plus
- mov bx, ax
- mov ax, 65535
- sub ax, bx
- add ax, 1
- mov bx, 1
- plus:
- c20:
- cmp ax,0010
- jb c30
- xor dx,dx
- div cx
- or dl,30h
- mov [si],dl
- dec si
- jmp c20
- c30:
- or al,30h
- mov [si],al
- cmp bx, 1
- je addminus
- ret
- addminus:
- dec si
- mov al, zminus
- mov [si], al
- ret
- FromNumber endp
- code ends
- data segment
- new_line db 0dh,0ah,'$'
- msg db 'Result: $'
- msg1 db 'Input a: $'
- msg2 db 'Input b: $'
- otvet db ' $'
- zminus db '-'
- a1 dw ?
- a2 dw ?
- param label byte
- maxlen db 20
- actlen db ?
- field db 20 dup(' ')
- data ends
- stk segment
- db 256 dup (?)
- stk ends
- end begin
Advertisement
Add Comment
Please, Sign In to add comment