Разбить строку и записать информацию в отдельные переменные - Assembler

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

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

Лабораторная №3. Тема: Работа со строками. Дана строка с информацией о студенте (Фамилия, дата рождения, группа). Разбить и записать информацию в отдельные переменные

Решение задачи: «Разбить строку и записать информацию в отдельные переменные»

textual
Листинг программы
text segment
            assume CS:text,DS:data
            begin: mov AX,data
            mov DS,AX
            mov es,ax 
                      
            mov CX,length 
            mov di,offset stream   
            cld
            mov AL,' '    
            repne scasb 
            je for_surname         
   for_surname:   
             mov BX,di  
             mov CX,di
             dec CX
             mov si,offset stream
             push DI
             mov di,offset surname     
             cld
             rep movsb  
             
            
            lea cx,length
            sub CX,BX
            dec cx
            pop di  
            xor si,si
            cld  
            mov AL,' '    
            repne scasb 
            je for_birth
            
   for_birth: 
             mov CX,di 
             sub CX,BX 
             dec CX
             lea si,[stream+BX]  
             mov BX,di 
             push DI
             mov di,offset birth     
             cld
             rep movsb 
         
                         
            lea cx,length
            dec cx
            pop di  
            xor si,si
            cld  
            mov AL,' '    
            repne scasb 
            je for_group
            
   for_group: 
             mov CX,di 
             sub CX,BX 
             dec CX
             lea si,[stream+BX]  
             push DS
             pop ES
             mov BX,di
             mov di,offset group     
             cld
             rep movsb 
            mov AH,4Ch
            mov AL,0
            int 21h
 
            
    text ends  
data segment
stream   db 'Boguslavskiy 31.03.1997 PI-24 $' 
length dw 30    
surname db 30 dup(0)
birth db 30 dup(0)
group db 30 dup(0)      
    data ends  
 
 
end begin

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

  1. Переменная text содержит код программы.
  2. Переменная data содержит данные, используемые в программе.
  3. Переменная stream содержит строку, которую необходимо разбить на отдельные поля.
  4. Переменная length содержит длину строки в байтах.
  5. Переменные surname, birth и group используются для хранения отдельных полей строки.
  6. Код программы использует регистры AX, DS, ES и CX для выполнения операций.
  7. Команда mov AX,data загружает значение переменной data в регистр AX.
  8. Команда mov DS,AX указывает, что сегмент данных должен быть равен регистру AX.
  9. Команда mov es,ax загружает значение регистра AX в регистр ES.
  10. Команда mov CX,length загружает значение переменной length в регистр CX.
  11. Команда mov di,offset stream загружает смещение переменной stream в регистр DI.
  12. Команда cld устанавливает флаг направления переноса в 1, что означает, что данные будут записаны в обратном порядке.
  13. Команда mov AL,' ' загружает символ пробела в регистр AL.
  14. Команда repne scasb используется для поиска первого неравного символа в строке.
  15. Если символ найден, то выполняется переход к метке for_surname.
  16. Если символ не найден, то выполняется переход к следующей итерации цикла.
  17. В блоке for_surname происходит сохранение индекса первого неравного символа в регистре BX и перезапись строки в переменную surname.
  18. В блоке for_birth происходит поиск символа, обозначающего день рождения, и сохранение его индекса в регистре BX.
  19. В блоке for_group происходит поиск символа, обозначающего группу, и сохранение его индекса в регистре BX.
  20. В конце программы выполняется вывод сообщения об успешном выполнении программы.

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


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

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

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