Skip to content

Instantly share code, notes, and snippets.

@klemenzarn
Created April 13, 2013 18:50
Show Gist options
  • Save klemenzarn/5379595 to your computer and use it in GitHub Desktop.
Save klemenzarn/5379595 to your computer and use it in GitHub Desktop.
bits 32
global main
extern printf
section .bss
manjse resb 100
len resb 1
section .data
izpis db "Vpiši besedo: ", 0
dolzina equ $-izpis
format db "%d",10,0
section .text
upper:
cld ;postavimo cld flag
mov esi, manjse ;v esi kopiramo naš string
mov edi, manjse ;v edi kopiramo naš string
mov ecx, dword [len] ;v ecx shranimo dolžino niza, ki smo ga vpisali
dec ecx ;zmanjšamo ecx register
spremeni:
lodsb ;kazalec na esi da vrednost v EAX
cmp eax,90 ;preverjamo eax in 90. Vse črke velike začetnice so v ascii tabeli manjše od 90
jle niVelika ;če je ascii koda manjša od 90 pomeni da je črka že velika
sub eax, 32 ;drugače pa ascii kodo neki črki odštejemo za 32. http://answers.yahoo.com/question/index?qid=20090301194640AAy84pm
niVelika:
stosb ;iz EAX v EDI
dec ecx ;ecx--
cmp ecx, 0 ;če je ecx manjši od 0 gremo na return
jg spremeni ;drugače pa gremo nazaj na spremeni
ret
main:
pushad
mov eax, 4 ;v eax shranimo navodilo za jedro katerega bomo uporabljali. V našem primeru sysout
mov ebx, 1 ;v ebx shranimo kater izhod bomo uporabljali. V našem primeru je to zaslon (1 = zaslon)
mov ecx, izpis ;v ecx shranimo kazalec na naš string
mov edx, dolzina ;v edx shranimo dolžino niza, ki ga bomo izpisali na zaslon
int 80h ;prikinitev
mov eax, 3 ;v eax shranimo navodilo... 3 pomeni SYSIN
mov ebx, 0 ;0 pomeni da bomo pisali v spremenljivko
mov ecx, manjse ;v ecx shranimo kazalec na spremeljivko kamor bomo shranili našo besedo
mov edx, 100 ;shranimo dolžino največje možne besede, to je 50
int 80h ;kličemo prekinitev
mov [len], eax ;shranimo dolžino vpisanega niza v spremenljivko len
;izpišemo besedo ki smo jo vpisali
mov eax, 4
mov ebx, 1
mov ecx, manjse
mov edx, len
int 80h
call upper ;kličemo funkcijo upper, ki spremeni našo besedo v velike črke
;izpišemo besedo ki smo jo spremenili v velike čerke
mov eax, 4
mov ebx, 1
mov ecx, manjse
mov edx, len
int 80h
popad
ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment