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

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

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

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

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

textual
Листинг программы
.model small                    
.386                                
 
.data                           
msg db ''
len = $ - msg
s1  db 'full$'
s2  db 'empty$'
 
.stack 100h     
 
.code                                           
start:                                                                      
    mov ax,@data        
    mov ds,ax
    
    mov ah,09h
    mov cx,len
    
    test cx,cx
    jz two
    
    one:
    lea dx,s1
    
    jmp exit
    
    two:
    lea dx,s2   
    
    exit:
    int 21h
    
    mov ah,4Ch                              
    mov al,00h          
    int 21h
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
Похожие ответы