mov bl,[inpbuf2] - как это работеат?

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
vvt123
Сообщения: 1
Зарегистрирован: 21 июн 2009, 23:23

Подскажите пожалуйста как в этом коде
"dosseg
.model small
.stack 1000h
.data
;************************* ;РАЗДЕЛ КОНСТАНТ И ПЕРЕМЕННЫХ

;название программы = 'СЛОВА v1.0'
tit db 13,10,'WORDS v1.0',13,10,'$'

;сообщение = 'Введите текст (пустая строка = выход)'
txt1 db 13,10,'Input text (empty = quit):',13,10,13,10,'$'

;сообщение = 'Слова с такими же буквами'
txt2 db 13,10,13,10,13,10,'Words with same letters:',13,10,13,10,'$'

txt3 db 'no words$' ;сообщение = 'нет таких слов'

;сообщение = 'Нажмите любую клавишу для выхода'
txt4 db 13,10,13,10,'[Press any key to exit]$'
;------------------------------

textl equ 200 ;максимальная длина текстовой строки

;буфер для ввода текстовой строки
inpbuf db textl+1 ;максимальная длина вводимой текстовой строки
inpbuf2 db ? ;количество введенных символов
inpbuf3 db textl+2 dup(?) ;введенная строка
;------------------------------

wcnt dw 0 ;счетчик найденных по условию слов

baddr1 dw ? ;начальный адрес 1-го слова
len1 dw ? ;длина 1-го слова

char db ? ;текущий найденный символ

baddr2 dw ? ;начальный адрес текущего слова
len2 dw ? ;длина текущего слова

lcnt dw ? ;счетчик символов из 1-го слова в текущем слове
lcnt2 dw ? ;счетчик символов из текущего слова в 1-ом слове
;------------------------------

nextln db 13,10,'$' ;символы перехода на новую строку
;--------------------------------------------------------

;НАЧАЛО ПРОГРАММЫ

.code
mov ax,@data ;загружаем адрес сегмента данных
mov ds,ax ;загружаем адрес сегмента в сегментный регистр даннных

mov dx,offset tit ;загружаем адрес выводимого текста
call tprint ;вызываем подпрограмму печати текстовой строки
;-------------

mov dx,offset txt1 ;загружаем адрес выводимого текста
call tprint ;вызываем подпрограмму печати текстовой строки

mov ah,0ah ;загружаем номер функции DOS: ввод строки в буфер
mov dx,offset inpbuf ;загружаем адрес буфера
int 21h ;вызов функции DOS

mov bl,[inpbuf2] ;загружаем длину введенной строки"


Подскажите, как в последней строчке "mov bl,[inpbuf2]" загружается длинна строки, то есть, почему [inpbuf2] стало длинной строки , подскажи те пожалуйста, очень нужно , сам я пока новичок.


Процессоры, не знаю какого тип и т.д., те которые на домашних компах стоят, компилятор TASM, приложение exe.

Заранее спасибо.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):почему [inpbuf2] стало длинной строки
Потому что так работает функция 0A прерывания 21
It's a long way to the top if you wanna rock'n'roll
Ответить