мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
asm:second1 [10/02/2011 16:17] arabusovasm:second1 [10/02/2011 22:46] (текущий) arabusov
Строка 3: Строка 3:
 ===== Адресация переменных ===== ===== Адресация переменных =====
  
-В общем случае адрес переменной или команды можно представить с помощью выражения вида <code>База + Индекс + Смещение,</code>где база - регистры BX или BP, индекс - регистры SI или DI. Эти регистры так и называются: базовые и индексные. Смещение - это постоянное выражение.+В общем случае адрес переменной или команды можно представить с помощью выражения вида <code>База + Индекс + Смещение</code>где база - регистры BX или BP, индекс - регистры SI или DI. Эти регистры так и называются: базовые и индексные. Смещение - это постоянное выражение.
  
 Пример: Пример:
  
 Определим массив переменных greet Определим массив переменных greet
-<code>+<code asm>
 _DATA segment word public "DATA" _DATA segment word public "DATA"
  
Строка 16: Строка 16:
 </code> </code>
 и инициализируем ds указанием на сегмент данных и инициализируем ds указанием на сегмент данных
-<code>+<code asm>
 _CODE segment word public "CODE" _CODE segment word public "CODE"
  
Строка 23: Строка 23:
  
 </code> </code>
-В результате выполнения следующих последовательностей команд в регистре al окажется символ 'o' +В результате выполнения следующих последовательностей команд в регистре al окажется символ 'o'((Для справки: как вывести содержимое регистра al на экран:<code asm>mov ah,0eh 
-  - <code>+mov bh,0 
 +int 10h</code>)) 
 +  - <code asm>
 mov al,'o' mov al,'o'
 </code> </code>
-  - <code>mov al,[greet+4]</code> +  - <code asm>mov al,[greet+4]</code> 
-  - <code>mov si, (offset greet) + 4+  - <code asm>mov si, (offset greet) + 4
 mov al,[si]</code> mov al,[si]</code>
-  - <code>mov bx, offset greet + 4+  - <code asm>mov bx, offset greet + 4
 mov al,[bx]</code> mov al,[bx]</code>
-  - <code>mov bx,offset greet+  - <code asm>mov bx,offset greet
 mov si,4 mov si,4
 mov al,[bx + si]</code> mov al,[bx + si]</code>
Строка 52: Строка 54:
 ==== Примеры ==== ==== Примеры ====
 Модуль Си:<code c>#include <stdio.h> Модуль Си:<code c>#include <stdio.h>
-extern int Fun (void)+extern int Fun (void);
 int main () int main ()
 { {
Строка 58: Строка 60:
    return 0;    return 0;
 }</code> }</code>
-Модуль Ассемблер:<code>.MODEL SMALL+Модуль Ассемблер:<code asm>.MODEL SMALL
 PUBLIC _Fun PUBLIC _Fun
 .CODE .CODE
Строка 69: Строка 71:
   - скомпилировать ассемблерный модуль в объектный с опцией /mx   - скомпилировать ассемблерный модуль в объектный с опцией /mx
   - в IDE Turbo C v2.0 создать проект, в которой вписать название модуля Си и объектного модуля, полученного из ассемблерного   - в IDE Turbo C v2.0 создать проект, в которой вписать название модуля Си и объектного модуля, полученного из ассемблерного
 +=== Последовательность действий для сборки гибридной программы ===
 +tasm //asm_module.asm// /mx
 +
 +tc
 +
 +**Project -> Project Name** //project.prj//
 +
 +**Compile -> Make**
 +
 +**File -> OS Shell** //if no errors//
 +
 +//project//
 +=== Содержимое файла project.prj====
 +<code>asm_module.obj
 +c_module.c</code>