русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

С третьего байта записывается вводимая строка, включая последний символ CR (0Dh).


Дата добавления: 2013-12-23; просмотров: 1616; Нарушение авторских прав


Второй байт буфера будет содержать длину реально введенной строки без учета последнего символа CR (клавиша Enter);

Первый байт буфера должен содержать максимальное число символов для ввода (от 1 до 254);

Таким образом, для получения 50 - символьной строки надо отвести под буфер минимум 53 байта памяти:

– в первый байт памяти записать число ASCII 51;

– после ввода 50 символов второй байт дескриптора будет содержать ASCII 50;

– 53-й байт отведённой памяти будет содержать ASCII 13 (0Dh).

Пример 2:

; - - - в сегменте данныхSTRING DB 53 DUP(?) ; область для 50 символов; - - - получение строки с клавиатурыLEA DX, STRING ; DS:DX - адрес строкиMOV BX,DXMOV AL,51 ; установка длины строки (+1 для CR)MOV [BX], AL ; посылаем в первый байт дескриптора ; длину строкиMOV AH, 0AH ; номер функцииINT 21H; - - - получаем в AH длину строкиMOV AH, [BX]+1 ; теперь реальная длина в AH

Пример 3:

; Программа считывает строку символов и выводит ее на экран.

;------------------------------------------------------------------------

masm

model small

.stack 100h

.data

crlf DB 0Dh, 0Ah, '$' ; символы перехода на начало новой строки

buf DB 6 ; выделяем буфер для ПЯТИ видимых символов

.code

start:

mov ax,@data

mov ds,ax

MOV DX,offset buf ;DX = адрес буфера

MOV AH,0Ah ;AH = номер функции 0Аh

INT 21h ;вызов функции 0Ah

 

;Если введенную с клавиатуры строку необходимо вывести на экран, то в

;конец строки нужно записать символ $. Для этого нужно получить адрес

;буфера, узнать длину реально введенной строки и прибавить к полученному

;значению 2, т.к. первые 2 байта содержат служебную информацию. Это

;значение будет адресом байта, который следует за последним символом

;строки. В этот адрес и записывается символ $

MOV DХ,offset buf ; DХ = адрес буфера



MOV BX,0h ; ВХ = 0

MOV BL,[DХ+1] ; BL = длинa строки

MOV BYTE PTR [DХ+BX+2], '$' ; DХ+BX+2 - адрес, который следует

;за последним символом строки

MOV DX,offset buf ; DX = адрес буфера

ADD DX,2h ; прибавляем к DX число 2, т.к. первые

; 2 байта не содержат символов строки

MOV AH,9h ; вызываем функцию вывода строки

INT 21h

;------------------------------------------------------------------------

mov AX,4C00h

int 21h

end start

 


Пример 4:Эта программа выводит на экран подряд два символа "А" (латинские);------------------------------------------------------------------------

masm

model small

.stack 100h

.data

start:

mov ax,@data

mov ds,ax

MOV AH,2 ;АН = 2MOV DL,'A' ;DL = 41h (код символа А)INT 21h ;вызываем функцию DOS 02hMOV AH,2 ;АН = 2MOV DL,41h ;DL = 41h (код символа А)INT 21h ;вызываем функцию DOS 02h

 

mov AX,4C00h

int 21h

end start

 


Пример 5. Программа с консоли заполняет файл my_file.txt, который находится в текущей папке. Длина строки, вводимой в файл с консоли не более 80 символов. Ввод с консоли прекращается, когда в новой строке в начале вводится «пробел». (WFile1.asm)

________________________________________________________

masm

model small

.stack 100h

buf_0ah struc

len_buf db 83 ; длина буфера buf_0ah

len_in db 0 ; количество реально введенных символов строки

buf_in db 82 dup (20h) ; буфер для ввода строки + 0dh0ah

ends

 

.data

handle dw 0

filename db 'my_file.txt',0

buf buf_0ah <>

 

.code

start:

mov ax,@data

mov ds,ax

;------------- Открываем файл

mov ah,3dh

mov al,2

mov dx,offset filename

int 21h

jc exit

mov handle,ax

;------------- Позиционируем файловый указатель на начало файла

mov ah,42h

xor al,al

xor cx,cx

xor dx,dx

mov bx,handle

int 21h

;--------------Вводим очередную строку с клавиатуры

cycl:

lea dx,buf

mov ah,0ah

int 21h

;--------------для красоты выводим на экран символ 0аh

mov dl,0ah

mov ah,2

int 21h

 

cmp buf.buf_in,20h

je exit

 

lea si,buf.buf_in

mov al,buf.len_in ; в al количество реально введённых символов

mov ah,0h

push si

add si,ax

inc si ; учитываем в len_in символ 0dh

mov byte ptr [si],0ah ; добавляем 0ah в конец введённой строки

;--------------вывод в файл

pop dx

mov bx,handle

add ax,2 ; учитываем в len_in символы 0dh0ah

mov cx,ax

mov ah,40h

int 21h

jmp cycl

 

exit:

xor ax,ax

mov ah,3eh

mov bx,handle

int 21h

mov AX,4C00h

int 21h

end start

 




<== предыдущая лекция | следующая лекция ==>
Эта функция посылает символ из регистра DL на устройство стандартного вывода. | Изменение характеристик файлов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.