Вопрос № 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 если я правильно понял...
Отвечает: Евгений Иванов
Здравствуйте, Покритюк Виталий Леонидович!
Есть так называемый знаковый старший бит.
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 Комментарий оценки: Спасибо за хороший ответ.Из него следует, что за книги надо садиться основательно.