Навигация
Главная
Поиск
Форум
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
Приложение «Про... 61604
Организация зап... 61314
Invision Power ... 60955
Оператор выбора... 60272
Подключение Mic... 59056
Модуль Forms 58941
Создание отчето... 58515
ТЕХНОЛОГИИ ДОСТ... 54750
Программируемая... 53485
Пример работы с... 51439
Имитационное мо... 50177
21 ошибка прогр... 45140
Реклама
Сейчас на сайте
Гостей: 4
На сайте нет зарегистрированных пользователей

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

База данных студентов на Turbo Pascal (Списки) + Пояснительная записка
Медиа плейер на Delphi + Пояснительная записка
Моделирование работы крупного аэропорта на GPSS + Пояснительная записка

Реклама



Подписывайся на 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 Комментариев · 14243 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
ShadelLabel
Delphi 2005 Учимс...
Пример создания W...
100 компонентов о...
Алгоритм DES шифр...
Error mod
JBlabel3D
Синтаксический ан...
Delphix Sample [И...
DiskInfo
Autorunner
Панель случайной ...
Киллер окон
TmxOutlookBarPro
Усложнённый кальк...
Работа с базами д...
Библиотека програ...
Delphi 7: Для про...
Использование Lis...
Фундаментальные а...

Топ загрузок
Приложение Клие... 100356
Delphi 7 Enterp... 81290
Converter AMR<-... 20037
Borland C++Buil... 10906
GPSS World Stud... 10004
Borland Delphi ... 7962
Turbo Pascal fo... 6939
Visual Studio 2... 4946
Калькулятор [Ис... 4194
FreeSMS v1.3.1 3500
Случайные статьи
Перечислимые свойства
Error in type
Необязательные ...
Специализированные...
Форум на вашем сер...
Использование прот...
Оси
Правила определени...
Краткая история Ni...
XV
Дополнение n-й бит...
Методы разработки ...
Свойства класса TS...
Программирование а...
Время работы прогр...
ПЕРЕМЕННЫЕ
Анализ вывода муль...
Моникеры и композиция
Управление трафико...
Развитие локальных...
Блоки передачи тра...
Пространства имен ...
скриптов в нетради...
Головной интерфейс...
Форматированный ввод
Статистика



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


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