Страница 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
вот просто классный справочник по командам ассемблера.
Жаль, что у нас в ВУЗ'e асма не ожидается .

Оптимизация

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

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: .

Я имел в виду "зачем тебе ВУЗ, для того чтобы асм учить"