Вопрос № 152172: Здравствуйте уважаемые эксперты! Пара команд осуществляет переход на метку exit, т.е. на завершение обработки данного прерывания, если установлен хотя бы один из битов 0,1 или 2 байта count. Таким образом, дальнейшие предложения программы обработч...
Вопрос № 152204: Здравствуйте, при написании программы возникла проблема с выводом данных на экран. Программа заполняет массив Ai числами i*3 При выводе на экран результат такой
0 3 6 9 < ? B E H K Как сделать, чтобы выводились числа 0 3 6 ...Вопрос № 152245: Выражение в ассемблере. <img src="http://rusfaq.ru/images/Forum/10.gif" border="0"> Доброго времени суток. Пожалуйста помогите написать выражение в ассемблере, курсовик застопорился из-за него((( z=c^2-a*c/(a*c-b) Всего кусок нужен. Заранее ...
Вопрос № 152.172
Здравствуйте уважаемые эксперты! Пара команд осуществляет переход на метку exit, т.е. на завершение обработки данного прерывания, если установлен хотя бы один из битов 0,1 или 2 байта count. Таким образом, дальнейшие предложения программы обработчика будут выполнятся лишь в тех случаях, когда все эти 3 бита сброшены. При последовательном наращивании счетчика Count такая ситуация будит возникать при каждом восьмом вызове обработчика. Count db 0 New_08h proc Pushf Call cs:old_08h Push ax Push
es Inc cs:count Test byte ptr cs:count,07h Jnz exit . . . New_08h endp Объясните, почему сравнивается count (байтовое) и 07h (байтовое), а автор говорит о битах 0,1 или 2. Насколько я понимаю здесь сравниваются наличие в поле count числа (описанного как байт) с числом 7, и если они не равны, то осуществляется переход на метку exit. И почему такая ситуация будит возникать при каждом восьмом вызове обработчика, а не один раз.
Отвечает: Шевченко Александр Владимирович
Здравствуйте, Олег Миколайович! Вы спрашивали: "Объясните, почему сравнивается count (байтовое) и 07h (байтовое), а автор говорит о битах 0,1 или 2." Команда test аналогична команде and за маленьким исключением. Таким образом результатом команды test x, 00000111b будет 0 в случае, если ни один из младших 3-х битов x не равен 1 и такая ситуация будет возникать в каждый восьмой вызов: 00000000 <- вот здесь 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00000000
<- и вот здесь
#thank 236992 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Отвечает: an42
Здравствуйте, Олег Миколайович! Команда TEST это аналог команды AND, разница в том, что команда TEST изменяет регистр флагов не изменяя операнд приемника. Рассмотрим наращивание счетчика COUNT, операцию test byte ptr cs:count,07h и как это отражается на флаге ZF 07h это 00000111b
1: count = 0h (00000000b) and 00000000b, 00000111b ;результат 00000000b (0h) флаг ZF=1 jnz exit ;перехода нет
2: count = 1h (00000001b) and 00000001b, 00000111b ;результат 00000001b (1h) флаг
ZF=0 jnz exit ;переход
3: count = 2h (00000010b) and 00000010b, 00000111b ;результат 00000010b (2h) флаг ZF=0 jnz exit ;переход
4: count = 3h (00000011b) and 00000011b, 00000111b ;результат 00000011b (3h) флаг ZF=0 jnz exit ;переход
5: count = 4h (00000100b) and 00000100b, 00000111b ;результат 00000100b (4h) флаг ZF=0 jnz exit ;переход
6: count = 5h (00000101b) and 00000101b, 00000111b ;результат
00000101b (5h) флаг ZF=0 jnz exit ;переход
7: count = 6h (00000110b) and 00000110b, 00000111b ;результат 00000110b (6h) флаг ZF=0 jnz exit ;переход
8: count = 7h (00000111b) and 00000111b, 00000111b ;результат 00000111b (7h) флаг ZF=0 jnz exit ;переход
9: ситуация повторилась с 1: смотри выше. count = 8h (00001000b) and 00001000b, 00000111b ;результат 00000000b (0h) флаг ZF=1 jnz exit ;перехода нет
дальше при наращивание COUNT будут изменятся
биты 0, 1, 2 соответственно флаг ZF=1 как в ситуации с 1: по 8:, и так будет циклично.
Ответ отправил: an42 (статус: Студент)
Ответ отправлен: 01.12.2008, 09:01
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237216 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 152.204
Здравствуйте, при написании программы возникла проблема с выводом данных на экран. Программа заполняет массив Ai числами i*3 При выводе на экран результат такой
mov ah,02h ;функция вывода значения из al на экран mov dl,mas[si] add dl,30h ;преобразование
числа в символ int 21h inc si
Поставьте следующее: lodsb call outNumber А код из приложения допишите в конце программы перед строкой end main Эта подпрограмма выводит содержимое регистра АХ(младшие восемь бит) в 10-ой системе. Удачи!
Приложение:
--------- Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев Тел.: +380979536619 Адрес: Украина г.Киев ---- Ответ отправлен: 28.11.2008, 21:42
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237015 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 152.245
Выражение в ассемблере. Доброго времени суток. Пожалуйста помогите написать выражение в ассемблере, курсовик застопорился из-за него((( z=c^2-a*c/(a*c-b) Всего кусок нужен. Заранее спасибо.
Отправлен: 29.11.2008, 12:34
Вопрос задала: Kipish (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Kipish! В целом все правильно Немного подправил комментарии (для правильного понимания происходящего)
Приложение:
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 01.12.2008, 13:15
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237241 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.