Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 16:49   #1
alex4321
Пользователь
 
Регистрация: 23.07.2012
Сообщений: 77
По умолчанию TASM. Внешняя подпрограмма

В учебных целях понадобилось сделать на ассемблере вызываемую из Turbox Pascal (некрофильство, а что делать :-) ) функцию, преобразующую число типа longint в строку с его двоичным представлением, т.е. вида :
Код:
function BinaryL(L:longint):string;external;
Написал такое :
Код:
code segment dword public
assume cs:code
public BinaryL

.386

BinaryL proc near
	L equ dword ptr[bp]
	Res equ dword ptr[bp+4]
	
	push bp
	push eax
	push ebx
	push cx
	
	mov bp,sp
	
	mov ebx,L
	les di,Res
	
	mov cx,32
	mov [di],32
	add di,32
	
	__loop__:
		dec ecx
		bt ebx,ecx
		inc ecx
		jc __m1__
		
		mov al,'0'
		jmp __move__
		
		__m1__:
			mov al,'1'
		
		__move__:
			stosb
			dec di
		
		loop __loop__	
	
	pop cx
	pop ebx
	pop eax
	pop bp
	
	ret 4
BinaryL endp
code ends
end
Вызываю так :
Код:
s:=BinaryL(10);
Но после mov ebx,L в bx по сведениям отладчика - совсем не ожидаемое 000A.
Хотя mov ebx,L сводится к mov ebx,[bp], адрес в bp - 3EE6, а по адресу 3EE6 - вполне 0A

Скриншот отладчика - во вложении.

Чего недостает чтобы таки поместить туда это 0A и откуда берутся 0460
Изображения
Тип файла: png Capture.PNG (17.9 Кб, 73 просмотров)
alex4321 вне форума Ответить с цитированием
Старый 23.04.2013, 22:18   #2
alex4321
Пользователь
 
Регистрация: 23.07.2012
Сообщений: 77
По умолчанию

Дело было в неправильном методе вызова - для near-процедур нужен ключ {$F-}
Тему можно закрывать
alex4321 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
Внешняя сортировка Blond_89 Паскаль, Turbo Pascal, PascalABC.NET 0 01.04.2010 12:10
Внешняя компонента 1c 8.1 Dunpeal Общие вопросы Delphi 3 05.12.2009 18:12
Внешняя сортировка alex55 Общие вопросы C/C++ 0 21.03.2009 22:15
Внешняя сортировка Ashraf Помощь студентам 1 29.05.2008 08:56