Страница 4 из 8
Оптимизация
Добавлено: 13 янв 2008, 16:18
master
Эх.. a я честно ждал, когда Inspektor догадается o сути примера
mov si,offset hex_data
mov di,offset hex_string
mov ah,[si]
shr ax,4
shr al,4
cmp al,10
sbb al,69h
das
mov [di],al
inc di
shr ax,4
shr al,4
cmp al,10
sbb al,69h
das
mov [di],al
inc di
inc si
....
....
Оптимизация
Добавлено: 13 янв 2008, 16:22
qwertylol
Значит если и флаг A установлен и флаг C, то das вычитает 66h.. Я почему-то решил что вычитается только 6. Да и o влиянии флага C на команду sbb забыл... Короче ахтунг! Я увольняюсь .
З.Ы. A этот способ перевода нам не так долго юзать осталось, не за горами то время, когда microsoft "силком" заставит полностью передти на уникод(и по сути правильно сделает).
Оптимизация
Добавлено: 13 янв 2008, 16:28
master
a_l_e_x86 писал(а):Source of the post das
1. если младшая тетрада al больше 9 или флаг вспомогательного переноса установлен вычитаем из al 6
2. Если после этого флаг переноса установлен, или младшая тетрада больше 9, вычитаем еще 60h
Говоря более простым языком, это коррекция после операций вычитания в двоичнодесятичном коде... но этот "уникальный пример" мне кажется уникальным тем, что взгляд на традиционную суть команд мало помагает
Оптимизация
Добавлено: 13 янв 2008, 16:35
a_l_e_x86
Операции для работы c BCD форматом часто ипользуют для других целей. Например команды AAD и AAM (коррекия после умножения и перед делением) позволяют (при некоторых ухищрениях делать "быстрое" умножение или деление на любое число
Оптимизация
Добавлено: 13 янв 2008, 16:55
master
a_l_e_x86 писал(а):Source of the post Операции для работы c BCD форматом часто ипользуют для других целей. Например команды AAD и AAM (коррекия после умножения и перед делением) позволяют (при некоторых ухищрениях делать "быстрое" умножение или деление на любое число
A быстрее работало для 8086?
Я обычно дивом пользовался...
Предлогаеш подумать над этим ухищрением? )))
Оптимизация
Добавлено: 13 янв 2008, 17:13
master
Хотя тасм последний раз запускал в году так 2001, асм ещё не совсем забыл...
Для публики суть приведённых a_l_e_x'ом комманд объясню более просто
aad
Традиционно применяется в двоичнодесятичных вычислениях и предпологает, что знаковые разряды не более 10. Два непакованых BCD числа в регистрах ah и al конвертирует в нрмальное двоичное и результат помещает в al. Или можно сказать ax, регистр ah обнуляется
aam
аналогично aad, используется в двоично десятичнгом вычислении. Противоположность aad - двоичное число из регистра al записывает как двоичнодесятичное в регистры ah и al. Разумеется значение al предпологается не более 100
Оптимизация
Добавлено: 13 янв 2008, 17:19
qwertylol
Оптимизация
Добавлено: 13 янв 2008, 17:32
master
A зачем тебе ВУЗ? Зайди в яндекс. напиши "Скачать tasm", и вперёд! Я вот, пока был свободен в выборе, программирование небыло работой, кодил на асме, си даже не очень признавал ))) a сейчас вот приходится на языках высокого уровня писать... a по асму испытываю ностальгию
Оптимизация
Добавлено: 13 янв 2008, 18:22
qwertylol
Мне кажется, что Си не сильно уступает асму+ есть возможность вставлять код на нём после директивы _asm. Ho то, что асм надо знать это 100%.
A зачем тебе ВУЗ?
Чтоб высшее образование получить . Просто не люблю паскаль, во всех его проявлениях.
З.Ы. Яндекс я использую только чтобы проверять работает ли интернет гугл рулит :yes: .
Оптимизация
Добавлено: 13 янв 2008, 18:25
master
qwertylol писал(а):Source of the post A зачем тебе ВУЗ?
Чтоб высшее образование получить . Просто не люблю паскаль, во всех его проявлениях.
З.Ы. Яндекс я использую только чтобы проверять работает ли интернет гугл рулит :yes: .
Я имел в виду "зачем тебе ВУЗ, для того чтобы асм учить"