mov bl,[inpbuf2] - как это работеат?
Добавлено: 21 июн 2009, 23:38
Подскажите пожалуйста как в этом коде
"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.
Заранее спасибо.
"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.
Заранее спасибо.