Чтение строки из коммандной строки - Assembler
Формулировка задачи:
Компилирую программу следующим способом: Выводит на экран первую букву слова abc т.е. 'a', если в строке кода №9 ноль заменить на 1, то выведет соответственно 'b', если 2, то 'c', eсли 3, то пустую строку.
Дело то вот то в чем, я хочу вывести на экран строку полностью, для этого мне нужно сравнить принадлежит ли код ASCII данной буквы к последовательности чисел от 97 до 122 включительно т.е от 'a' до 'z'. Вопрос таков, как проверить является ли символ буквой в нижнем регистре?
gcc -o prog prog.s -m32
Вызываю программу./prog abc
т.е. с аргументом в коммандной строке..intel_syntax noprefix .text .globl main main: mov ecx,[esp+8] mov edx,[ecx+4] add edx,0 mov eax,[edx] push eax mov eax,offset message push eax call printf add esp,8 mov eax,0 ret .data message: .asciz "%c\n"
Решение задачи: «Чтение строки из коммандной строки»
textual
Листинг программы
mov al,[edx] cmp al,97 je fin
Объяснение кода листинга программы
mov al,[edx]
- в данном коде происходит перемещение значения из регистра edx в регистр al. Это необходимо для того, чтобы получить доступ к значению, хранящемуся в регистре edx, и использовать его в дальнейших операциях.cmp al,97
- здесь происходит сравнение значения в регистре al с числом 97. Если значение в регистре al равно 97, то выполняется переход к меткеfin
.je fin
- это команда перехода, которая выполняет переход к меткеfin
, если выполняется условие, указанное в предыдущей команде (то есть значение в регистре al равно 97).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д