Вопрос № 90221: Здравствуйте, сделайте пожалуйста такую вот задачку:
Найти все четырехзначные десятичные числа, у которых сумма первых двух цифр равна сумме двух других. Рузультат вывести в на экран и в файл. ...Вопрос № 90243: Здравствуйте! Подскажите пожалуйста, как получить целую часть результата деления отбросив отаток....Вопрос № 90301: Привет! Подскажите, пожалуйста, где и какие книги можно скачать для начинающих?...Вопрос № 90319: помогите
пожалуйста
нужно вывести на экран кол-во ЧЕТНЫХ байт в массиве, и как проверить является ли число отрицательным....Вопрос № 90321: Здравствуйте. Нужны примеры блок-схем программ на ассемблере, по учебе задали. Хорошо было бы пояснить особенности таких блок-схем с учетом специфики ассемблера (я имею в виду отсутствие имен переменных и исп. только регистров и работа с ячейками пам...Вопрос № 90331: Здравствуйте, мне нужно написать пару
резидентов под DOS и в итоге образовалась пара вопросиков.
1) Где и как можно узнать список запущенных программ? Чтобы можно было потом вывести их названия на экран.
2) Как можно заблокировать (а пот...
Вопрос № 90.221
Здравствуйте, сделайте пожалуйста такую вот задачку:
Найти все четырехзначные десятичные числа, у которых сумма первых двух цифр равна сумме двух других. Рузультат вывести в на экран и в файл.
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +79519145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 06.06.2007, 10:54
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Белоусов Руслан Владимирович!
Смотрите приложение.
Суммы равны когда число1+число2-число3-число4=0
В BX хранятся числа 1и2, в DX- 3 и 4
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Отвечает: An42
Здравствуйте, Белоусов Руслан Владимирович!
Поиск десятичных чисел происходит по следующей схеме.
Интервал чисел 1000…9999, от 3e8h до 270fh
Рассматриваются текущие числа в шестнад. формате, переводятся в процедуре b10ascii в неупакованных двоично-десятичный формат.
В процедуре s10sum происходит сравнения сумм двух крайних чисел
Если суммы равные то вывод на экран процедура p10con, и в файл file.001 процедура f10file.
Пояснения в программе
Удачи
Приложение:
Ответ отправил: An42 (статус: 4-ый класс)
Ответ отправлен: 07.06.2007, 12:58
Вопрос № 90.243
Здравствуйте! Подскажите пожалуйста, как получить целую часть результата деления отбросив отаток.
Отправлен: 06.06.2007, 10:15
Вопрос задала: Marg1378 (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Marg1378!
Команды div и idiv результат заносят в два регистра - частное и остаток.
Например, в результате:
mov ax,25h
xor dx,dx
mov cx,10
div cx
число из DX:AX = 37 разделится на 10, в результате в AX будет 3, а в DX - 7
Берем AX и получаем требуемое
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 06.06.2007, 10:26
Отвечает: Евгений Иванов
Здравствуйте, Marg1378!
Используйте DIV, IDIV. Получите целое в одном регистре, остаток будет в другом.
Успехов.
--------- Знания - сила
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +79519145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 06.06.2007, 10:43
Отвечает: An42
Здравствуйте, Marg1378!
Деление:
Слово на байт
Делимое AX после деления в AH=остаток, AL=частное
Двойное слово на слово
Старшая часть делимого DX, младшая часть делимого AX, после деления DX=частное, AX=остаток
DIV делитель (без знаковое деление)
IDIV делитель (деление со знаком)
Удачи
Ответ отправил: An42 (статус: 4-ый класс)
Ответ отправлен: 07.06.2007, 13:07
Вопрос № 90.301
Привет! Подскажите, пожалуйста, где и какие книги можно скачать для начинающих?
Отправлен: 06.06.2007, 16:57
Вопрос задала: Ioanna (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ioanna!
Зубков:Ассемблер.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 06.06.2007, 17:08 Оценка за ответ: 5 Комментарий оценки: Спасибочки!!!
Вопрос № 90.319
помогите пожалуйста
нужно вывести на экран кол-во ЧЕТНЫХ байт в массиве, и как проверить является ли число отрицательным.
Отправлен: 06.06.2007, 18:58
Вопрос задал: Zmey22 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Zmey22!
Oтрицательное число Вы можете обнаружить проверяя старший бит байта
or al,al
js ok_minus
plus:. . .
четное число можно обнаружить проверяя младший бит, способов много: test al,01h
jnz chet
или
push ax
shr al,1
pop ax
jc chet
или
push ax
and al,01h
pop ax
jz chet
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Здравствуйте. Нужны примеры блок-схем программ на ассемблере, по учебе задали. Хорошо было бы пояснить особенности таких блок-схем с учетом специфики ассемблера (я имею в виду отсутствие имен переменных и исп. только регистров и работа с ячейками памяти (как у меня в программе)). Как отобразить на блок-схеме запись и чтение из файла, особенно когда имя файла введено пользователем?
Если сложно, то просто дайте ссылку на нормальную схему к программе на паскале. А то в инете много всяких "блок-схем бизнес-процессов" и пр.
Отправлен: 06.06.2007, 19:08
Вопрос задал: Blackie (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Blackie!
Редактор блок-схем.
посмотрите может пригодится, тут же можно найти и примеры.
фигуры:
"прямоугольник" называется "выражение" в нем производятся любые вычисления mov ax,200
mov bx,300
add ax,bx
"паралелограм" - "ввод/вывод" в нем Вы указываете как происходит общение с пользователем(ввод/вывод символа или строки). mov ah,09
mov dx,offset out_str;вывод строки out_str
int 21h
"ромб" - "условие" в нем Вы проверяете что нибуть. cmp ax,bx
jz yes_equ;если равны то переход на метку, иначе дальше
no_equ:. . .
"елипс" это метки начала и конца программы
"шестигранник" этой фигурой обозначаются циклы. в редакторе я ее не увидел
но циклы можно организовывать используя условие. mov cx,max_loop
my_loop: . . .
тело цикла
. . . loop my_loop
Если кратко.
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Здравствуйте, мне нужно написать пару резидентов под DOS и в итоге образовалась пара вопросиков.
1) Где и как можно узнать список запущенных программ? Чтобы можно было потом вывести их названия на экран.
2) Как можно заблокировать (а потом разблокировать) доступ к дисководу?
Заранее спасибо.
Отправлен: 06.06.2007, 20:22
Вопрос задал: LOST (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Стас
Здравствуйте, LOST!
1) В DOS нет такой возможности. Это однозадачная система. Значит и запущена одна программа, Ваша. (конечно в памяти сидит еще и сама DOS)
Если имеются в виду резиденты, то они стараются не оставлять информации кто ини и откуда. (Чуть мусора остается в PSP).
В принципе можно попытаться, как это делает mem /d, пребрать всю выделенную память, проанализировать и прерывания и таким образом собрать инфу.
2) в DOS? можно попытаться испортить информацию по адресу, если не ошибаюсь,0:78h это может помочь против программ использующих прямой доступ к флоппу через порты (а может и не помочь, если они не полюзуются этой инфой).
Ну а для простоты подменить int13 и на все обращения к дисководу (dl=1) возвращать ошибку.
Ответ отправил: Стас (статус: Специалист)
Ответ отправлен: 07.06.2007, 08:35 Оценка за ответ: 4
Отвечает: Лысков Игорь Витальевич
Здравствуйте, LOST!
Я не согласен со Стасом по первому вопросу. Нет ничего невозможного....
Имена всех программ и резидентов, и не резидентов (например, одна программа запустила другую...)
можно элементарно узнать, пробежав по списку блоков MCB.
Начиная с ДОС4 (или5), имя запущенной программы хранится в конце сегмента окружения.
Разумеется, если программа освободила свой сегмент окружения, то узнать уже невозможно...
Узнать начало списка MCB можно, узнав адрес "списка списков" по ф-ии 52h int 21h.
Сегмент окружения - по строке "COMSPEC=" в начале. Программу - по CDh 20h (int 20h)
В приложении моя давнишняя программка, которая просто пробегает по всем блокам MCB и показывает, ЧТО за блоки.
Осталось только в сегментах окружения добраться до конца (там будут четыре байта 0,0,1,0), за ними будет имя программы...
Удачи!
Приложение:
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 08.06.2007, 10:59 Оценка за ответ: 5