Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 1440
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1371
∙ повысить рейтинг »
vladisslav
Статус: 5-й класс
Рейтинг: 1071
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Assembler (Ассемблер)

Номер выпуска:1294
Дата выхода:17.12.2009, 23:00
Администратор рассылки:Лысков Игорь Витальевич, Модератор
Подписчиков / экспертов:440 / 67
Вопросов / ответов:3 / 4
IRC-канал по теме:#assembler

Вопрос № 175099: Здравствуйте, уважаемые эксперты! помогите написать программу:: при нажатии клавиши F или ALT+F осуществить поиск меток тома на всех логических дисках и вывести их в текстовый файл, который будет назван по текущему системному времени Вопрос № 175157: Здравствуйте уважаемые эксперты! Помогите решить задание. 1 Ввод пятиразрядных чисел в ячейки ОЗУ. Программа должна обеспечить ввод последовательности ASCII-кодов десятичных цифр (не длиннее пяти), перекодировку в "8421", упаковку в десят...


Вопрос № 175161: Здравствуйте уважаемые эксперты!
Код:
   
Вопрос № 175099:

Здравствуйте, уважаемые эксперты!
помогите написать программу::

при нажатии клавиши F или ALT+F осуществить поиск меток тома на всех логических дисках и вывести их в текстовый файл, который будет назван по текущему системному времени

если можно, прошу листинг с комментами)
Операционная система : MS-DOS, запущенная в Microsoft Virtual PC на Win XP SP 1
предпочтительней среда MASM

в приложении прилагаю код обработки нажатия клавиш F или ALT+F
(возможно эта информация будет полезной
текущее системное время
mov ah,2Ch  в AH всегда указывается номер функции
int 21h  вызываем прерывание 21h – сервис
получения сист. информации)

Отправлен: 10.12.2009, 05:31
Вопрос задал: apm-020, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Лысков Игорь Витальевич, Модератор :
Здравствуйте, apm-020.
Программа в приложении.
Что непонятно, спрашивайте в мини-форуме.

Приложение:

-----
Удачи!

Ответ отправил: Лысков Игорь Витальевич, Модератор
Ответ отправлен: 14.12.2009, 11:38
Украина, Кировоград
Тел.: +380957525051
ICQ # 234137952
Mail.ru-агент: igorlyskov@mail.ru
Абонент Skype: igorlyskov

Оценка ответа: 5
Комментарий к оценке:
ОТЛИЧНАЯ РАБОТА!
Великолепный эксперт и золотой души человек!

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257709 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 175157:

    Здравствуйте уважаемые эксперты! Помогите решить задание. 1 Ввод пятиразрядных чисел в ячейки ОЗУ. Программа должна обеспечить ввод последовательности ASCII-кодов десятичных цифр (не длиннее пяти), перекодировку в "8421", упаковку в десятичное число (первый введенный символ - старшая цифра) и размещение в ячейке ОЗУ. ASCII-коды не-цифр игнорировать

    Отправлен: 12.12.2009, 12:46
    Вопрос задал: Зотов Александр Петрович, Посетитель
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич, Модератор :
    Здравствуйте, Зотов Александр Петрович.
    Решение без перекодировки в "8421" в приложении.

    Приложение:

    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Модератор
    Ответ отправлен: 14.12.2009, 13:40
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru
    Абонент Skype: igorlyskov

    Оценка ответа: 3

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257713 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 175161:

    Здравствуйте уважаемые эксперты!

    Код:
           ideal
    model tpascal

    codeseg

    extrn zero_divide:near, over:near
    public add_proc,sub_proc,mul_proc,div_proc

    proc add_proc near
    arg a:word, b:word, var1:dword
    push ds

    lds si, [var1]
    cwd
    mov ax, [a]
    mov bx, [b]
    add ax, bx
    jo @@overflow
    mov [si], ax
    jmp @@exit
    @@overflow:
    call over
    @@exit:
    pop ds
    ret
    endp add_proc

    proc sub_proc near
    arg a:word, b:word, var1:dword
    push ds

    lds si, [var1]
    cwd
    mov ax, [a]
    mov bx, [b]
    sub ax, bx
    jo @@overflow
    mov [si], ax
    j mp @@exit
    @@overflow:
    call over
    @@exit:
    pop ds
    ret
    endp sub_proc

    proc mul_proc near
    arg a:word, b:word, var1:dword
    push ds

    lds si, [var1]
    cwd
    mov ax, [a]
    mov bx, [b]
    imul bx
    jo @@overflow
    mov [si], ax
    jmp @@exit
    @@overflow:
    call over
    @@exit:
    pop ds
    ret
    endp mul_proc

    proc div_proc near
    arg a:word, b:word, var1:dword
    push ds

    lds si, [var1]
    mov ax, [a]
    mov bx, [b]
    cmp bx, 0
    je @@zero
    cwd
    idiv bx
    mov [si], ax
    jmp @@exit
    @@zero:
    call zero_divide
    @@exit:
    pop ds
    ret
    endp div_proc

    end


    Вот это пример программы с асм. процедурами, которые используются паскаль-программой. Меня интересует почему после входа в каждую из процедур мы заносим в стек значение регис тра DS, а в метке выхода выталкиваем его. Также почему перед меткой нужно ставить два cимвола @. Объясните пожалуйста. Спасибо большое.

    P.S. Среда DOS\Win32

    Отправлен: 12.12.2009, 14:16
    Вопрос задал: Николай // Programmator , Студент
    Всего ответов: 2
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич, Модератор :
    Здравствуйте, Николай // Programmator .
    1) Паскалевские программы считают, что регистр DS указывает на сегмент данных,
    поэтому процедуры на других языках, в частности, на Ассемблере, не должны нарушать принятый порядок.
    Теперь смотрим на все подпрограммы, и что мы видим? Везде стоит команда lds, которая загружает
    длинный указатель, и, соответственно, портит DS! Отсюда и необходимость сохранить где-то DS, например, в стеке!
    2)Символами @@ отмечаются локальные метки, которые действуют внутри PROC...ENDP.
    Обратите внимание, что во всех процедурах одни и те же имена меток. И никаких конфликтов!
    Вообще говоря, это справедливо только в режиме IDEAL. В режиме MASM это не пройдет.
    Там надо еще указать явно LOCALS @@. Т.е., явно объявить все метки, начинающиеся с указанных, локальными.
    -----
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич, Модератор
    Ответ отправлен: 12.12.2009, 18:02
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru
    Абонент Skype: igorlyskov

    Оценка ответа: 5
    Комментарий к оценке:
    Спасибо Вам большое за подробный и ясный ответ!

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257641 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает Колесников Иван Владимирович, 3-й класс :
    Здравствуйте, Николай // Programmator .
    push/pop DS - мы сохраняем регистр DS на входе и восстанавливаем на выходе, т. к. его значение изменяется lds. Для программы на Паскале разрушение значения этого регистра приведёт к невозможности обратится к сегменту данных.
    @@ - префикс локальных меток, которые не должны быть доступны вне процедур.

    Ответ отправил: Колесников Иван Владимирович, 3-й класс
    Ответ отправлен: 12.12.2009, 18:04

    Оценка ответа: 4

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 257642 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.12 от 30.11.2009

    В избранное