;exercise 4-1

.model small

CR EQU 0Dh
BS EQU 08h

data segment

	buffer db 81 dup(?)

data ends
		 
code segment

	assume cs:code, ds:data

    start:
	mov ax,data
  	mov ds,ax
  	
  	mov si, 0
  	
    myloop:
    	mov ah, 1
    	int 21h
    	
    	cmp al, CR
    	je exit
    	
    	cmp al, BS
    	je backspace
    	
    	jmp continue
    	
    backspace:
    	cmp si, 0
    	je myloop
    	
    	mov ah, 3
    	mov bh, 0
    	int 10h
    	
    	dec bl
    	
    	mov ah, 2
    	int 10h
    	
    	mov ah, 0Ah
    	mov cx, 1
    	mov al, ' '
    	int 10h
    	
    	dec si
    	jmp myloop
    	
    continue:
    	mov buffer[si], al
    	
    	inc si
    	
    	cmp si, 80
    	je exit
    	
    	jmp myloop
    	  	
    exit:
  	mov ax,4c00h
  	int 21h

code ends

end start