У меня есть домашнее задание в классе компьютерной архитектуры, которое заключается в написании кода на языке ASM (32 бита), который удаляет определенный символ из заданной строки, а также дает мне новую длину (исключая '/ 0')
- Пример: "Hello \ n \ 0"
- Символ для удаления: 'l'
- Результат: "Heo \ n \ 0"
- Длина: 4
Я могу удалить любой символ из строки, однако, в качестве теста, чтобы проверить, может ли программа работать в любой ситуации, у меня есть условие, чтобы проверить, равен ли этот символ / 0, и каждый раз, когда я делаю это, Сбой сравнения, поскольку он переводит «/ 0» в «0».
Я читал в Интернете, что когда вы пишете '/', это равняется записи (char), которая возвращает форму в виде символа.
Можно ли как-нибудь сравнить символ '/ 0' без его преобразования? Я также не могу изменить раздел данных, поскольку он является частью правил домашней работы, только то, что находится между '' и "".
Ниже я представляю свой код
Моя переменная называется remove и объявлена так:
Я тогда делаю:
mov remove, %cl
cmp $0, %cl
jz goToEnd
если нулевой флаг установлен в 0, тогда я заканчиваю свою функцию, однако это никогда не происходит, поскольку% cl получает значение в десятичном виде 48, соответствующее '0'.