Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Написать программу вывода на экран десятичного эквивалента числа 0FEDEh ( Ассемблер )

Миша Чулков Знаток (371), на голосовании 5 лет назад
помогите плес, не объяснили тему, а написать надо
Голосование за лучший ответ
SELIGOZAVR Просветленный (42871) 5 лет назад
это же первое, чему учат в учебниках... Своего рода "хэлло ворлд"
Миша ЧулковЗнаток (371) 5 лет назад
Не могли бы вы тогда помочь мне с данной задачкой? Великодушно прошу вас
Ученик (117) 5 лет назад
если тебе лично это не надо-писать не надо!
Миша ЧулковЗнаток (371) 5 лет назад
Мне это очень надо, я уже второй день ищу решение этой задачи, я уже душу продать готов за её решение
Ученик (117) Если ты готов продать за этo решение свою душу, Сегодня должен быть получен ответ на твою задачу!
Чебуратор Мыслитель (8449) 5 лет назад
.file "hextodec.s"
.intel_syntax noprefix
.data
hex_string: .asciz "0FEDEh"
.text
.global start
start:
push offset hex_string
call Hex_To_Dec
ret
Hex_To_Dec:
xor edx,edx
xor ecx,ecx #;Счетчик сдвигов
xor eax,eax #;Результат для хранения десятичного числа
mov ebx,1 #;Стартуем с 1 байта - пропускаем 0
mov esi,[esp + 4]#;Вносим строку в базовый регистр
Scan_Loop:
mov dl,byte ptr [esi + ebx * 1]#;Получаем очередной байт
cmp dl,104 #;Если символ h выходим из цикла
jz Set_Eax_Loop
test dl,64 #;Если это символы буквы значит число больше 9
jz Less_10
sub dl,7 #;Вычитаем 7
Less_10:
sub dl,48 #;Вычитаем 48 для получения числа в диапазоне 0-15
push edx #;Сохраняем результат в стек
inc ebx #;Двигаемся дальше по строке
jmp Scan_Loop
Set_Eax_Loop:
dec ebx #;Уменьшаем на единицу счетчик символов, если ноль то выходим
jz End_Alg
pop edx #;Извлекаем из стека
shl edx,cl #;Сдвигаем биты влево
or eax,edx #;Устанавливаем результат в десятичное представление
add ecx,4
jmp Set_Eax_Loop
End_Alg:
ret 0x4
Похожие вопросы