мета-данные страницы
Это старая версия документа!
Урок 0
Адресация переменных
В общем случае адрес переменной или команды можно представить с помощью выражения вида
База + Индекс + Смещение
где база - регистры BX или BP, индекс - регистры SI или DI. Эти регистры так и называются: базовые и индексные. Смещение - это постоянное выражение.
Пример:
Определим массив переменных greet
_DATA segment word public "DATA" greet db 'Hello' _DATA ends
и инициализируем ds указанием на сегмент данных
_CODE segment word public "CODE" mov ax,_DATA mov ds,ax
В результате выполнения следующих последовательностей команд в регистре al окажется символ 'o'1)
mov ah,0eh mov bh,0 int 10h
mov al,'o'
mov al,[greet+4]
mov si, (offset greet) + 4 mov al,[si]
mov bx, offset greet + 4 mov al,[bx]
mov bx,offset greet mov si,4 mov al,[bx + si]
#include <stdio.h> extern int Fun (void) int main () { printf ("%d\n", Fun ()); return 0; }Модуль Ассемблер:
.MODEL SMALL PUBLIC _Fun .CODE _Fun PROC NEAR MOV AX,13 RET _Fun ENDP ENDДля компиляции программы необходимо:
- скомпилировать ассемблерный модуль в объектный с опцией /mx
- в IDE Turbo C v2.0 создать проект, в которой вписать название модуля Си и объектного модуля, полученного из ассемблерного