Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вывести результат в двоичном и шестнадцатеричном виде  (Прочитано 21101 раз)
0 Пользователей и 1 Гость смотрят эту тему.
hack
Интересующийся

ru
Offline Offline

« : 26-08-2017 08:59 » 

Хочу разобраться что сделать чтобы был двоичный результат Подскажите пожалуйста
.model small
.stack 256
.386
.data
a db 15
b db 70
c db 25
d db 35
f dw 0
.code
main:
   xor ax, ax
   mov al, 15
   cbw
   movsx bx, al
      sub ax, bx
    imul c
    mov ax, 2
   div ax
   mov cl, 2
   idiv cl
   xor dx, dx
   mov dl, d
   movsx ax, dl
   add ax, dx
exit:
   mov ax, 4c00h
   int 21h
end main
   
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #1 : 26-08-2017 09:05 » 

Человече, я же тебе вроде подсказал asmworld.ru/uchebnik . Там есть "Часть 22. Вывод чисел на консоль".
asmworld.ru/uchebnyj-kurs/022-vyvod-chisel-na-konsol .

Неа, готовое тебе не дам(а то не понять, что от тебя хотять!). Дам только подпрограммы.
Извини, дела... Распишу позже.
« Последнее редактирование: 26-08-2017 09:25 от Алексей++ » Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-08-2017 11:20 » 

Извини, дела... Распишу позже.
Не спеши, надо понять: человек хочет учиться или хочет халявы? Для начала стоит попросить его хотя бы код оформлять и писать комментарии к нему.
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #3 : 26-08-2017 12:16 » 

Хочу учиться
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-08-2017 13:48 » 

Хочу учиться
Тогда попробуй разложить собственный код, как я приводил пример в https://forum.shelek.ru/index.php/topic,30876.msg303255.html#msg303255.

Суть в том, что ты не понимаешь того, что написано, например:
Код: (ASM)
    xor   ax, ax; Здесь ты обнуляешь ax.
    mov   al, 15; Здесь его младшую часть заполняешь числом.
    cbw;          Здесь формируешь старшую часть на основании знака младшей.
;                 Зачем было обнулять ax?
    movsx bx, al; А зачем здесь расширять al, чтобы записать в bx?
                ; Можно: mov bx, ax
    sub   ax, bx; Здесь ты вычитаешь из ax bx, но они равны,
;                 что будет эквивалентно ax = 0. Зачем делался весь расчёт?
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #5 : 26-08-2017 14:55 » 

Про ОПН(или ОПЗ - обратную польскую запись) Aether верно заметил. Это, кстати, стандартно для Форта(всё из-за стеков).
А можно узнать, как глубоки твои знания о языках программирования? Вернее, ты раньше изучал что-нибудь ещё? К примеру, ты понимаешь системы счисления, или только в целом?
« Последнее редактирование: 26-08-2017 15:05 от _KROL » Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #6 : 26-08-2017 15:00 » 

Вот, я где-то раньше это нашёл, когда не очень понимал как переводить. Надеюсь Pascal/алгоритм ты поймёшь?

* syss.zip (1.25 Кб - загружено 1209 раз.)
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #7 : 26-08-2017 15:29 » 

я - новичок в программировании ассемблера

Добавлено через 49 секунд:
можешь меня научить  Здесь была моя ладья...
« Последнее редактирование: 26-08-2017 15:30 от hack » Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #8 : 26-08-2017 15:43 » 

Вопрос о том, что ты хочешь и платформу под которую ты хочешь писать(dos/windows/linux/...). Также предположительно у тебя есть цели/мечты, которые тебя и подтолкнули к изучению ассемблера. Может ты хочешь стать "хакером"(у тебя даже ник hack)?
Например, с детства у меня есть мечта написать какую-нибудь ОС. Я её реализую - сначала Форт(тоже своеобразная низкоуровневая ОС), потом может чё и посерьёзнее напишу... Ну не бывает же просто так! Улыбаюсь
(я про изучение АССЕМБЛЕРА)
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #9 : 26-08-2017 15:52 » 

я хочу ддос программу написать зациклить массивы т е хочу положить сайт полностью
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #10 : 26-08-2017 15:53 » 

под виндолс хочу
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #11 : 26-08-2017 16:01 » 

Ну тут тебе я точно не помогу Улыбаюсь Я ещё только школу закончил и... вообще через DOS такое наврятли получится. Поэтому после ознакомлением с основным тебе следует перейти на windows и изучить тутуарилы Iczelion'а(дал сразу переводы вложением)

* Туториалы Iczelion'a на русском.chm (1000.32 Кб - загружено 1700 раз.)
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #12 : 26-08-2017 16:02 » 

а в двоичном формате можешь показать на примере моего кода?  Буду рад этому научиться
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #13 : 26-08-2017 16:06 » 

Прости, но взломать что-либо не так то легко, да и последствия бывают...
Почитай, я думаю тебе будет интересно: http://www.hl-inside.ru/articles/the-boy-who-stole-half-life-2/
Записан
hack
Интересующийся

ru
Offline Offline

« Ответ #14 : 26-08-2017 16:08 » 

надо вывести в двоичном формате
.model small
.stack 256
.386
.data
a db 15
b db 70
c db 25
d db 35
f dw 0
.code
main:
   xor ax, ax
   mov al, 15
   cbw
   movsx bx, al
      sub ax, bx
    imul c
    mov ax, 2
   div ax
   mov cl, 2
   idiv cl
   xor dx, dx
   mov dl, d
   movsx ax, dl
   add ax, dx
exit:
   mov ax, 4c00h
   int 21h
end main
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #15 : 26-08-2017 16:47 » 

Ок. Я не уверен, но обьяснить тебе попытаюсь.
Вспомни, как пишуться числа в нашей родной СС(системе счисления)...
Ах нет, давай лучше приведу сначала пример.
Число 123 в:
DEC(десячичная СС; цифры: 0..9): 1 * 10^2 + 2 * 10^1 + 3 * 10^0 = 100 + 20 + 3 = 123
HEC(двоичная СС; цифры: 0..9, A..F): 0x7B = 0x7 * 16^1 + 0xB * 16^0 = 0x70 + 0xB = 112 + 11
Помни x^0=1!
Здесь
0) "0x" - приставка обозначающая принадлежность числа к 16-й СС.
1) 10 или 16 - базовое число, основания СС
2) Если x^n, то n - разряд, то место где стоит цифра (начиная с 0)
3210 - разряды
1024 - цифры

Для обратного преоброзования умножения нужно заменить делением.
Попробуем число 123 преести из 10-й в 16-ю СС.
123 делим на 16 (базу)
123 div 16 = 7 = 0x7
123 mod 16 = 11 = 0xB
Результат: 7B
(Далее mod - %, а div - /)
Так как 123 div 16 в пределах 0..16, то прекращаем делить.
Ну а если взять число посложнее(больше байта).
260
260 / 16 = 16 = 0x10 (->)
260 % 16 = 4 = 0x4
[0x4]
(->)
16 / 16 = 1
16 % 16 = 0
[0x04]
1
Так как цифра одна, то прибавляем к результату:
[0x104]
В итоге 260=0x104.

P.s. Извините за сложности, просто у меня что-то голова сейчас почему-то болит. Жаль
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 26-08-2017 16:50 » 

надо вывести в двоичном формате
Кому надо? Тебе.
Кто сказал, что хочет учиться? Ты.
Так где же старания? Ведь ответственность целиком на тебе, ты сам себе учитель, люди при наличии желания и времени могут лишь кое-что подсказать, но не решить твою проблему за тебя. Однако пока они видят настойчивое требование халявы. Это не хорошо.

Попробуй перевести 157 в двоичную систему по шагам. И распечатай здесь ход расчёта. Как ты понимаешь само понятие системы счисления?
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #17 : 26-08-2017 18:14 » 

Если ты ещё ни разу не программировал или тебе сложно, то советую тебе научится сначала писать такие алгоритмы на языках высокого уровня(C/Pascal), а уж потом вдумываться в ассемблер.
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #18 : 26-08-2017 18:37 » 

Всё-таки мне ваш форум нравится!
1)https://club.shelek.ru/viewart.php?id=109
2)https://club.shelek.ru/viewart.php?id=116
3)https://club.shelek.ru/viewart.php?id=117
4)https://club.shelek.ru/viewart.php?id=126
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #19 : 28-08-2017 11:33 » 

Нашёл ещё интересный сайт. Вот и про системы счисления: http://www.allasm.ru/low_prog_06.php
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 28-08-2017 11:41 » 

Нашёл ещё интересный сайт. Вот и про системы счисления: http://www.allasm.ru/low_prog_06.php

Страдает интернет качеством или мой браузер:
Цитата
...
 Чтобы набрать число 35672 мы должны передвинуть влево две "костяшки" на первом "прутике", 7 на втором, 6 на третьем, 5 на четвертом и 3 на пятом. (У нас ведь 1 "костяшка" на втором - это то же самое, что и 10 "костяшек" на первом, а одна на третьем равна десяти на втором, и так далее...) Пронумеруем наши "прутики" снизу вверх - да так, чтобы номером первого был "0"... И снова посмотрим на наши выражения:

35672 = 3*104 + 5*103 + 6*102 + 7*101 + 2*100
...
Всё-таки лучше записывать:
35672 = 3*10^4 + 5*10^3 + 6*10^2 + 7*10^1 + 2*10^0
или
35672 = 3*104 + 5*103 + 6*102 + 7*101 + 2*100
если форматирование позволяет.
Записан
_KROL
Интересующийся

by
Offline Offline

« Ответ #21 : 28-08-2017 18:23 » 

Это обьяняется тем, что статьи коприровались видимо вручную. Кстати, ТАМ даже непонятно как с автором связаться.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines