Оптимизация

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 16:18

Эх.. 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
....
....
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Оптимизация

Сообщение qwertylol » 13 янв 2008, 16:22

Значит если и флаг A установлен и флаг C, то das вычитает 66h.. Я почему-то решил что вычитается только 6. Да и o влиянии флага C на команду sbb забыл... Короче ахтунг! Я увольняюсь .
З.Ы. A этот способ перевода нам не так долго юзать осталось, не за горами то время, когда microsoft "силком" заставит полностью передти на уникод(и по сути правильно сделает).
Последний раз редактировалось qwertylol 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 16:28

a_l_e_x86 писал(а):Source of the post
das
1. если младшая тетрада al больше 9 или флаг вспомогательного переноса установлен вычитаем из al 6
2. Если после этого флаг переноса установлен, или младшая тетрада больше 9, вычитаем еще 60h

Говоря более простым языком, это коррекция после операций вычитания в двоичнодесятичном коде... но этот "уникальный пример" мне кажется уникальным тем, что взгляд на традиционную суть команд мало помагает
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

a_l_e_x86
Сообщений: 985
Зарегистрирован: 02 мар 2007, 21:00

Оптимизация

Сообщение a_l_e_x86 » 13 янв 2008, 16:35

Операции для работы c BCD форматом часто ипользуют для других целей. Например команды AAD и AAM (коррекия после умножения и перед делением) позволяют (при некоторых ухищрениях делать "быстрое" умножение или деление на любое число
Последний раз редактировалось a_l_e_x86 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 16:55

a_l_e_x86 писал(а):Source of the post
Операции для работы c BCD форматом часто ипользуют для других целей. Например команды AAD и AAM (коррекия после умножения и перед делением) позволяют (при некоторых ухищрениях делать "быстрое" умножение или деление на любое число

A быстрее работало для 8086?
Я обычно дивом пользовался...
Предлогаеш подумать над этим ухищрением? )))
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 17:13

Хотя тасм последний раз запускал в году так 2001, асм ещё не совсем забыл...

Для публики суть приведённых a_l_e_x'ом комманд объясню более просто

aad
Традиционно применяется в двоичнодесятичных вычислениях и предпологает, что знаковые разряды не более 10. Два непакованых BCD числа в регистрах ah и al конвертирует в нрмальное двоичное и результат помещает в al. Или можно сказать ax, регистр ah обнуляется

aam
аналогично aad, используется в двоично десятичнгом вычислении. Противоположность aad - двоичное число из регистра al записывает как двоичнодесятичное в регистры ah и al. Разумеется значение al предпологается не более 100
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Оптимизация

Сообщение qwertylol » 13 янв 2008, 17:19

вот просто классный справочник по командам ассемблера.
Жаль, что у нас в ВУЗ'e асма не ожидается .
Последний раз редактировалось qwertylol 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 17:32

qwertylol писал(а):Source of the post
вот просто классный справочник по командам ассемблера.
Жаль, что у нас в ВУЗ'e асма не ожидается .

A зачем тебе ВУЗ? Зайди в яндекс. напиши "Скачать tasm", и вперёд! Я вот, пока был свободен в выборе, программирование небыло работой, кодил на асме, си даже не очень признавал ))) a сейчас вот приходится на языках высокого уровня писать... a по асму испытываю ностальгию
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Оптимизация

Сообщение qwertylol » 13 янв 2008, 18:22

Мне кажется, что Си не сильно уступает асму+ есть возможность вставлять код на нём после директивы _asm. Ho то, что асм надо знать это 100%.
A зачем тебе ВУЗ?

Чтоб высшее образование получить . Просто не люблю паскаль, во всех его проявлениях.
З.Ы. Яндекс я использую только чтобы проверять работает ли интернет гугл рулит :yes: .
Последний раз редактировалось qwertylol 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
master
Сообщений: 2167
Зарегистрирован: 09 апр 2006, 21:00

Оптимизация

Сообщение master » 13 янв 2008, 18:25

qwertylol писал(а):Source of the post
A зачем тебе ВУЗ?

Чтоб высшее образование получить . Просто не люблю паскаль, во всех его проявлениях.
З.Ы. Яндекс я использую только чтобы проверять работает ли интернет гугл рулит :yes: .

Я имел в виду "зачем тебе ВУЗ, для того чтобы асм учить"
Последний раз редактировалось master 30 ноя 2019, 13:41, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 34 гостей