Заменить заглавные символы на строчные, вставка в С++ - Assembler
Формулировка задачи:
Помогите написать программу, которая заменяет заглавные символы в строчные.
Есть пример, который заменяет символы "а" на *. Его надо переделать в задачу выше
Если можно, с комментариями
#include "stdafx.h" #include <iostream> #include <string.h> #include "conio.h" int _tmain(int argc, _TCHAR* argv[]) { setlocale(0, "rus"); char name[]="badalandabad"; printf("Первоначальная срока: %s", name); _asm { lea ebx, name mov ecx, 12 lab: mov ah, [ebx] cmp ah, 61h jnz lab2 mov [ebx], 2Ah lab2: inc ebx loop lab } printf("\nОтредактированнаясрока: %s", name); getch(); return 0; }
Решение задачи: «Заменить заглавные символы на строчные, вставка в С++»
textual
Листинг программы
#include <stdlib.h> #include <string.h> #include <stdio.h> #include <conio.h> void main(int argc, char* argv[]) { char *name; int len; //setlocale(0, "rus"); if (argv[1]) {name = argv[1]; } else { printf("%s", "Enter string:"); name = malloc(80); gets(name);} len = strlen(name); printf("Первоначальная срока: %s", name); _asm { mov esi, name mov ecx, len @loop: lodsb cmp al, 41h jb @next cmp al, 5Ah ja @next add al,20h mov [esi-1], al @next: loop @loop } printf("\nОтредактированная срока: %s\n\r", name); getch(); }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются переменные: name (указатель на строку) и len (для хранения длины строки)
- Проверяется наличие аргумента командной строки. Если он есть, то вводится в качестве имени, иначе пользователю предлагается ввести строку
- Вычисляется длина строки
- Выводится первоначальная строка
- Код на ассемблере переводит заглавные буквы в строчные, добавляя к ним 20h (маленькая буква
а
в кодировке ASCII имеет значение 97, а большаяА
- 65, разница 32, поэтому прибавляем 20h, что равно 32 в десятичной системе счисления) - Выводится отредактированная строка
- Программа ожидает нажатия клавиши
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д