Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 100h
- .data
- welcomeMessage db "Ax^2 + Bx + C = 0", 10, 13, '$'
- GiveMeA db "A = $"
- GiveMeB db "B = $"
- GiveMeC db "C = $"
- leng dw 0
- minus dw 0
- dot dw 0
- .code
- InputReader PROC
- mov ax, 0
- mov leng, ax
- mov minus, ax
- mov dot, ax
- getchar:
- mov ah, 08h
- int 21h
- cmp al, 13
- jnz goto1
- jmp getchar_stop
- goto1:
- cmp al, 8
- jz backspace_pressed
- cmp al, '-'
- jz minus_pressed
- cmp al, '.'
- jz dot_pressed
- cmp al, '0'
- jb getchar
- cmp al, '9'
- ja getchar
- push ax
- mov dl, al
- mov ah, 02h
- int 21h
- pop ax
- sub al, '0'
- xor ah, ah
- push ax
- mov ax, leng
- inc ax
- mov leng, ax
- mov ax, dot
- cmp ax, 0
- jz getchar
- inc ax
- mov dot, ax
- jmp getchar
- dot_pressed:
- mov ax, dot
- cmp ax, 0
- jnz getchar
- mov ax, minus
- cmp ax, 1
- jz already_minus
- mov ax, leng
- cmp ax, 1
- jb getchar
- mov dl, '.'
- mov ah, 02h
- int 21h
- mov ax, leng
- inc ax
- mov leng, ax
- mov ax, dot
- inc ax
- mov dot, ax
- jmp getchar
- already_minus:
- mov ax, leng
- cmp ax, 2
- jb getchar
- mov dl, '.'
- mov ah, 02h
- int 21h
- mov ax, leng
- inc ax
- mov leng, ax
- mov ax, dot
- inc ax
- mov dot, ax
- jmp getchar
- backspace_pressed:
- minus_pressed:
- mov ax, minus
- cmp ax, 1
- jnz goto2
- jmp getchar
- goto2:
- mov ax, leng
- cmp ax, 0
- jz goto3
- jmp getchar
- goto3:
- mov ax, 1
- mov minus, ax
- mov dl, '-'
- mov ah, 02h
- int 21h
- mov ax, 1
- mov leng, ax
- jmp getchar
- getchar_stop:
- ret
- InputReader ENDP
- main:
- mov ax, @data
- mov ds, ax
- mov dx, offset welcomeMessage
- mov ah, 09h
- int 21h
- mov dx, offset GiveMeA
- mov ah, 09h
- int 21h
- CALL InputReader
- mov ax, 4C00h
- int 21h
- end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement