Lectures / 06-07
.pdfДиректива GROUP: Пример
ModuleData group Data1, Data2 Data1 segment ‘MODULES’
.
.
.
Data1 ends
.
.
.
Data2 segment ‘MODULES’
.
.
.
Data2 ends
Директива GROUP: Пример 2
ModData group DSEG1, DSEG2 DSEG1 segment public 'DATA' var1 dw 'aa'
DSEG1 ends
DSEG2 segment public 'DATA' var2 dw 'bb'
DSEG2 ends
CSEG segment public 'CODE' assume CS:CSEG, DS:ModData mov ax, ModData
mov ds, ax
mov ax, var1 ; смещение = 0 mov bx, var2 ; смещение = 16
CSEG ends end
Упрощенные директивы сегментации
|
|
|
|
|
|
|
|
|
Модель памяти: |
|
|
model |
small |
|
TINY |
COMPACT |
|
|
SMALL |
LARGE |
|
||
.data |
|
|
|
||
|
|
MEDIUM |
FLAT |
|
|
|
|
|
|
||
<директивы определения данных> |
|||||
.stack |
256 |
|
|
|
|
.code |
|
|
|
|
|
main: mov ax,@data |
|
|
|||
|
|
|
|
||
|
mov ds,ax |
|
Предопределенные |
||
|
|
идентификаторы: |
|||
|
end main |
@data адрес сегмента данных |
|||
|
|
@code адрес сегмента кода |
|||
|
|
@stack адрес сегмента стека |
|||
|
|
|
|
|
|
Способы определения меток
•NEXT: sub eax,2
•REPEAT LABEL FAR
•SUMMA PROC NEAR
......................................
SUMMA ENDP
Директива процедуры
Тип процедуры: NEAR FAR
имя PROC тип
………
<тело процедуры>
………
RET ; команда возврата имя ENDP
Типы операндов: регистры
AL, AH, BL, BH, CL, CH, DL, DH - тип BYTE
AX, BX, CX, DX, BP, SP, SI, |
|
DI, CS, DS, SS, ES, FS, GS |
- тип WORD |
EAX, ABX, ECX, EDX, |
|
EBP, ESP, ESI, EDI |
- тип DWORD |
Атрибуты переменной
Атрибут |
Значение |
Пояснение |
|
|
|
|
|
SEG |
|
0 .. FFFF |
Сегмент |
|
|
|
|
OFFSET |
|
0 .. FFFF |
Смещение |
|
|
|
|
TYPE |
1 |
- byte |
Тип |
|
2 |
- word |
|
|
4 |
- dword |
|
|
|
|
|
Численные константы
Значение [признак]
Признак:
B O|Q D
H
–двоичное число;
–восьмеричное число;
–десятичное число (по умолчанию);
–шестнадцатеричное число
Примеры:
010B
125 (= 125D) 890Ah
0D5H
Директивы определения данных
db |
1 |
байт |
dw |
2 |
байта |
dd |
4 |
байта |
df |
6 |
байтов |
dp |
6 |
байтов |
dq |
8 |
байтов |
dt |
10 байтов |
Директивы определения данных: Примеры
message |
db |
"Это текст",'$' |
|
var1 |
db |
0ffh,255,11111111b ; 3 одинак.числа |
|
var2 |
dw |
3a7fh |
; Где младший байт? |
arr1 |
db |
10 dup(" ") |
|
arr2 |
db |
5 dup (?) |
|
A1 |
DB 3 DUP (5 DUP(7)) ; пятнадцать семерок |