![]() |
|
|
![]()
|
|
| Sanek123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Ребята, вот код:
Подскажите как теперь присвоить введнные числа пременным, например x,y,z и вывести результат, скажем сложения всех трех на экран? Точнее я не понимаю где все эти значения храняться в каких регистрах? --------------------
Вас разыскивают бойцы 139-го порта... |
|||
|
||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: нет Всего: 14 |
Sanek123, введеные данные для начала придется перевести из набора строк в число. Затем провести с этим числом какие-то операции, затем результат снова перевести из числа в строку и вывести эту строку на экран или в файл. У микропроцессора 8 регистров общего назначения -- поэтому данные как правило хранят в оперативной памяти
|
|||
|
||||
| Sanek123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
54268742841265 - а разве это не одна строка? Это набор строк? Так откуда все-таки их извлекать и куда записывать? Если они в памяти, то как к ней обратиться? --------------------
Вас разыскивают бойцы 139-го порта... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
Это для тебя одна строка. Но обрабатывать ты её будешь по одному байту, каждый из которых есть однобайтовая строка. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| turbanoff |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.4.2009 Репутация: нет Всего: 1 |
не запутывай ты его... это одна строка. теперь на по ней пробежаться посимвольно и перевести её в число, я думаю ета тема уже поднималась, если нет загугли |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
О чём я собсно и говорю. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| turbanoff |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 57 Регистрация: 6.4.2009 Репутация: нет Всего: 1 |
не самое лучшее объяснения для новичка |
|||
|
||||
| Sanek123 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Поправил немного
Таким образом я получаю строку в [bx] и уже могу вывести
Собственно вопрос, где храняться переменные - решен. Тепер знаю откуда взять и как вывести. Глупо, конечно... Ребята, а как все-таки перевести строку в число? Потому как при сложении происходит конкатенация: 23+56=2356... Это сообщение отредактировал(а) Sanek123 - 25.5.2009, 19:29 --------------------
Вас разыскивают бойцы 139-го порта... |
||||
|
|||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: нет Всего: 14 |
"...Так эта-ж бубль-гум!" (м/ф "Возвращение блудного попугая") У тебя есть две строки String_X='2','3' и String_Y='5','6' переводим строку в число X=(String_X[0]-'0')*10+String_X[1]-'0'=(32h-30h)*0Ah+33h-30h=17h Y=(String_Y[0]-'0')*10+String_Y[1]-'0'=(35h-30h)*0Ah+36h-30h=38h X+Y=17h+38h=4Fh Теперь обратная процедура из числа в строку 4Fh / 0Ah = 7 остаток 9 String_Result[0]=7+30h=37h='7' первый символ String_Result[1]=9+30h=39h='9' второй символ String_Result='7','9' Это сообщение отредактировал(а) Mikl_ - 26.5.2009, 03:42 |
|||
|
||||
| Sanek123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Можно отот фрагмент поподробнее? Желательно на ассемблере! Алгоритм мне понятен немогу записать по правилам синтаксиса асм-а. --------------------
Вас разыскивают бойцы 139-го порта... |
|||
|
||||
| Mikl_ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: нет Всего: 14 |
Это сообщение отредактировал(а) Mikl_ - 27.5.2009, 08:19 |
||||
|
|||||
| Sanek123 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Не надо так ругаться, ассемблер не изучал. Учу сейчас по книжкам и что непонятно у вас спрашиваю. Из твоего примера не понял откуда в buffer взялось число (которое ввели с клавы) гдето указано записать ASCII в buffer.
По правилам команды mov значение помещается в первый операнд. Или я не прав? --------------------
Вас разыскивают бойцы 139-го порта... |
||||
|
|||||
| Mikl_ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: нет Всего: 14 |
Sanek123, читай про функцию 0Ah прерывания 21h
вводит строку длиной до 254 символов, выводя эти символы на экран. Правильно интерпритируются нажатия на Backspace и Delete. Ввод символов продолжается до тех пор, пока не нажата клавиша Enter. Адрес памяти, куда будет помещена строка символов, указан в регистрах DS:DX. Для ввода 50-символьной строки надо отвести 53 байта памяти. Первый байт будет содержать число байтов отведенных для этой строки плюс 1 для символа возврата каретки. Второй байт — число реально введенных символов — это число поместит операционная система DOS как только ты нажмешь на Enter. Последний байт отводится под символ возврата каретки.
Наверное, не прав, только о чем вопрос? Это сообщение отредактировал(а) Mikl_ - 27.5.2009, 11:10 |
||||
|
|||||
| Sanek123 |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Mikl_, премного благодарен за помощь!
Только 0ah не катит, так как ввод скрыт от пользователя 08h, далее распознание символа и если это цифра - отображение 02h и запись в переменную. Плюс eax, abx, edx - 32-разрядные: они мне не нужны. Если не трудно поправьте, пожалуйста, код:
Я исходник упростил до неузнаваемости что б, как говориться, на пальцах прощупать. В @strtoint: надо умножать на 10
но что-то mul не идет. --------------------
Вас разыскивают бойцы 139-го порта... |
||||
|
|||||
| Sanek123 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 22.10.2008 Репутация: нет Всего: нет |
Всем спасибо за поддержку!
Разобрался с мулом : mul - команда умножения. Умножает содержимое опреанда на значение содержащееся в регистре ах! я же пытался запихнуть второй опреанд mul bx, dx и он мне соответственно выдавал типа Fatal [..] Extra character on line Вот что бывает от неумения читать книжки, или от невнимательного их чтения! imul - тоже умножение только со знаком. A tab изначально объявил как строку db, потому и не шло, надо было dw. В соседнем топике участник привел пример кода, а на конкретном примере все оказалось понятно, вчастности перебор символов и перевод в число. Тема закрыта. Это сообщение отредактировал(а) Sanek123 - 31.5.2009, 09:58 --------------------
Вас разыскивают бойцы 139-го порта... |
|||
|
||||
![]()
|
| Правила форума "Asm для Windows/DOS" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |