Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Assembler Программа работает не по алгоритму при ввод пароля https://www.cyberforum.ru/ assembler/ thread1305036.html
Здравствуйте, помогите пожалуйста найти не стыковку в коде. При вводе пароля, программа работает не так как мне кажется. .model small .data Msg db 'qw' InputMsg db 'Введите пароль: $'...
Assembler Как оптимизировать программу в автоматическом режиме?
#include <stdio.h> int r; int A; int main(){ int i; r = 0; _asm { ; 7 : for (i = 0; i<10; i++){ mov i, 0
Assembler ЭВМ Жмакина
Не могу понятий почему перезаписываются ячейки в памяти с командами P.S Нужно делать на модели учебной ЭВМ Жмакина RD #10 OUT 1 OUT 11
Assembler Динамическая библиотека на MASM разбалансировала стек Динамическая библиотека на MASM при возврате значения разбалансировала стек. Без возвращаемого значения все работает нормально. Необходимо написать динамическую библиотеку на MASM + обертку на C#.... https://www.cyberforum.ru/ assembler/ thread1300118.html
Assembler Ошибка подсчета в программе на ассемблере https://www.cyberforum.ru/ assembler/ thread1299973.html
Всем привет! Сделал программу на ассемблере которая считает пример: B*(A+B)/(C-D-1) Ввожу тестовые данные: А= -50, B= 100, C= 50, D= -99 Программа должна посчитать и выдать ПРАВИЛЬНЫЙ ответ:...
MASM x32 Задание из ВУЗ-а Assembler
Сдался мне этот ваш masm, но в ВУЗ-е заставили :) АSM я не знаю, поэтому и решить поставленное задание не могу. Есть код: .586 ; подключение набора команд Реntium .MODEL flat, stdcall ; модель...
Assembler Арифметические операции над целыми числами
Составить программу вычисления арифметического выражения: Z=-(D-A/3-1)/(C+A*2) На дебаге зависает dosbox, в чем может быть проблема? Код: masm model small .stack 100h .data var_A db 9...
Assembler Ошибка в коде Пользуюсь TASM Visual (настройки: компилятор - TASM, отладчик - OllyDbg) Задание скомпилить этот код: stseg segment para stack "stack" db 64 dup("stack") stseg ends dseg segment para public... https://www.cyberforum.ru/ assembler/ thread1297617.html
Assembler Транслятор. (выбор) https://www.cyberforum.ru/ assembler/ thread1296477.html
У меня Win 7(64) и Win 8.1(64). Мне нужно выполнить некоторые действия на этом: tasm.exe, tlink.exe, td.exe Естественно ничего не запускается на компе. Какие есть альтернативы для этих программ?
Assembler Не могу понять где ошибка Turbo Assembler Version 3.2i Copyright (c) 1988, 1992 Borland International Serial No: Tester: Assembling file: taras.asm *Warning* taras.asm(473) Open segment: CODE **Fatal**... https://www.cyberforum.ru/ assembler/ thread1296015.html
0 / 0 / 0
Регистрация: 21.12.2013
Сообщений: 8
23.11.2014, 16:45  [ТС] 0

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

23.11.2014, 16:45. Просмотров 2187. Ответов 4
Метки (Все метки)

Ответ

Спасибо! это действительно мне помогло. Но у меня еще осталось пара вопросов.

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
.686
    .model flat, stdcall    
    option casemap :none
    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\msvcrt.inc
    include \masm32\macros\macros.asm
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\msvcrt.lib
.data
_a dw 4
_b dw 2
_c dw 18
_x dw 16
y   dw  ?
tpt db     '%d ',0
wo  db 'wow',0
 
 
.code
;--------------------------
;передача по значению
 
simpleproc proc i:word
 
    mov i, 3
 
    add i,ax
 
    mov ax, i
 
    ret
simpleproc endp
 
;--------------------------
;передача по ссылке
 
simpleproc1 proc i:dword
 
    add DWORD PTR [eax],2
 
    ret
simpleproc1 endp
 
;--------------------------
;передача через стек
 
simpleproc2 proc
PUSH ebp
MOV EBP,ESP
 
mov eax,[ebp+8]
mov ebx,[ebp+12]
 
add eax,ebx
 
push eax
 
POP EBP
 
ret
simpleproc2 endp
 
;--------------------------
 
start:
 
;--------------------------
mov ax,1
call simpleproc
 
movsx eax, ax
 
 
invoke  crt_printf, ADDR tpt, eax
 
;--------------------------
 
mov eax, offset _x
 
call simpleproc1
 
invoke  crt_printf, ADDR tpt, DWORD PTR [eax]
 
;--------------------------
;Тут начинается работа со стеком
push 3
push 5
call simpleproc2
 
mov eax,[ebp+20]
invoke  crt_printf, ADDR tpt, eax
 
;--------------------------
 
invoke  crt__getch
invoke  crt_exit,0
 
end start
1) При выходе из процедуры, работающей со стеком, программа прыгает не туда. Вроде делал все как было написано в теории, но все равно не получается.
2) Можно ли передать значение из процедуры обратно в программу при помощи стека и как это сделать?

ps: как я уже проверял, в самой процедуре все подсчитывается правильно, мне бы только с этими двумя косяками разобраться...

Вернуться к обсуждению:
Передача параметров в процедуру
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2014, 16:45
Готовые ответы и решения:

Передача параметров в процедуру
Пока не нашел функцию ltoa, пытался добавить подсчет количества записанных байтов. Добавил параметр...

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

Передача параметров из Си в процедуру в Ассемблере
Здравствуйте, пожалуйста подскажите... никак не могу разобраться с передачей параметров из Си в...

Передача параметров в процедуру
Есть класс формы, я прописал процедуру для редактирования формы, но передать в нее &quot;список&quot; не...

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