1. Napisz program który będzie pytał użytkownika po podanie litery. Jeśli użytkownik poda małą literę to zmieni ją na wielką i odwrotnie. (Assembler)



Odpowiedź :

Rekah4

.LC0:

       .string "Podaj litere: "

.LC1:

       .string " %c" ;mozna dac %d dla wyników w ascii

main:

       push    rbp

       mov     rbp, rsp

       sub     rsp, 16

       mov     edi, OFFSET FLAT:.LC0

       mov     eax, 0

       call    printf ; zrzut na stdout

       lea     rax, [rbp-1]

       mov     rsi, rax

       mov     edi, OFFSET FLAT:.LC1

       mov     eax, 0

       call    __isoc99_scanf ;odczyt stdin

       movzx   eax, BYTE PTR [rbp-1]

       cmp     al, 96 ; sprawdzamy czy mniejsze

       jg      .L2

       movzx   eax, BYTE PTR [rbp-1]

       movsx   eax, al

       add     eax, 32 ;dodajemy 32 aby uzykać małą litere

       mov     edi, eax

       call    putchar

.L2:

       movzx   eax, BYTE PTR [rbp-1]

       cmp     al, 90 ; sprawdzamy czy wieksze

       jle     .L3

       movzx   eax, BYTE PTR [rbp-1]

       movsx   eax, al

       sub     eax, 32 ; to samo co w lini 22 tylko odejmujemy

       mov     edi, eax

       call    putchar

.L3:

       mov     eax, 0

       leave

       ret