Created
April 13, 2013 18:50
-
-
Save klemenzarn/5379595 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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