IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Локальная переменная в Pas, доступ к ней
Local
сообщение 12.05.2004 16:45
Сообщение #1


Гость






Привет!!


Procedure Pr(Str : String);
 begin
    Str:=Str+'$';
   asm
      mov ax,seg(@Data)
      mov ds,ax
      xor ax,ax      
      mov ah,9
      mov dx,offset Str
      int 21h
   end;
 end;
BEGIN
Pr('Hello');
 asm
   mov ah,0
   int 16h
 end;
End;


Вот объясните почему Я промахиваюсь при вызове локальной перменной в
процедуре с параметрами sad.gif
заранее спасибо
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Dark
сообщение 13.05.2004 5:54
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


Цитата
(хотя PUSH SS/POP DS по-моему шустрее и не сбивает AX, но это так, на будующее)


pop


                                Clocks                 Size
       Operands         808x  286   386   486          Bytes

       segreg            8     5     7     3             1


push


                                Clocks                 Size
       Operands         808x  286   386   486          Bytes

       segreg          10/14   3     2     3             1


move

                                Clocks                 Size
       Operands         808x  286   386   486          Bytes

       segreg,reg16      2     2     2     3             2
       reg16,segreg      2     2     2     3             2



Я УБЕДИЛ? согласен smile.gif что на современных компутерах это почти уже не так,
но все таки на push pop уходит больше времени :D (ну... :p2: по крайней мере на 386... lol.gif)

На тему не одной переменной
Procedure Pr(Str,str1 : String);
begin
  Str:=Str+'$';
  Str1:=Str1+'$';
 asm
    push ds
    mov ax,ss
    mov ds,ax
    xor ax,ax
    mov ah,9
    lea dx, Str
    inc dx
    int 21h
    lea dx, Str1
    inc dx
    int 21h
    pop ds
 end;
end;


ЗЫ я тут файлик прекрепил, intel.doc - старенький конечно =) но все же...(rar3)


Прикрепленные файлы
Прикрепленный файл  intel.txt ( 17.37 килобайт ) Кол-во скачиваний: 291


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 23.06.2025 0:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"