"h4ppy c0d1ng" yi "H4PPY C0D1NG" ye dönüştürmem gerekiyor. Ben bu dilde bir acemi değilim, ama burada programı bitirmek, ne de dize yazdırmak olmayacağını daha çalıştırıldığında int 21h, diğer yanlış olduğunu düşünüyorum .Ben benim girişimi (ubuntu i386 VirtualBox Mac) 'dir:Montaj: küçük harf ile UPPERCASE
section .text
GLOBAL _start
_start:
mov ecx, string
mov edx, length
call toUpper
call print
mov eax, 1
mov ebx, 0
int 80h
;String in ecx and length in edx?
;-------------------------
toUpper:
mov eax,ecx
cmp al,0x0 ;check it's not the null terminating character?
je done
cmp al,'a'
jb next_please
cmp al,'z'
ja next_please
sub cl,0x20
ret
next_please:
inc al
jmp toUpper
done: int 21h ; just leave toUpper (not working)
print:
mov ebx, 1
mov eax, 4
int 80h
ret
section .data
string db "h4ppy c0d1ng", 10
length equ $-string
İşletim sisteminizi belirtmiyorsunuz, ancak bir noktadan int int int ('int 0x80') ve başka bir bilgisayarda int int (0x21) kullandığınızı görüyorsanız, Linux kodunu BIOS kodu. –
Sağ taraftaki sanal kutudaki ubuntu, – j1nma
Aramayı int 21h'ye kaldırın ve uygulamayı Linux'ta sonlandırmak için uygun yolu kullanın. Ardından, kayıt görevlerinizi toUpper'da düzeltin ve dize boyunca ilerlemek için bir döngü ekleyin. –