Вывод строки (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 элементов, поэтому на этом все.