Чтение строки из коммандной строки - Assembler

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

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

Компилирую программу следующим способом:

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"
Выводит на экран первую букву слова abc т.е. 'a', если в строке кода №9 ноль заменить на 1, то выведет соответственно 'b', если 2, то 'c', eсли 3, то пустую строку. Дело то вот то в чем, я хочу вывести на экран строку полностью, для этого мне нужно сравнить принадлежит ли код ASCII данной буквы к последовательности чисел от 97 до 122 включительно т.е от 'a' до 'z'. Вопрос таков, как проверить является ли символ буквой в нижнем регистре?

Решение задачи: «Чтение строки из коммандной строки»

textual
Листинг программы
mov al,[edx]
cmp al,97
je fin

Объяснение кода листинга программы

  1. mov al,[edx] - в данном коде происходит перемещение значения из регистра edx в регистр al. Это необходимо для того, чтобы получить доступ к значению, хранящемуся в регистре edx, и использовать его в дальнейших операциях.
  2. cmp al,97 - здесь происходит сравнение значения в регистре al с числом 97. Если значение в регистре al равно 97, то выполняется переход к метке fin.
  3. je fin - это команда перехода, которая выполняет переход к метке fin, если выполняется условие, указанное в предыдущей команде (то есть значение в регистре al равно 97).

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


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

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

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