Взять последний символ строки - Assembler

Узнай цену своей работы

Формулировка задачи:

Есть программа, которая принимает аргумент в командной строке и выводит его на экран.
.intel_syntax noprefix
.text
.globl main
main:
        push ebp
        mov ebp,esp
        mov ebx,[ebp+12]
        mov eax,[ebp+8]
 
        xor edx,edx
        mov edx,DWORD [ebx]

        push ebx
        push eax
        push edx
        mov edx,offset msg
        push edx
        call printf
        add esp,8
 
        pop eax
        pop ebx

        mov esp,ebp
        pop ebp
        ret
 
.data
msg: .ascii "%s "
В строке 11 я заношу аргумент, который был введен в командной строке, в регистр еdx. Теперь там находится наша строка. Хочу взять последний символ строки, в моем случае это будет цифра от 0 до 9 т.е. если я в командной строке написал

examleString8

, то в коменчном мне требуется "добраться" до последнего символа т.е. до символа '8', а потом вывести эту строку соответственно 8 раз. Вопрос такой, какие существуют команды для того, чтобы осуществить данную цель???? Читал про команды CMPS и SCAS (вычитает элемент строки-приемника). На правильной ли я дороге стою, разбираясь с этими командами? Либо же сужествует какой-нибудь элементарный способ, чтобы получить последний символ введённого слова???

Решение задачи: «Взять последний символ строки»

textual
Листинг программы
.intel_syntax noprefix
.text
.globl main
main:
        push ebp
        mov ebp,esp
        mov ebx,[ebp+12]
        mov eax,[ebp+8]
 
        cld
        mov al,'1'
        mov cx, 255
        mov edi,DWORD [ebx]
        repne scasb
        je found
 
        mov edi, DWORD [ebx]
 
 
        push ebx
        push eax
        push edi
        mov edi,offset msg
        push edi
        call printf
        add esp,8
 
        pop eax
        pop ebx
found:
 
        mov esp,ebp
        pop ebp
        ret
 
.data
msg: .ascii "%s "

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы