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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 15:57   #1
Biohazard
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 78
По умолчанию Ассемблер vs мой мозг

Доброго времени) С Делфями работаю уже довольно давно, а в ассемблере нуб полнейший, знаю, что можно включать асм код в делфи с помошью asm..end; но у меня возникли сложности с переводом кода из ассемблера, не могу или не знаю как правильно объяснить делфи такую конструкцию:

Код:
kit_start:
section .restart vstart=0
	cli
    xor bx, bx				
    mov ss, bx
    mov [ss:0x7afe], sp		
    mov sp, 0x7afe             
    push ds
    pushad						
    mov ds,bx					
    mov ax, [0x413]				
    sub ax, 2					
    mov [0x413], ax				
    shl ax, 0x6					
    mov ax, CODEBASEIN1MB		
    mov es, ax					

    mov bx, 0x8000				
    							
    mov [bx + codereloc], ax    
    mov [bx + codeloc2], ax		
    xor bx, bx
    
    cld

    ......

    mov [0x4e], es
    sti					
    push es				 
    push word dertig 
    retf
начало
kit_start:
section .restart vstart=0

как записать?

ив от ещё:

Код:
sleep:.
    mov cx, 0x1ff
l1:								
    push cx
    mov cx,0xffff
l2:								
    loop l2
    pop cx
    loop l1
    ret
на l2 ругается если записывать так:
Код:
procedure sleep();
asm
    mov cx, 0x1ff
end;

procedure l1();
asm
    push cx
    mov cx,0xffff
end;

procedure l2();
asm
    loop l2//тут ворчит
    pop cx
    loop l1
    retend;
что делать как быть?
кода там намного больше, если до чего дойду, ещё спрошу, тут помогите)
Biohazard вне форума Ответить с цитированием
Старый 14.07.2013, 18:18   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Цитата:
тут ворчит
Метка это не процедура. loop не процедуру вызывает, а переходит по метке (аналог goto). Перенос фрагмента { sleep: mov cx, 0x1ff l1: push cx mov cx,0xffff l2: loop l2 pop cx loop l1 ret} нужно делать не разъединяя ассемблерный код на процедуры.

Цитата:
как записать?
никак не записать. это для той среды, для которых изначально писалось. В дельфи это не нужно, так как компилятор по другому обрабатывает ассемблер..
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 14.07.2013, 20:21   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, вы не бейте код, а практически так его и ставьте.

только ТС, судя по всему тот код для реального режима процессора.
то есть явно не ДЕлфи.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно написать прогр в VBA на днях сдавать мой мозг в этом бессилен))) ckurt09 Помощь студентам 0 06.06.2012 14:01
Мозг уже кипит!( Nickon86 Помощь студентам 13 03.03.2012 01:03
Мозг prikolist Свободное общение 10 29.10.2009 15:16