Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Адресация неупакованных BCD - чисел 
:(
    Опции темы
danika
Дата 15.4.2013, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 11.5.2011

Репутация: нет
Всего: нет



  Здравствуйте.

 Помогите разобраться с представлением неупакованных BCD -чисел в памяти.

 Неупакованные BCD - числа - каждый байт числа содержит одну десятичную цифру,причём в неупакованном варианте десятичная цифра находится в младшей тетраде байта.

Вот предварительный код.

MASM

Код

;............ 
.data
   
    BCD_1 db 8,7,4,5
    BCD_2 db 5,4,7,8
    Result db 4 dup (0)
     

    .code                       ; Tell MASM where the code starts

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

start:                          ; The CODE entry point to the program

    call main                   ; branch to the "main" procedure

    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

  mov esi, offset BCD_1
  mov edi, offset BCD_2
  mov edx, offset Result
  
  mov ecx, 4
A1:
  mov al, byte ptr [esi]
  sbb al, byte ptr [edi]
  aas
  mov byte ptr [edx], al
  inc esi
  inc edi
  inc edx
  loop A1
  
  mov edx, offset Result
  print str$ (edx)

;......................................
  


В мануалах, представление данных в памяти - "младший байт - младший адрес".
Смотрю в hex- редакторе, число 8745 "растёт" в адресах от старшего разряда числа (8) к младшему разряду ...(5)
числа.

Т.е  первый СТАРШИЙ  РАЗРЯД (8) распологается по МЛАДШЕМУ адресу, соответственно при арифметических
операциях команда SBB начинает обработку с числа (8).Смотрел в отладчике.

Предполагаю, что я путаюсь в понятиях,но где не, пойму?

Получается,что прежде,чем производить какие-либо действия, нужно инверсировать(перевернуть) число или
строку , если число вводиться пользователем с консоли.

Помогите разобраться.
Заранее спасибо.

PS:  Команда AAS в данном коде лишняя, но в дальнейшем понадобиться для получения отрицательного значения при вычитании.



Это сообщение отредактировал(а) danika - 15.4.2013, 20:29
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0563 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.