Взять последний символ строки - Assembler
Формулировка задачи:
Есть программа, которая принимает аргумент в командной строке и выводит его на экран.
В строке 11 я заношу аргумент, который был введен в командной строке, в регистр еdx. Теперь там находится наша строка. Хочу взять последний символ строки, в моем случае это будет цифра от 0 до 9 т.е. если я в командной строке написал
.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 "
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 "
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д