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

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


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

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

Выпуск № 872
от 10.10.2007, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 386, Экспертов: 26
В номере:Вопросов: 3, Ответов: 6


Вопрос № 104364: Здравствуйте уважаемые эксперты,пытаясь понять основы ассемблера,столкнулся с маленькой программой,выводящей сообщение на экран.программа собирается но не запускается(стоит масм32 v8).в описании программы сказано что после инструкции invoke GetStdHan...
Вопрос № 104369: Здраствуйте, не могли бы вы помочь с написание программы на ассемблере: "Сложение 2х чисел со знаком" (ввод и вывод в двоичном коде). Сколько не пытался разобраться, никак не получается ((. ...
Вопрос № 104434: здраствуйте ! подскажите литературу ,которую необходимо прочитать чтобы чувствовать себя уверенно с Железом . Спасибо...

Вопрос № 104.364
Здравствуйте уважаемые эксперты,пытаясь понять основы ассемблера,столкнулся с маленькой программой,выводящей сообщение на экран.программа собирается но не запускается(стоит масм32 v8).в описании программы сказано что после инструкции invoke GetStdHandle,-11 в регистре еах должно быть число 0сh.но там все нули.пробовал после этой процедуры загонять в еах число och.-не запускается....подскажите что делаю не правильно.

Приложение:

Отправлен: 05.10.2007, 00:39
Вопрос задал: Alexs777 (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Egugondiy
Здравствуйте, Alexs777! Ниже приведен рабочий вариант вашей программы. Компилировать так:
ml /coff test.asm /link /subsystem:console
Проверял - работает. Удачи.

Приложение:

Ответ отправил: Egugondiy (статус: 1-ый класс)
Ответ отправлен: 05.10.2007, 10:02
Оценка за ответ: 5

Отвечает: Farit
Здравствуйте, Alexs777!
Что вы имели ввиду под словом не запускается если оно запустилось а потом исчезло тогда попробуите запустить в командной строке или через оболочку FAR ( нажмите после на CNTRL+ O), только могут быть проблемы с кодировкой. функция CetStdHandle, -11 возврощает в eax дескриптор стандартного устройства вывода (дисплей) которой разный в разных компьтерах но насчет нулей незнаю наврядли.
Прогоните програму через какой нибуть отладчик. Про отладку программ написано много например : http://depositfiles.com/files/1915437. Удачи.
Ответ отправил: Farit (статус: 1-ый класс)
Ответ отправлен: 05.10.2007, 10:23
Оценка за ответ: 5


Вопрос № 104.369
Здраствуйте, не могли бы вы помочь с написание программы на ассемблере: "Сложение 2х чисел со знаком" (ввод и вывод в двоичном коде). Сколько не пытался разобраться, никак не получается ((.
Отправлен: 05.10.2007, 02:47
Вопрос задал: Firmament (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Farit

Перенесено в минифорум, т.к. не является ответом на вопрос.
-----
∙ Отредактировал: Alexandre V. Tchamaev (*Мастер-Эксперт)
∙ Дата редактирования: 05.10.2007, 17:04
Ответ отправил: Farit (статус: 1-ый класс)
Ответ отправлен: 05.10.2007, 10:54

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

Смотрите приложение.
Знаковые биты для байта -7, слова-15, двойного слова-31
По программе (думаю Вам будет полезна):
а)при вводе чисел:
-вводится только цифры 0 и 1;
-максимальное кол-во цифр = 8(т.е. байт);
-нажатие клавиши "Enter" заканчивает ввод числа.
в)введенное число преобразуется в 10-ое со знаком и выводится рядом.
с)вывод результата в системах: 2-ой, 10-ой(со знаком и без) и еще выводится флаги CF(C) и OF(O);
CF — флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), иначе устанавливается в 0. Например, после сложения слова 0FFFFh и 1, если регистр, в который надо поместить результат, — слово, в него будет записано 0000h и флаг CF = 1.
OF — флаг переполнения. Этот флаг устанавливается в 1, если результат предыдущей арифметической операции над числами со знаком выходит за допустимые для них пределы. Например, если при сложении двух положительных чисел получается число со старшим битом, равным единице (то есть отрицательное) и наоборот.

Для работы с числами со знаком важны оба этих флага к примеру:
10000000=-128
10000000=-128
сумма будет 00000000 и установленны флаги: CF=1 и OF=1,
или
01000000=64
01000000=64
сумма будет 10000000(-128сз или 128бз) и флаги: CF=0 и OF=1
Анализ результата возлагается на программиста(таких ситуаций всего 4-е для каждого варианта "++","+-" и "--") т.к. только он знает, что там должно быть (процессору безразлично он складывает числа без знака).
ps:советую посмотреть В.Юров "Ассемблер:практикум"
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 08.10.2007, 18:37


Вопрос № 104.434
здраствуйте ! подскажите литературу ,которую необходимо прочитать чтобы чувствовать себя уверенно с Железом . Спасибо
Отправлен: 05.10.2007, 21:09
Вопрос задал: None (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, None!
В. Кулаков "Программирование на аппаратном уровне", С. Зубков "Ассемблер для Windows, Dos и Unix" и сюда загляните много интересного.
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 05.10.2007, 21:24
Оценка за ответ: 5

Отвечает: Farit
Здравствуйте, None!
Могу посоветовать книгу "Програмированние апаратных средств" Скачаите непожалеете. Скачать можно здесь: http://depositfiles.com/files/1977241
Ответ отправил: Farit (статус: 1-ый класс)
Ответ отправлен: 06.10.2007, 13:41
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.13 от 06.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное