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

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


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

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

Выпуск № 810
от 25.07.2007, 00:35

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


Вопрос № 95629: Добрый день, уважаемые эксперты! Пожалуйста, можете мне что-то объяснить? Заранее спасибо! В приложении описывается директива "db" и там пишет это: что "Наибольшее положительное шест. число в одном байте это 7F, все "...
Вопрос № 95645: Набрал простенькую прогу в ассемблере (файл сохранил как exp1.asm): CSEG segment org 100h Begin: mov ah,9 mov dx,offset Message int 21h int 20h Message db 'Hello, world!$' CSEG ends ...
Вопрос № 95738: Уважаемые эксперты! У меня к вам два вопроса: 1. Я новичок в изучении ассемблера и для начинающего нет необходимости обращаться ко всем экспертам. К кому я могу адресовать свои вопросы? 2. В книге Калашникова и Зубкова команды ассемблера отли...

Вопрос № 95.629
Добрый день, уважаемые эксперты!
Пожалуйста, можете мне что-то объяснить? Заранее спасибо!
В приложении описывается директива "db" и там пишет это:
что "Наибольшее положительное шест. число в одном байте это 7F, все "большие"
числа от 80 до FF представляют отрицательные значения."
Но я в загружал в ax 255 и отладчик показал, что загружается 0FFh
Значит полцчается, что 0FFh=255
Но в приложении ведь пишет, что 0FFh = -127 если я правильно понял...

Заранее спасибо! Удачи!

Приложение:

Отправлен: 19.07.2007, 04:36
Вопрос задал: Покритюк Виталий Леонидович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Евгений Иванов
Здравствуйте, Покритюк Виталий Леонидович!

Есть так называемый знаковый старший бит.
0FFh - это -1.

Это число в дополнительном коде - нужно проинвертировать все биты и прибавить единичку.


---------
Знания - сила
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +79519145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214889076
----
Ответ отправлен: 19.07.2007, 12:55
Оценка за ответ: 4
Комментарий оценки:
Спасибо)

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

Процессор не знает о существовании чисел со знаками.
Бинарную запись отрицательных чисел придумали люди(старший бит байта"7", слова"15" или двойного слова"31", это есть бит определяющий знак числа).
При работе с числами процессор выполняет простую операцию:
результат для бита = бит А + бит В + перенос с пердыдущего бита,
где: 1+1=0 и перенос в следующий разряд, 1+0 или 0+1=1 и 0+0=0,
для комманды ADC и бита 0, как перенос с пердыдущего бита, берется значение флага CF-"флаг переноса".
Даже он(процессор) когда выполняет комманду SUB ax,bx, значение регистра bx переводится в дополнительный код и потом СЛОЖЕНИЕ.
Для знаковых комманд, другие люди(которые разрабатывали первые процессоры) придумали флагOF -"флаг перполнения", анализируя который программист может принять решение о достоверности результата к примеру:
0х10000000(-128)+0х10000000(-128)=0х00000000(-256, а в байте 0) и CF=1,OF=1 или 0х11111001(-7)+0х11111011(-5)=0х11110100(-12) и CF=1,OF=0.
Кстати "я в загружал в ax 255 ", для AX это 255, а для AH и AL это 00 и -128(или 255) соответственно.
Удачи!
---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 19.07.2007, 23:01
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо!!!


Вопрос № 95.645
Набрал простенькую прогу в ассемблере (файл сохранил как exp1.asm):

CSEG segment
org 100h

Begin:

mov ah,9
mov dx,offset Message
int 21h

int 20h

Message db 'Hello, world!$'
CSEG ends
end Begin

запускаю MASM, а он мне в ответ пишет:

exp1.asm(4): error A2062: missing or unreachable CS

Подскажите пожалуйста в чем заключается ошибка и как ее исправить.
Отправлен: 19.07.2007, 09:37
Вопрос задал: Hitheadman (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Hitheadman!

Вместо CSEG segment
пиши вот это

Segment CSEG byte public 'code' use16
Assume CS:CSEG,DS:CSEG


Успехов!
---------
Знания - сила
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +79519145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214889076
----
Ответ отправлен: 19.07.2007, 12:48


Вопрос № 95.738
Уважаемые эксперты! У меня к вам два вопроса:
1. Я новичок в изучении ассемблера и для начинающего нет необходимости обращаться ко всем экспертам. К кому я могу адресовать свои вопросы?
2. В книге Калашникова и Зубкова команды ассемблера отличаются, хотя результат один. Будет ли в дальнейшем дано объяснение этому? Книги только начал изучать, извините за спешку. С уважением к Вам. Tiratron.
Отправлен: 19.07.2007, 22:48
Вопрос задал: Tiratron (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Mikola

Ответ удален, т.к. состоял только из уточняющего вопроса.
---------
=Alexey G. Gladenyuk= (*Мастер-Эксперт)
Ответ отправил: Mikola (статус: 1-ый класс)
Ответ отправлен: 20.07.2007, 10:39

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

Это не команды, а данные которые будут выведенны на экран. То что они находятся в сегменте кода, определено моделью организации памяти TINY-код, данные и стек размещаются в одном и том же сегменте размером до 64 Кб. Эта модель памяти чаще всего используется при написании на ассемблере небольших программ.
различаются они только кодами 0Dh,0Ah-"перевод строки" т.е. следующий вывод будет начинатся с новой строки.
CSEG segment и .code это разные формы обьявления кодового сегмента о этом написанно у Зубкова в 3-ей главе "организация программысегменты"
Удачи!

---------
И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 20.07.2007, 13:30
Оценка за ответ: 4
Комментарий оценки:
Спасибо за хороший ответ.Из него следует, что за книги надо садиться основательно.


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

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

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

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

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


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


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

В избранное