Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Содержание сайт... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Invision Power ... 65285
Организация зап... 63935
Модуль Forms 60855
Создание отчето... 60712
ТЕХНОЛОГИИ ДОСТ... 57039
Создание потоко... 56371
Пример работы с... 54270
Имитационное мо... 52480
Реклама
Сейчас на сайте
Гостей: 14
На сайте нет зарегистрированных пользователей

Пользователей: 13,065
новичок: railval
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

База данных междугородних телефонных разговоров на Delphi
Обработка задач на ЭВМ на GPSS + Пояснительная записка
Метод половинного деления для нахождения корня уровнения на Turbo Pascal...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
ввод строки произвольной длины (функция 0ah int 21h)
;mac.inc
GetStr macro Buf,MaxLen
local m,TmpBuf
;ввод строки произвольной длины (функция 0ah int 21h)
;на входе:
;Buf - адрес строки куда будет помещен ввод
;MaxLen - максимальная длина вводимой строки
;на выходе - введенная строка по адресу Buf
;al - длина введенной строки
jmp m
TmpBuf label byte ;временный буфер форматом для функции 0ah (int 21h)
rept MaxLen+3 ;доп. три байта - служебная информация
db ' '
endm
m:
SaveReg
xor cx,cx
mov cs:TmpBuf,MaxLen+1
mov ah,0ah
push ds
pop es
push cs
pop ds
lea dx,cs:TmpBuf
int 21h
mov al,cs:TmpBuf+1
;пересылка TmpBuf в Buf со сдвигом на два байта влево (для удаления служебных символов):
mov cl,al ;длина введенной строки в al
lea si,cs:TmpBuf+2 ;откуда - ds:si
lea di,buf ;куда - es:di
rep movsb
LoadReg
endm

mov_string macro dest,src,len
;Пересылка строк
;На входе идентификаторы: строки-источника - src, строки-приемника - dest
;сегментные регистры ds (для источника) и es (для приемника) должны быть загружены
;правильными значениями до вызова макрокоманды
mov cx,len
lea si,src
lea di,dest
rep movsb
endm

null_string macro dest,len
local m,Z_String
;очистка строки произвольной длины пробелами
;на входе:
;dest - адрес строки
;len - длина очищаемой строки
jmp m
Z_String label byte ;пустая строка
rept len
db ' '
endm
m:
SaveReg
mov cx,len
push ds
pop es ;адрес dest (приемник) - es:di
push cs
pop ds ;адрес Z_String (источник) - ds:si
lea si,cs:Z_String
lea di,dest
rep movsb
LoadReg
endm
OutStr macro str
;Вывод строки на экран.
;На входе - идентификатор начала выводимой строки.
;Строка должна заканчиваться символом '$'.
;На выходе- сообщение на экране.
SaveReg
mov ah,09h
lea dx,str
int 21h
LoadReg
endm

GetChar macro
;Ввод символа с клавиатуры.
;На выходе - в al введённый символ.
mov ah,01h
int 21h
endm

OutChar macro
;Вывод символа на экран.
;На входе - в dl выводимый символ.
push ax
mov ah,02h
int 21h
pop ax
endm

SaveReg macro RegList
;Сохранение указанных в списке RegList регистров в стеке
;список регистров должен быть заключен в угловые скобки,
;например -
irp reg,
push reg
endm
endm

LoadReg macro RegList
;Восстановление указанных в списке RegList регистров из стека
;список регистров должен быть заключен в угловые скобки,
;например -
irp reg,
pop reg
endm
endm

clear_r macro rg
;очистка регистра rg
xor rg,rg
endm

conv_16_2 macro
;макрос преобразования символа шестнадцатеричной цифры
;в ее двоичный эквивалент в al
sub dl,30h
cmp dl,9h
jle $+5
sub dl,7h
endm

init_ds macro
;макрос настройки ds на сегмент данных
mov ax,data
mov ds,ax
xor ax,ax
endm

delay macro time
local ext,iter
;макрос задержки. На входе - значение переменной задержки (в мкс).
push cx
mov cx,time
ext: push cx
mov cx,5000 ;это значение можно поменять, исходя из производительности процессора.
iter: loop iter
pop cx
loop ext
pop cx
endm

_Exit macro
;Выход из программы.
mov ax,4c00h
int 21h
endm


Опубликовал Kest March 09 2009 21:18:08 · 0 Комментариев · 14428 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Szwavepanel
Turbo Pascal for ...
Print Grid
JanReplace
SearchAndReplace
MiniChat
Самоучитель PHP 4
PHP 5. Практика с...
Иллюстрированный ...
Еext Editor
iChat v.7.0 Final...
Пример OpenGL гра...
Усложнённый кальк...
Архив программ
Игра PackMan
Прграммирование в...
CwstatusBar
Калькулятор [Исхо...
Counter [Исходник...
netBIOS

Топ загрузок
Приложение Клие... 100376
Delphi 7 Enterp... 83083
Converter AMR<-... 20046
Borland C++Buil... 11177
GPSS World Stud... 10901
Borland Delphi ... 8123
Turbo Pascal fo... 6973
Visual Studio 2... 4963
Калькулятор [Ис... 4358
FreeSMS v1.3.1 3510
Случайные статьи
Реализация шаблоно...
ключу Для двух исп...
Настройка RemoteVi...
Создание и конфигу...
put(X)
Набор команд объек...
• Чтобы применять ...
Новый корпус для ЭЛТ
Разное
• Рабочая станция ...
эти Web-серверы не...
Ради обмена опытом...
Ошибки неоднозначн...
Google
Рабочие нагрузки
Создание объектов,...
Этап 2 - перенос о...
ЯДЕРНЫЙ СИНТЕЗ или...
Установка и удален...
ЧТО такое XSL
Web Proxy
Вычислить среднее ...
7.1. Словарь в в...
Процессы теплопров...
tell(X)
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?