Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 |

 

  Вопрос: Как сделать ввод числа? Добавлено: 12.09.08 06:55  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Сабж.

В принципе, я хотел сделать через чтение строки в память, запихивание её в регистр по кускам в 4 буквы и там через строки типа:

and eax, 000000FFh

получать значения по одной цифре, потом делать поправку на ASCII код... и.. потом поразрядно прибавлятью... жуть короче. Но могу и так.

А есть выход попроще? Желательно без вызова функций си :)

Мне надо прочитать целое беззнакоыое число в регистр eax. Можно дробное знаковое, но не обязательно ;-)

Заранее благодарен.

п.с. Пишу на NASM под Линухом

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 19.09.08 15:06
1. А что, разве под Linux стандартная библиотека си не доступна?
2. В MASM32 есть библиотечные функции конвертации строки в целое (не помню насчет знаковое или беззнаковое). Ты можешь адаптировать код под NASM используя исходники MASM32.

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 19.09.08 15:09
  1. ; #########################################################################
  2.  
  3.     ; --------------------------------------
  4.     ; This procedure was written by Iczelion
  5.     ; --------------------------------------
  6.  
  7.       .386
  8.       .model flat, stdcall  ; 32 bit memory model
  9.       option casemap :none  ; case sensitive
  10.  
  11.       include \MASM32\INCLUDE\kernel32.inc
  12.  
  13.     .code
  14.  
  15. ; #########################################################################
  16.  
  17. a2dw proc uses ecx edi edx esi String:DWORD
  18.  
  19.       ;----------------------------------------
  20.       ; Convert decimal string into dword value
  21.       ; return value in eax
  22.       ;----------------------------------------
  23.  
  24.       xor ecx, ecx
  25.       mov edi, String
  26.       invoke lstrlen, String
  27.  
  28.       .while eax != 0
  29.         xor edx, edx
  30.         mov dl, byte ptr [edi]
  31.         sub dl, "0" ; subtrack each digit with "0" to convert it to hex value
  32.         mov esi, eax
  33.         dec esi
  34.         push eax
  35.         mov eax, edx
  36.         push ebx
  37.         mov ebx, 10
  38.           .while esi > 0
  39.             mul ebx
  40.             dec esi
  41.           .endw
  42.         pop ebx
  43.         add ecx, eax
  44.         pop eax
  45.         inc edi
  46.         dec eax
  47.       .endw
  48.  
  49.         mov eax, ecx
  50.         ret
  51.  
  52. a2dw endp
  53.  
  54. ; #########################################################################
  55.  
  56. end

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам