· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.BOOKS —› Юров. Специальный справочник.

<< . 1 . 2 . 3 .

Посл.отвђт Сообщенiе


Дата: Окт 1, 2003 15:21:36

стр.34. Описание работы алгоритма AAA.
Цитата:

· Если значение младшего полубайта регистра AL >9 или AF=1
1. Увеличить значение AL на 6;
2. очистить старший полубайт регистра al;
3. увеличить значение ah на 1;
4. установить флаги AF=1, CF=1;
· Иначе сбросить флаги AF=0 и CF=0

Ошибка:
Опять та же ошибка, что и в AAS - старший полубайт AL очищается
в любом случае. Т.е. этот шаг должен быть поставлен после выполнения
ветвления.
Например если в AL 29h и AF = 0 (т.е. если первое условие не выполняется)
после выполнения команды AAA в AL окажется 09h.
Т.е. старший полубайт обнулится, при этом на выходе AF и CF будут 0 и
остальных действий (прибавления 9 и увеличения AH) предусмотренных
1ой веткой выполнено не будет. Но обнуление произойдёт, и уже после блока ветвления.


Дата: Окт 9, 2003 19:26:01

стр. 35. назначение команды AAD

Цитата:

Преобразование двухзначного неупакованного BCD - числа меньшего 63h( 99
в десятичной).


Описание ошибок начинает занимать больше места чем сам
справочник, не пойму то ли я такой умный то ли другие ошибок
этих не видят, читают невнимательно (судя по колличеству найденных
ошибок в этом издании) и отсутсвию постов от других.
Книга эта постоянно на форуме упоминается
даже в факе. Туча народа им пользуется но ошибки никто из неё не посылает.

Поэтому я не буду сейчас писать объяснение - поиграем в игру -
найди ошибку.

Кто первый скажет - что не так в процитированной фразе?


Дата: Окт 9, 2003 21:39:19

Вах, какой инертно-невнимательный народ.
Должно быть ... менее 100.
Юров по невнимательности написав менее 99 тем
самым исключил 99 из возможных двухразрядных
десятичных чисел, что есть грубая ошибка.

Ладно, не получается игра "найди ошибку",
скучно, но прийдётся писать как раньше.

стр. 36. Пример использования AAD.

Цитата:
;поместим число 16 в символьном виде в регистр ax
mov ax,3136 ;ax=3136h

Комментарий:
3136h это символьный вид числа 61 а не 16.


Дата: Окт 10, 2003 12:28:53

The Svin
Если в tasm'е (и возможно masm'е, не знаю можно ли в нем строку в регистр засылать) написать mov ax,'16', то это откимпилируется в mov ax,3136h, а в fasm'е - в mov eax,3631h. Поэтому я не считаю что у Юрова здесь ошибка, все зависит от соглащений, что считать старшей цифрой.


Дата: Окт 10, 2003 15:24:26

Aга, в Европе как то разобрались уже с 12 века какой
цифрой считать старшую. А арабы с индусами с 9го. Ту что левее. В строке. А у строки
в памяти что левее то по младшему адрессу, а в регистрах и памяти что по старшему адресу то больше.
Так что когда ты пишешь
mov ax,'16' ты как раз и помещаешь символьное (строчное) представление числа 61 а не 16.
так же когда ты пишешь
mov eax,'итит'
ты помещаешь в eax слово тити.
Ты просто подумай о простой вещи.
Ну поместил ты в ax 3136h
Дальше то что ты будешь с этим делать?
На кой ляд оно это число у тебя в регистре то?
Наверно захочешь вывести на экран, или в файл записать.
Так вот если ты в таком виде её пошлёшь хоть в файл хоть
на экран - на экране или в файле увидишь 61 а не 16.
Тут хоть сколь софистикой не занимайся - Юров во многих примерах пишет типа "теперь можно выводить на экран" и при
этом пишет про последовательности символов якобы "готовых"
к выводу, в которых порядок перепутан.
Как считать говоришь :) -
msg db 3 dup (0)
...
mov ax,'16'
mov word ptr msg, ax
invoke MessageBox,0,offset msg,0

Что видим в окошке?
61.


Дата: Окт 10, 2003 16:28:53

Если заменить word ptr msg на [msg], убрать offset и откомпилировать fasm'ом, то увидим именно 16! Но если у Юрова примеры не на fasm'е, то это следует исправить 8)

<< . 1 . 2 . 3 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.103