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

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

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

MODEL   TINY
STACK 256   
DATASEG
    str_text DB 'text'
CODESEG     
start:  
               
    mov ax,@data
    mov ds,ax   
    mov cx,4
ff:
    dec cx
    push cx     
    mov bx,1
    mov cx,21
    mov dx,offset str_text
    mov ah,40h
    int 21h
    pop cx
    jcxz endprog
    jmp ff  
endprog:
    mov ah,04Ch
    mov al,1h
    int 21h
end start
как правильно реализовать цикл для int 10h

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

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