Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; multi-segment executable file template.
- data segment
- ; add your data here!
- pkey db "press any key...$"
- n db 1d
- x1 db ? ;; REDEN BROJ
- pomosna_bx dw ?
- vrednost_bx db ?
- index dw 0d
- prom db 0d
- ends
- stack segment
- dw 128 dup(0)
- ends
- code segment
- dodaj_text proc
- ;sub [bx],65d ; a=0
- mov AH,0h
- mov AL,x1
- MOV CH,0D
- mov CL,20d
- mul CX
- mov index,ax
- mov pomosna_bx,bx
- mov DL,[bx]
- mov vrednost_bx,DL
- mov bx,index
- MOV DI,index
- mov [BX],DL ;; PREFRLAME vrednost od edna mem.lokacija vo dr
- mov bx,pomosna_bx
- citanje_na_text:
- inc BX
- inc index
- cmp [bx],43d; +
- je kraj_dodaj_text
- ;;ne e +, proveri bukva
- cmp [DS][BX],65d ;; A
- jl ne_e_bukva
- cmp [bx],90d ;; Z
- jg ne_e_bukva
- ;-65D NA [BX]
- mov pomosna_bx,bx
- mov DL,[bx]
- mov vrednost_bx,DL
- mov bx,index
- mov [BX],DL
- mov bx,pomosna_bx
- jmp citanje_na_text
- ne_e_bukva:
- sub bx,1d
- call izbrisi_proc
- kraj_dodaj_text:
- mov pomosna_bx,bx
- mov bx,index
- mov [bx],43d
- mov bx,pomosna_bx
- ret
- dodaj_text endp
- SET_N proc
- inc bx
- cmp [bx],69d ;e
- jne kraj_proc
- inc bx
- cmp [bx],84d ;t
- jne kraj_proc
- mov n,0
- citaj_broevi:
- inc bx
- cmp [bx],48d
- jl kraj_proc
- cmp [bx],57d
- jg kraj_proc
- sub [bx],48d
- mov AL,[BX]
- add n,AL
- jmp citaj_broevi
- kraj_proc:
- ret
- SET_N ENDP
- izbrisi_proc proc
- mov AL, x1
- MOV CH,0D
- mov CL,20d
- mul CL
- mov pomosna_bx,bx
- mov AH,0
- mov BX,AX ;; x1*20
- brisi_vasko:
- mov [BX],000d
- inc bx
- loop brisi_vasko
- mov BX,pomosna_bx
- RET
- izbrisi_proc endp
- start:
- mov ax, data
- mov ds, ax
- mov es, ax
- pocetok:
- mov bx,400h
- citanje:
- mov ah,01d
- int 21h
- mov [bx],al
- inc bx
- cmp al,45d
- je proveri_vtor_minus
- jmp citanje
- proveri_vtor_minus:
- mov ah, 01d
- int 21h
- mov [bx],al
- inc bx
- cmp al,45d
- je pocetok_obrabotka
- jmp citanje
- pocetok_obrabotka:
- mov bx,400h
- JMP obrabotka1
- obrabotka:
- inc BX
- obrabotka1:
- mov cl,[bx]
- cmp cl,83d ;s
- jne ne_e_s
- call SET_N
- jmp obrabotka
- ne_e_s:
- mov cl,[bx]
- cmp cl,49d ; <= 2
- jg obrabotka
- mov cl,[bx]
- cmp cl, 48d
- jl obrabotka ;; AKO NE E NI 0 ni 1
- mov CL,10d
- MOV AH,0H
- mov AL,[BX]
- SUB AL,48d
- MUL CL
- mov x1,AL ;; X1= PRVATA CIFRA
- barame_vtora_cifra:
- inc BX
- cmp [bx],48d ; 0
- jl odzemi_eden_bx
- cmp [bx],57d
- jg odzemi_eden_bx
- ;; najdovme dve cifri
- mov AL, [bx]
- sub AL,48d
- add x1,AL
- ;PROVERKI DALI E -, +-, text+
- proverka_komandi:
- inc BX
- cmp [bx],45d ; dali e XX-
- je izbrisi_poraka
- cmp [bx],65d;A
- jl ne_e_text
- cmp [bx],90d ;Z
- jg ne_e_text
- ;najdovme text
- najdovme_text:
- call dodaj_text
- jmp obrabotka
- odzemi_eden_bx:
- sub BX,1d
- jmp obrabotka
- izbrisi_poraka:
- call izbrisi_proc
- jmp obrabotka
- ne_e_text:
- mov ax, 4c00h ; exit to operating system.
- int 21h
- ends
- end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement