Как в TASM проверить строку на пустоту? - Assembler

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

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

Здравствуйте. Как в TASM можно проверить строку на пустоту?

Решение задачи: «Как в TASM проверить строку на пустоту?»

textual
Листинг программы
  1. .model small                   
  2. .386                               
  3.  
  4. .data                          
  5. msg db ''
  6. len = $ - msg
  7. s1  db 'full$'
  8. s2  db 'empty$'
  9.  
  10. .stack 100h    
  11.  
  12. .code                                          
  13. start:                                                                     
  14.     mov ax,@data       
  15.     mov ds,ax
  16.    
  17.     mov ah,09h
  18.     mov cx,len
  19.    
  20.     test cx,cx
  21.     jz two
  22.    
  23.     one:
  24.     lea dx,s1
  25.    
  26.     jmp exit
  27.    
  28.     two:
  29.     lea dx,s2  
  30.    
  31.     exit:
  32.     int 21h
  33.    
  34.     mov ah,4Ch                             
  35.     mov al,00h         
  36.     int 21h
  37. end start

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

  1. .model small — указывает на модель памяти компьютера, в данном случае модель small, подразумевающая 16-битный код
  2. .386 — включает расширение 386 для поддержки защищенного режима
  3. .data — секция данных, где хранятся переменные
  4. msg db '' — объявление строки msg, которая будет использоваться для вывода
  5. len = $ - msg — вычисление длины строки msg, используя директиву $
  6. s1 db 'full$' — объявление строки s1, которая будет использоваться для вывода
  7. s2 db 'empty$' — объявление строки s2, которая будет использоваться для вывода
  8. .stack 100h — указывает на размер стека в 100 байт
  9. .code — секция кода, где размещается основной код программы
  10. start: — точка входа в программу
  11. mov ax,@data — перемещение сегмента данных в регистр AX
  12. mov ds,ax — установка сегмента данных в качестве текущего сегмента
  13. mov ah,09h — установка регистра AH для функции 09h (вывод строки)
  14. mov cx,len — перемещение длины строки msg в регистр CX
  15. test cx,cx — проверка регистра CX на ноль (пустая строка)
  16. jz two — переход к метке two, если регистр CX равен нулю
  17. one: — метка для случая, когда строка не пуста
  18. lea dx,s1 — перемещение адреса строки s1 в регистр DX
  19. jmp exit — переход к метке exit
  20. two: — метка для случая, когда строка пуста
  21. lea dx,s2 — перемещение адреса строки s2 в регистр DX
  22. exit: — метка для завершения цикла
  23. int 21h — вызов функции 21h для вывода строки на экран
  24. mov ah,4Ch — установка регистра AH для функции 4Ch (завершение работы программы)
  25. mov al,00h — установка регистра AL для параметра функции 4Ch (выход с рабочим статусом)
  26. int 21h — вызов функции 21h для завершения работы программы

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


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

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

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы