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

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


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

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

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

Лысков Игорь Витальевич
Статус: Специалист
Рейтинг: 142
∙ повысить рейтинг >>
Зенченко Константин Николаевич
Статус: Профессор
Рейтинг: 115
∙ повысить рейтинг >>
Airyashov
Статус: Студент
Рейтинг: 26
∙ повысить рейтинг >>

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

Выпуск № 1136
от 18.12.2008, 01:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 307, Экспертов: 18
В номере:Вопросов: 5, Ответов: 7

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

Вопрос № 154012: Здравствуйте, тоько начали изучать ассемблер Дали такое задание, помогите написать пожалуйста: Разработать программу, которая выводит на экран в текстовом режиме столбец единиц синего цвета на черном фоне, столбец двоек зеленого цвета на синем ...


Вопрос № 154030: Здравствуйте, недавно начали изучать асемблер, дали задание написать прогу: Из массива А(10) образовать масив Б(5) таким образом: b1=a1*a10. b2=a2*a9,..... b5=a5*a6, помогите пожалуйста в написании данной проги...
Вопрос № 154081: Доброго вермени суток! Начал изучать ассемблер по книге Калашникова "Ассемблер Это просто! Учимся программировать". Столкнулся с такой проблемой - практически одна из первых программ у меня не работает. Если у Вас есть э...
Вопрос № 154082: Дорогие эксперты решите пожалуйста на Турбо Ассемб лере в DOS: В отдельном каталоге создано несколько текстовых файлов (как минимум 4), с однотипными именами, отличающимися одной цифрой, например, File1.LAB, File2.LAB, File3.LAB, File4.LAB. Эти фай...
Вопрос № 154118: Здравствуйте, уважаемые эксперты. Помогите пожалуйста чайнику разобраться . Почему mov sp,offset Lab_1 влияет на появление строки на экране? ...

Вопрос № 154.012
Здравствуйте, тоько начали изучать ассемблер
Дали такое задание, помогите написать пожалуйста:
Разработать программу, которая выводит на экран в текстовом режиме столбец единиц синего цвета на черном фоне, столбец двоек зеленого цвета на синем фоне и т. д. до конца экрана.
Заранее спасибо
Отправлен: 11.12.2008, 22:31
Вопрос задал: Токарев Дмитрий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Токарев Дмитрий Сергеевич!
Предлагаю построить изображение на странице №1, а потом просто переключить...
Если так не устраивает, можно легко переделать...
Смена кодов реализована командой xor ax, 1303h. Посмотрите в отладчике, как это работает.
Удачи!

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 12.12.2008, 13:20

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


    Вопрос № 154.030
    Здравствуйте, недавно начали изучать асемблер, дали задание написать прогу: Из массива А(10) образовать масив Б(5) таким образом: b1=a1*a10. b2=a2*a9,..... b5=a5*a6, помогите пожалуйста в написании данной проги
    Отправлен: 12.12.2008, 00:14
    Вопрос задал: Volk1290 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Volk1290!
    Предположим, что a - массив из байт, а b - из слов (байт*байт даст, вообще говоря, слово)
    Можно сделать так:
    Код:
    .mode tiny
    .data
    a db 0,1,2,3,4,5,6,7,8,9
    b dw 5 dup (?)

    .code
    .startup
    mov si, offset a ; адрес первого байта массива А
    mov bx, offset a+9 ; адрес последнего байта массива А
    mov di, offset b ; адрес массива Б
    mov cx, 5 ; должны сформировать 5 элементов Б
    fLoop: ; начало цикла
    lodsb ; al = [si], si = si+1
    mul byte ptr [bx] ; ax = al * [bx]
    dec bx ; подготовим адресацию для следующего шага
    stosw ; [di] = ax, di = di+2
    loop fLoop ; зациклим
    mov ax,4c00h
    int 21h
    end

    ---------
    Удачи!
    Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
    Ответ отправлен: 12.12.2008, 04:26

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

    Оценка за ответ: 5


    Вопрос № 154.081
    Доброго вермени суток!
    Начал изучать ассемблер по книге Калашникова "Ассемблер Это просто! Учимся программировать". Столкнулся с такой проблемой - практически одна из первых программ у меня не работает.
    Если у Вас есть эта книга, то программа содержится в разделе 3.4>листинг 3.2 (если нет привожу текст ниже). Программа должна выводить символ ASCII путем прямого отображения в видеобуфер. В моем случае все корректно компилируется и работает, но при запуске программа только ожидает нажатия клавиши и все. У меня Celeron 1.7, если это важно, в книге ведь все время приводят пример старых процессоров.
    Заранее спасибо!

    Приложение:

    Отправлен: 12.12.2008, 13:29
    Вопрос задал: Корнатовский Лев Игоревич (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 10)

    Отвечает: Airyashov
    cseg segment
    org 100h
    proga:
    mov ax,00003
    int 10h

    mov ax, 0B800h
    mov es, ax
    ....
    Ответ отправил: Airyashov (статус: Студент)
    Ответ отправлен: 12.12.2008, 13:36

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

    Оценка за ответ: 1
    Комментарий оценки:
    И что нам это дает? Почему мы вставили эти строки?


    Отвечает: an42
    Здравствуйте, Корнатовский Лев Игоревич!
    Необходимо перейти в текстовый режим.
    В приложении добавлена 4-я и 5-я строка, это переход в текстовый режим.
    Удачи

    Приложение:

    Ответ отправил: an42 (статус: Студент)
    Ответ отправлен: 15.12.2008, 01:28

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


    Вопрос № 154.082
    Дорогие эксперты решите пожалуйста на Турбо Ассемблере в DOS:
    В отдельном каталоге создано несколько текстовых файлов (как минимум 4), с однотипными именами, отличающимися одной цифрой, например, File1.LAB, File2.LAB, File3.LAB, File4.LAB. Эти файлы следует предварительно создать при помощи редактора текстов. Желательно создавать их не в порядке номеров, чтобы положение файлов в каталоге не совпадало с порядком номеров.

    Такое задание:
    Создать новый файл, содержащий по 10 последних байтов из каждого исходного файла.
    Отправлен: 12.12.2008, 13:35
    Вопрос задала: Громова Валентина Ивановна (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Громова Валентина Ивановна!
    Решение в приложении
    Если что непонятно, задавайте вопросы в мини-форуме

    Приложение:

    ---------
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
    Ответ отправлен: 12.12.2008, 14:32

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


    Вопрос № 154.118
    Здравствуйте, уважаемые эксперты. Помогите пожалуйста чайнику разобраться . Почему mov sp,offset Lab_1 влияет на появление строки на экране?

    Приложение:

    Отправлен: 12.12.2008, 19:59
    Вопрос задал: васильев максим (статус: Посетитель)
    Всего ответов: 2
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: Зенченко Константин Николаевич
    Здравствуйте, васильев максим!

    В приложении листинг компиляции Вашей программы. Команда mov sp,offset Lab_1 перемещает указатедь стека на метку Lab_1, после неё идут две команды mov ax,9090h и push ax, начнем с первой: код команды NOP(ничего не делать) - 90h, т.е. это два байта с командой NOP, при выполнении второй команды(push ax) будут затерты два байта 9 0107 CD 20 int 20h. При выполнении программы в памяти вместо функции завершить программу(int 20h) будут стоять две команды NOP, т.е. Ваш код в памяти будет выглядеть так:
    © Цитата:
    push ax
    nop
    nop
    Lab_1:
    mov ah,9

    Удачи!

    Приложение:

    ---------
    Итерация от человека, рекурсия — от Бога (Питер Дойч)

    Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
    Украина, Киев
    Тел.: +380979536619
    Адрес: Украина г.Киев
    ----
    Ответ отправлен: 12.12.2008, 20:54

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

    Оценка за ответ: 5


    Отвечает: an42
    Здравствуйте, васильев максим!
    Команда mov sp,offset Lab_1, изменяет вершину стека.
    sp ---> 09b4 ;это mov ah,09h
    и дальше будет расположены команды для вывода строки и завершение программы, после этой программы.
    Область стека перешла в программу. Любые команды push, начнут изменять программный код. Этого в обычных программах стараются не допускать.
    После команда push ax, картина в стеке будет следующая
    sp ---> 9090 ;адрес вершины стека уменьшился на 2, и в стек поместили 2 команды nop
    sp+2-->09b4 ;это mov ah,09h
    Блок программы будет в памяти выглядеть следующим образом:

    Begin:
    mov sp,offset lab_1
    mov ax,9090h
    push ax
    nop ;здесь стояла двух байтовая команда
    nop ;int 20h
    Lab_1:
    nov ah,09h

    Удачи
    Ответ отправил: an42 (статус: Студент)
    Ответ отправлен: 15.12.2008, 02:51

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


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

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

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

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

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

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

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

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


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное