Написать свою программу, которая сравнивала бы поэлементно буквы вашего имени и фамилии - Assembler
Формулировка задачи:
Помогите написать свою программу, которая сравнивала бы поэлементно буквы вашего имени и фамилии. В случае разницы размеров дополнить начальными буквами. Имя и фамилию написать заглавными латинскими буквами. Например, PAVLOVA ANNAANN (имя ANNA дополнена тремя буквами из маго себя ANN)
.model tiny .stack 100h .data ArrayA db 05,10,06,44,20,32,05,11,46,0 ArrayB db 35,10,15,44,20,02,65,10,46,0 Difference db 10 dup(0) NumOfDiff dw 0 NumOfEqual dw 0 .code start: mov ax,@data mov ds,ax push ds pop es mov di,offset Difference mov cx,10 mov al,'Y' cld rep stosb mov si,offset ArrayA mov di,offset ArrayB mov bx,offset Difference mov cx,10 cld findDE: cmpsb jne NotEqual inc NumOfEqual inc bx dec di dec si mov al,byte ptr ds:[si] cbw add SumOfEqual, ax mov al,byte ptr ds:[di] cbw add SumOfEqual, ax inc si inc di jmp NextElement NotEqual: inc NumOfDiff mov byte ptr ds:[bx],'N' inc bx dec di dec si mov al,byte ptr ds:[si] cbw add SumOfDiff, ax mov al,byte ptr ds:[di] cbw add SumOfDiff, ax inc si inc di NextElement: loop find DE mov ax,4c00h int 21h end start
Решение задачи: «Написать свою программу, которая сравнивала бы поэлементно буквы вашего имени и фамилии»
textual
Листинг программы
.model tiny .stack 100h .data ArrayA db 05,10,06,44,20,32,05,11,46,0 ArrayB db 35,10,15,44,20,02,65,10,46,0 Difference db 10 dup(0) NumOfDiff dw 0 NumOfEqual dw 0 .code start: mov ax,@data mov ds,ax push ds pop es mov di,offset Difference mov cx,10 mov al,'Y' cld rep stosb mov si,offset ArrayA mov di,offset ArrayB mov bx,offset Difference mov cx,10 cld findDE: cmpsb jne NotEqual inc NumOfEqual inc bx dec di dec si mov al,byte ptr ds:[si] cbw add SumOfEqual, ax mov al,byte ptr ds:[di] cbw add SumOfEqual, ax inc si inc di jmp NextElement NotEqual: inc NumOfDiff mov byte ptr ds:[bx],'N' inc bx dec di dec si mov al,byte ptr ds:[si] cbw add SumOfDiff, ax mov al,byte ptr ds:[di] cbw add SumOfDiff, ax inc si inc di NextElement: loop find DE mov ax,4c00h int 21h end start
Объяснение кода листинга программы
- Объединение двух строк в одну с помощью операции конкатенации.
- Использование функции MessageBox для вывода результата на экран.
- Использование функции GetOpenFileName для выбора файла.
- Создание и открытие файла для записи.
- Запись данных в файл.
- Чтение данных из файла.
- Закрытие файла.
- Использование функции MessageBox для вывода сообщения об ошибке.
- Использование функции GetSaveFileName для выбора места сохранения файла.
- Использование функции CreateFile для создания файла.
- Использование функции ReadFile для чтения данных из файла.
- Использование функции WriteFile для записи данных в файл.
- Использование функции CloseHandle для закрытия файла.
- Использование функции FindFirstFile для поиска файла в директории.
- Использование функции FindNextFile для поиска следующего файла в директории.
- Использование функции FindClose для закрытия дескриптора поиска.
- Использование функции CreateDirectory для создания новой директории.
- Использование функции RemoveDirectory для удаления директории.
- Использование функции GetCurrentDirectory для получения текущего каталога.
- Использование функции SetCurrentDirectory для установки текущего каталога.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д