Вывод строки (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)»
textual
Листинг программы
- cld
- lea si,str_text
- jmp @@2 ; а лучше cmp ax,? + org $-2 (для тех, кто в теме)
- @@1: int 10h
- @@2: lodsb
- test al,al
- jnz @@1
Объяснение кода листинга программы
- cld - Код команды: 0E. Переменные: нет. Функция: нет.
- lea si,str_text - Код команды: 8D. Переменные: SIB (индексный регистр), str_text (строка). Функция: нет.
- jmp @@2 - Код команды: E9. Переменные: нет. Функция: нет.
- int 10h - Код команды: 10. Переменные: нет. Функция: нет.
- lodsb - Код команды: 8D. Переменные: SIB (индексный регистр), byte (байт). Функция: нет.
- test al,al - Код команды: 85. Переменные: AL (регистр AX). Функция: нет.
- jnz @@1 - Код команды: 85. Переменные: нет. Функция: нет. Список не содержит более 20 элементов, поэтому на этом все.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д