Advertisement
Guest User

Untitled

a guest
Feb 1st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; multi-segment executable file template.
  2.  
  3. data segment
  4.     ; add your data here!
  5.     pkey db "press any key...$"
  6.     n db 1d
  7.     x1 db ? ;; REDEN BROJ
  8.     pomosna_bx dw ?  
  9.     vrednost_bx db ?
  10.     index dw 0d
  11.     prom db 0d
  12.    
  13. ends
  14.  
  15. stack segment
  16.     dw   128  dup(0)
  17. ends
  18.  
  19. code segment
  20.  
  21. dodaj_text proc
  22.    
  23.     ;sub [bx],65d ; a=0
  24.     mov AH,0h
  25.     mov AL,x1
  26.     MOV CH,0D
  27.     mov CL,20d
  28.     mul CX  
  29.     mov index,ax
  30.     mov pomosna_bx,bx
  31.    
  32.     mov DL,[bx]
  33.     mov vrednost_bx,DL
  34.     mov bx,index
  35.     MOV DI,index
  36.     mov [BX],DL ;; PREFRLAME  vrednost od edna mem.lokacija vo dr
  37.    
  38.     mov bx,pomosna_bx
  39.     citanje_na_text:
  40.     inc BX
  41.     inc index
  42.     cmp [bx],43d; +
  43.     je kraj_dodaj_text
  44.    
  45.     ;;ne e +, proveri bukva
  46.     cmp [DS][BX],65d  ;; A
  47.     jl ne_e_bukva
  48.      cmp [bx],90d  ;; Z
  49.     jg ne_e_bukva  
  50.     ;-65D NA [BX]
  51.     mov pomosna_bx,bx
  52.     mov DL,[bx]
  53.     mov vrednost_bx,DL
  54.     mov bx,index
  55.      
  56.     mov [BX],DL
  57.     mov bx,pomosna_bx
  58.    
  59.     jmp citanje_na_text
  60.    
  61.    
  62.     ne_e_bukva:
  63.     sub bx,1d
  64.     call izbrisi_proc
  65.    
  66.     kraj_dodaj_text:
  67.     mov pomosna_bx,bx
  68.     mov bx,index
  69.     mov [bx],43d
  70.     mov bx,pomosna_bx
  71.    
  72.     ret
  73.     dodaj_text endp
  74. SET_N proc
  75.     inc bx
  76.     cmp [bx],69d ;e
  77.     jne kraj_proc
  78.     inc bx
  79.     cmp [bx],84d   ;t
  80.     jne kraj_proc
  81.    
  82.    
  83.     mov n,0
  84.     citaj_broevi:
  85.    
  86.     inc bx
  87.     cmp [bx],48d
  88.     jl kraj_proc
  89.     cmp [bx],57d
  90.     jg kraj_proc
  91.     sub [bx],48d
  92.     mov AL,[BX]
  93.     add n,AL
  94.     jmp citaj_broevi
  95.    
  96.  
  97.    
  98.    
  99.    
  100.     kraj_proc:
  101.    
  102.     ret
  103.     SET_N ENDP
  104.              
  105.              
  106. izbrisi_proc proc
  107.    
  108.    mov AL, x1
  109.    MOV CH,0D
  110.    mov CL,20d
  111.    mul CL
  112.    mov pomosna_bx,bx
  113.    mov AH,0
  114.    mov BX,AX ;; x1*20
  115.    brisi_vasko:
  116.         mov [BX],000d
  117.         inc bx
  118.    loop brisi_vasko
  119.    mov BX,pomosna_bx              
  120.    RET
  121. izbrisi_proc endp    
  122.    
  123. start:
  124.  
  125.     mov ax, data
  126.     mov ds, ax
  127.     mov es, ax
  128.  
  129.          
  130.     pocetok:
  131.     mov bx,400h
  132.     citanje:
  133.     mov ah,01d
  134.     int 21h
  135.     mov [bx],al
  136.     inc bx
  137.    
  138.     cmp al,45d
  139.     je proveri_vtor_minus
  140.    
  141.     jmp citanje
  142.    
  143.     proveri_vtor_minus:
  144.     mov ah, 01d
  145.     int 21h
  146.     mov [bx],al
  147.     inc bx
  148.     cmp al,45d
  149.     je pocetok_obrabotka
  150.     jmp citanje
  151.    
  152.    
  153.    
  154.     pocetok_obrabotka:
  155.     mov bx,400h
  156.     JMP obrabotka1
  157.    
  158.    
  159.     obrabotka:
  160.     inc BX
  161.     obrabotka1:
  162.     mov cl,[bx]    
  163.     cmp cl,83d   ;s
  164.     jne ne_e_s
  165.     call SET_N
  166.     jmp obrabotka
  167.    
  168.     ne_e_s:    
  169.     mov cl,[bx]
  170.     cmp cl,49d     ; <= 2
  171.     jg obrabotka
  172.     mov cl,[bx]
  173.     cmp cl, 48d
  174.     jl obrabotka      ;; AKO NE E NI 0 ni 1
  175.    
  176.    
  177.     mov CL,10d
  178.     MOV AH,0H
  179.     mov AL,[BX]
  180.     SUB AL,48d
  181.     MUL CL
  182.     mov x1,AL ;; X1= PRVATA CIFRA
  183.    
  184.     barame_vtora_cifra:
  185.     inc BX
  186.     cmp [bx],48d ; 0
  187.     jl odzemi_eden_bx  
  188.     cmp [bx],57d
  189.     jg odzemi_eden_bx      
  190.    
  191.     ;; najdovme dve cifri
  192.     mov AL, [bx]
  193.     sub AL,48d
  194.     add x1,AL  
  195.    
  196.    
  197.    
  198.     ;PROVERKI DALI E -, +-, text+  
  199.     proverka_komandi:
  200.     inc BX
  201.     cmp [bx],45d ; dali e XX-
  202.     je izbrisi_poraka
  203.    
  204.     cmp [bx],65d;A
  205.     jl ne_e_text
  206.     cmp [bx],90d ;Z
  207.     jg ne_e_text
  208.     ;najdovme text
  209.     najdovme_text:
  210.     call dodaj_text
  211.     jmp obrabotka
  212.  
  213.    
  214.     odzemi_eden_bx:
  215.     sub BX,1d
  216.     jmp obrabotka
  217.    
  218.     izbrisi_poraka:
  219.     call izbrisi_proc
  220.     jmp obrabotka
  221.          
  222.     ne_e_text:
  223.    
  224.    
  225.     mov ax, 4c00h ; exit to operating system.
  226.     int 21h    
  227. ends
  228.  
  229. end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement