Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data segment
- poruka1 db "Unesite String: $"
- str1 db "nekipoznatstring$" ;10 mesta + $
- strlen dw $-str1
- str2 db " "
- str3 dw " "
- velikoSlovo dw 'A'
- maloSlovo dw 'a'
- poruka4 db "Pritisnite neki taster...$"
- strrev db 20
- data ends
- ; Definicija stek segmenta
- stek segment stack
- dw 128 dup(0)
- stek ends
- ; Ispis znaka na ekran
- write macro c
- push ax
- push dx
- mov ah, 02
- mov dl, c
- int 21h
- pop dx
- pop ax
- endm
- ; Ucitavanje znaka bez cuvanja
- keypress macro
- push ax
- mov ah, 08
- int 21h
- pop ax
- endm
- ; Ispis stringa na ekran
- writeString macro s
- push ax
- push dx
- mov dx, offset s
- mov ah, 09
- int 21h
- pop dx
- pop ax
- endm
- ; Kraj programa
- krajPrograma macro
- mov ax, 4c02h
- int 21h
- endm
- code segment
- ; Novi red
- novired proc
- push ax
- push bx
- push cx
- push dx
- mov ah,03
- mov bh,0
- int 10h
- inc dh
- mov dl,0
- mov ah,02
- int 10h
- pop dx
- pop cx
- pop bx
- pop ax
- ret
- novired endp
- ; Ucitavanje stringa
- ; Adresa stringa je parametar na steku
- readString proc
- push ax
- push bx
- push cx
- push dx
- push si
- mov bp, sp
- mov dx, [bp+12]
- mov bx, dx
- mov ax, [bp+14]
- mov byte [bx] ,al
- mov ah, 0Ah
- int 21h
- mov si, dx
- mov cl, [si+1]
- mov ch, 0
- kopiraj:
- mov al, [si+2]
- mov [si], al
- inc si
- loop kopiraj
- mov [si], '$'
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- ret 4
- readString endp
- ; Konvertovanje stringa u broj
- strtoint proc
- push ax
- push bx
- push cx
- push dx
- push si
- mov bp, sp
- mov bx, [bp+14]
- mov ax, 0
- mov cx, 0
- mov si, 10
- petlja1:
- mov cl, [bx]
- cmp cl, '$'
- je kraj1
- mul si
- sub cx, 48
- add ax, cx
- inc bx
- jmp petlja1
- kraj1:
- mov bx, [bp+12]
- mov [bx], ax
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- ret 4
- strtoint endp
- ; Konvertovanje broja u string
- inttostr proc
- push ax
- push bx
- push cx
- push dx
- push si
- mov bp, sp
- mov ax, [bp+14]
- mov dl, '$'
- push dx
- mov si, 10
- petlja2:
- mov dx, 0
- div si
- add dx, 48
- push dx
- cmp ax, 0
- jne petlja2
- mov bx, [bp+12]
- petlja2a:
- pop dx
- mov [bx], dl
- inc bx
- cmp dl, '$'
- jne petlja2a
- pop si
- pop dx
- pop cx
- pop bx
- pop ax
- ret 4
- inttostr endp
- ;++++++++++++++++++++++++++ Dodatne metode koje ce nam biti potrebne+++++++++++++++++++++++++++++++++
- toUpperCase macro c
- 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';
- ;i na osnovu toga znamo da li je malo slovo
- jnge krajMacro
- cmp c, 'z'
- jg krajMacro
- add c,razlika
- krajMacro:
- endm
- start:
- ; Postavljanje segmentnih registara
- ASSUME cs: code, ss:stek
- mov ax, data
- mov ds, ax
- unos:
- ; Unos broja M u string strM
- ;===============================probaj ovde da skines komentar
- call novired
- writeString poruka1
- push 10
- push offset str1
- call readString
- call novired
- ;string je ucitan krece obrtanje
- mov es, ax
- mov cx, strLen
- add cx, -2
- lea si, str1
- lea di, strrev
- add si, strLen
- add si, -2
- L1:
- mov al, [si]
- mov [di], al
- dec si
- inc di
- loop L1
- mov al, [si]
- mov [di], al
- inc di
- mov dl, '$'
- mov [di], dl
- Print:
- mov ah, 09h
- lea dx, strrev
- int 21h
- Exit:
- mov ax, 4c00h
- int 21h
- keypress
- krajPrograma
- kraj:
- ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement