Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. data segment
  2.     poruka1 db "Unesite String: $"
  3.     str1 db "nekipoznatstring$" ;10 mesta + $
  4.     strlen dw $-str1
  5.     str2 db "          "
  6.     str3 dw "          "
  7.     velikoSlovo dw 'A'
  8.     maloSlovo dw 'a'
  9.     poruka4 db "Pritisnite neki taster...$"
  10.     strrev db 20
  11. data ends
  12. ; Definicija stek segmenta
  13. stek segment stack
  14.     dw 128 dup(0)
  15. stek ends
  16. ; Ispis znaka na ekran  
  17. write macro c
  18.     push ax  
  19.     push dx
  20.     mov ah, 02
  21.     mov dl, c
  22.     int 21h
  23.     pop dx
  24.     pop ax
  25. endm
  26. ; Ucitavanje znaka bez cuvanja
  27. keypress macro
  28.     push ax
  29.     mov ah, 08
  30.     int 21h
  31.     pop ax
  32. endm
  33. ; Ispis stringa na ekran
  34. writeString macro s
  35.     push ax
  36.     push dx  
  37.     mov dx, offset s
  38.     mov ah, 09
  39.     int 21h
  40.     pop dx
  41.     pop ax
  42. endm
  43. ; Kraj programa          
  44. krajPrograma macro
  45.     mov ax, 4c02h
  46.     int 21h
  47. endm  
  48.            
  49. code segment
  50. ; Novi red
  51. novired proc
  52.     push ax
  53.     push bx
  54.     push cx
  55.     push dx
  56.     mov ah,03
  57.     mov bh,0
  58.     int 10h
  59.     inc dh
  60.     mov dl,0
  61.     mov ah,02
  62.     int 10h
  63.     pop dx
  64.     pop cx
  65.     pop bx
  66.     pop ax
  67.     ret
  68. novired endp
  69. ; Ucitavanje stringa
  70. ; Adresa stringa je parametar na steku
  71. readString proc
  72.     push ax
  73.     push bx
  74.     push cx
  75.     push dx
  76.     push si
  77.     mov bp, sp
  78.     mov dx, [bp+12]
  79.     mov bx, dx
  80.     mov ax, [bp+14]
  81.     mov byte [bx] ,al
  82.     mov ah, 0Ah
  83.     int 21h
  84.     mov si, dx    
  85.     mov cl, [si+1]
  86.     mov ch, 0
  87. kopiraj:
  88.     mov al, [si+2]
  89.     mov [si], al
  90.     inc si
  91.     loop kopiraj    
  92.     mov [si], '$'
  93.     pop si  
  94.     pop dx
  95.     pop cx
  96.     pop bx
  97.     pop ax
  98.     ret 4
  99. readString endp
  100. ; Konvertovanje stringa u broj
  101. strtoint proc
  102.     push ax
  103.     push bx
  104.     push cx
  105.     push dx
  106.     push si
  107.     mov bp, sp
  108.     mov bx, [bp+14]
  109.     mov ax, 0
  110.     mov cx, 0
  111.     mov si, 10
  112. petlja1:
  113.     mov cl, [bx]
  114.     cmp cl, '$'
  115.     je kraj1
  116.     mul si
  117.     sub cx, 48
  118.     add ax, cx
  119.     inc bx  
  120.     jmp petlja1
  121. kraj1:
  122.     mov bx, [bp+12]
  123.     mov [bx], ax
  124.     pop si  
  125.     pop dx
  126.     pop cx
  127.     pop bx
  128.     pop ax
  129.     ret 4
  130. strtoint endp
  131. ; Konvertovanje broja u string
  132. inttostr proc
  133.    push ax
  134.    push bx
  135.    push cx
  136.    push dx
  137.    push si
  138.    mov bp, sp
  139.    mov ax, [bp+14]
  140.    mov dl, '$'
  141.    push dx
  142.    mov si, 10
  143. petlja2:
  144.    mov dx, 0
  145.    div si
  146.    add dx, 48
  147.    push dx
  148.    cmp ax, 0
  149.    jne petlja2
  150.    
  151.    mov bx, [bp+12]
  152. petlja2a:      
  153.    pop dx
  154.    mov [bx], dl
  155.    inc bx
  156.    cmp dl, '$'
  157.    jne petlja2a
  158.    pop si  
  159.    pop dx
  160.    pop cx
  161.    pop bx
  162.    pop ax
  163.    ret 4
  164. inttostr endp  
  165.  
  166. ;++++++++++++++++++++++++++ Dodatne metode koje ce nam biti potrebne+++++++++++++++++++++++++++++++++
  167. toUpperCase macro c
  168.     cmp c, 'a'       ;When you do a cmp a,b, the flags are set as if you had calculated a - b. Na osnovu ovoga moze videti da li je karakter c ispod ili iznad karaktera 'a' i 'z';
  169.                      ;i na osnovu toga znamo da li je malo slovo
  170.     jnge krajMacro
  171.     cmp c, 'z'
  172.     jg krajMacro
  173.     add c,razlika
  174. krajMacro:
  175. endm
  176.  
  177.  
  178.  
  179. start:
  180.     ; Postavljanje segmentnih registara      
  181.     ASSUME cs: code, ss:stek
  182.     mov ax, data
  183.     mov ds, ax
  184.                        
  185. unos:          
  186.     ; Unos broja M u string strM  
  187.    
  188.    
  189.        ;===============================probaj ovde da skines komentar      
  190.     call novired
  191.     writeString poruka1
  192.     push 10
  193.     push offset str1
  194.     call readString    
  195.     call novired
  196.                
  197.                
  198.                
  199.                
  200.    ;string je ucitan krece obrtanje
  201.  
  202.     mov es, ax
  203.     mov cx, strLen
  204.     add cx, -2
  205.     lea si, str1
  206.     lea di, strrev
  207.     add si, strLen
  208.     add si, -2
  209.     L1:
  210.        mov al, [si]
  211.        mov [di], al
  212.        dec si
  213.        inc di
  214.        loop L1
  215.        mov al, [si]
  216.        mov [di], al
  217.        inc di
  218.        mov dl, '$'
  219.        mov [di], dl
  220.     Print:
  221.        mov ah, 09h
  222.        lea dx, strrev
  223.        int 21h
  224.     Exit:
  225.        mov ax, 4c00h
  226.        int 21h
  227.    
  228.    
  229.    
  230.     keypress
  231.     krajPrograma
  232. kraj:
  233. ends
  234. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement