0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 4
|
|||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||
Перевод из одной СС в другую08.01.2014, 00:56. Показов 1448. Ответов 6
Метки нет (Все метки)
Здравствуйте! Пытаюсь понять, как работает эта программа, но назначение некоторых строчек мне не ясно.
Полный текст программы.
1.
2.
3.
4.
5.
6.
7.
0
|
08.01.2014, 00:56 | |
Ответы с готовыми решениями:
6
Перевод из одной СС в другую Перевод с одной кодовой таблицы в другую Перевод чисел из одной системы счисления в другую перевод их одной с-мы счисления в другую |
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
08.01.2014, 18:46 | 2 |
Ответ на 1й вопрос.
Таким образом мы резервируем 6 слов (12 байт) памяти. На C++ это выглядит так int buf[6];. Я не очень разбирался в этой программе, что-то похожее на перевод числа 260 в восьмиричную систему, где результат попадёт в buf. Помещают туда 6 нулей, потому что надо что-то поместить . Ответ на 2й вопрос. Далее регистр ECX используется командой Loop metka1. Каждый раз в этом месте значение ECX уменьшается на 1, и переход на метку metka1: пока ECX больше 1.
1
|
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 4
|
|
08.01.2014, 19:20 [ТС] | 3 |
Благодарю за помощь! С назначением регистра ECX разобрался
С 1-м вопросом тоже разобрался, мы просто резервируем память. Но хочу кое-что уточнить. Точно слов, а не битов? И ещё: почему именно 6, а не 8 или 16? В чем тут хитрость?
0
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|
08.01.2014, 19:26 | 4 |
Ответ на 3й вопрос.
Пробел ' ' компилятор переводит в число (2016). Число в EBX указывает на номер ячейки памяти куда надо поместить это число. Машины бывают 64-, 32-, 16- и т.д. разрядные, как тогда процессору понять в какого размера ячейку поместить (2016)? Вот и приходится писать: byte - в [EBX] запишется 20 (один байт) word - в [EBX] запишется 20, 00 (два байта) dword - в [EBX] запишется 20, 00, 00, 00 (четыре байта). Добавлено через 3 минуты Количество бит я не знаю как зарезервировать, наверное никак нельзя . В этой программе резервируют 6 слов потому что наверное решили что больше не надо... типа 8-ричное число не будет содержать больше 6 символов.
1
|
Клюг
7674 / 3189 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
|
|
08.01.2014, 19:29 | 5 |
Это - к автору, ведь макс. значение для слова в восьмиричной системе 177777, к тому же оно не может быть со знаком.
1
|
0 / 0 / 0
Регистрация: 07.01.2014
Сообщений: 4
|
|
08.01.2014, 23:15 [ТС] | 6 |
Спасибо, ребята, разобрался с этой строчкой
По директиве dw отводится ячейка памяти размером в слово (2 байта или 16 бит), которой присваивается имя buf, и в которую заносится операнд 0. Конструкция 6 dup(0) говорит о том, что надо отвести 6 ячеек размером в слово и записать в каждую из них 0. Таким образом, мы зарезервировали 6 слов памяти. Почему именно 6? Вроде тоже разобрался. В слово можно записать числа диапазона -2^(n-1):2^(n)-1, где n - разрядность ячейки (в нашем случае n=16). Максимальное число этого диапазона будет 2^(16)-1 = 65535, которое в 8-чной СС выглядит как 177777 (т.е. мы можем задать в качестве переводимого числа val число 65535, т.к. для него определена ячейка размером в слово dw). Как я понял, каждая цифра восьмеричного числа 177777 записывается в отдельную ячейку выделенного нами размера. Всего цифр 6, поэтому мы и выделяем 6 ячеек. Получается, если бы мы переводили не в 8-чную, а в 2-чную СС, то нам надо было бы выделить 16 слов, т.к. в 2-чной СС 65535 представлено 16-тью единицами? И почему мы выделяем для каждой цифры целое слово, когда достаточно и одного байта? А вот по 3-му вопросу все равно не совсем понимаю. Зачем нам нужно записывать число 20 в ячейку?
0
|
Хочу в Исландию
1041 / 840 / 119
Регистрация: 10.11.2010
Сообщений: 1,630
|
|||||||||||
08.01.2014, 23:52 | 7 | ||||||||||
Скорее всего потому что хотелось бы на выходе иметь ' 404'. Непонятно почему
1
|
08.01.2014, 23:52 | |
08.01.2014, 23:52 | |
Помогаю со студенческими работами здесь
7
Нужна помощь в решении задачи "Перевод числа из одной системы счисления в другую" Перевод из одной сс в другую Перевод из одной сс в другую Перевод из одной С.С. в другую Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |