Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
m1namoto
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 51
1

Передача параметров в процедуру

16.12.2012, 14:27. Просмотров 602. Ответов 1
Метки нет (Все метки)

Пока не нашел функцию ltoa, пытался добавить подсчет количества записанных байтов. Добавил параметр qcntWORD, и выполнил действия описанные в коде. Вызываю так
invoke dwtoa, mas[ebx], offset bufer, offset cnt.
Объявлено все вот так:
bufer db 256 dup(0)
cnt dd 0

Но в результате qcnt остается таким же как был до вызова процедуры, словно передаю по значению. Через отладчик проверял, в самой процедуре qcnt увеличивается до нужного значения, но после выхода из процедуры затирается. Вроде бы делаю все правильно, но выходит не разбираюсь я в адресации. Заранее благодарен

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
dwtoaa proc dwValue:DWORD, lpBuffer:DWORD, qcnt:DWORD
 
    push ebx
    push esi
    push edi
 
    mov [qcnt], 0
    mov eax, dwValue
    mov edi, [lpBuffer]
 
    test eax,eax
    jnz sign
 
  zero:
    mov word ptr [edi],30h
    jmp dtaexit
 
  sign:
    jns pos
    mov byte ptr [edi],'-'
    neg eax
    add edi, 1
 
  pos:
    mov ecx, 3435973837
    mov esi, edi
 
    .while (eax > 0)
      add [qcnt], 1
      mov ebx,eax
      mul ecx
      shr edx, 3
      mov eax,edx
      lea edx,[edx*4+edx]
      add edx,edx
      sub ebx,edx
      add bl,'0'
      mov [edi],bl
      add edi, 1
    .endw
 
    mov byte ptr [edi], 0       ; terminate the string
 
    ; We now have all the digits, but in reverse order.
 
    .while (esi < edi)
      
      sub edi, 1
      mov al, [esi]
      mov ah, [edi]
      mov [edi], al
      mov [esi], ah
      add esi, 1
    .endw
 
  dtaexit:
 
 
    pop edi
    pop esi
    pop ebx
 
    ret
 
dwtoaa endp
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 14:27
Ответы с готовыми решениями:

Передача параметров в процедуру
Доброго времени суток. Нужна ваша помощь, знатоки! Возникла нужда в изучении процедур и передачи в...

Передача параметров
Нужно написать COM программу,чтобы при вводе с командной строки,она считывала параметр(имя файла) и...

Передача параметров блоком
Как передать в процедуру блоком 2й массив? (в данном случае массив x1). ведь после передачи блока ...

Передача параметров функциям
Доброго времени суток! Уважаемые форумчане, подскажите, почему вот так можно: .data a dd...

передача параметров dll fasm
Если у кого есть пример дайте плз. Проблема такая: как передать параметры в длл на фасме и из нее в...

1
m1namoto
0 / 0 / 0
Регистрация: 23.06.2012
Сообщений: 51
17.12.2012, 22:39  [ТС] 2
Помогите
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2012, 22:39

Передача параметров через регистры процесора
Написать программу используя подпрограмму-(программа изменяет все буквы на большие)!!!Передача...

Передача структуры в процедуру
Нужно передать в процедуру структуру. Для упражнения взял пародию на MessageBox Вот структура ...

Передача значений в процедуру
Задание: Необходимо оформить подпрограмму удаления лишних пробелов в строке (лишними считаются...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru