Вывод строки (int 10h) - Assembler

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

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

Листинг программы
  1. MODEL TINY
  2. STACK 256
  3. DATASEG
  4. str_text DB 'text'
  5. CODESEG
  6. start:
  7. mov ax,@data
  8. mov ds,ax
  9. mov cx,4
  10. ff:
  11. dec cx
  12. push cx
  13. mov bx,1
  14. mov cx,21
  15. mov dx,offset str_text
  16. mov ah,40h
  17. int 21h
  18. pop cx
  19. jcxz endprog
  20. jmp ff
  21. endprog:
  22. mov ah,04Ch
  23. mov al,1h
  24. int 21h
  25. end start
как правильно реализовать цикл для int 10h

Решение задачи: «Вывод строки (int 10h)»

textual
Листинг программы
  1.         cld
  2.         lea si,str_text
  3.         jmp @@2  ; а лучше cmp ax,? + org $-2 (для тех, кто в теме)
  4.   @@1:  int 10h
  5.   @@2:  lodsb
  6.         test al,al
  7.         jnz @@1

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

  1. cld - Код команды: 0E. Переменные: нет. Функция: нет.
  2. lea si,str_text - Код команды: 8D. Переменные: SIB (индексный регистр), str_text (строка). Функция: нет.
  3. jmp @@2 - Код команды: E9. Переменные: нет. Функция: нет.
  4. int 10h - Код команды: 10. Переменные: нет. Функция: нет.
  5. lodsb - Код команды: 8D. Переменные: SIB (индексный регистр), byte (байт). Функция: нет.
  6. test al,al - Код команды: 85. Переменные: AL (регистр AX). Функция: нет.
  7. jnz @@1 - Код команды: 85. Переменные: нет. Функция: нет. Список не содержит более 20 элементов, поэтому на этом все.

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


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

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

13   голосов , оценка 3.538 из 5

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

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

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