Наверх

Пред.

Использование меток.

 

Приведем чуть более продвинутый вариант мини-ассемблера. Добавлены команды:

NOP

JMP 0x9

MOV DX AX

INC DX

DEC DX

 

И, самое главное, для условных переходов (JE и др.) и для короткого JMP (с однобайтным адресом) введены метки.

Метка задается в исходном тексте так:

LABEL L1

А используется так:

JMP L1

JE L1

 

Добавлен еще один проход текста программы на ассемблере (напомню, что в предыдущей главе уже было два прохода). При последнем проходе вычисляется, куда переходить по меткам.

Вот исходный текст (тоже в файле Pr1.txt,  как и в предыдущей главе, схема работы такая же – получаем промежуточный файл pr.txt, далее с помощью программы из 1-й главы получаем файл формата com).

MOV AX 0x0 0x0

MOV DX AX

CMP AX DX

JE L1

LABEL L2

MOV AH 0x09

MOV DX OFFSET MES1

INT 0x21

MOV AX 0x0 0x0

MOV DX AX

CMP AX DX

JE L3

LABEL L1

NOP

MOV AX 0x0 0x0

MOV DX AX

CMP AX DX

JE L2

MOV AH 0x09

MOV DX OFFSET MES2

INT 0x21

LABEL L3

MOV AH 0x09

MOV DX OFFSET MES3

INT 0x21

MOV AX 0x4C 0x0

INT 0x21

VAR MES1 5 0x30 0x31 0xD 0xA 0x24

VAR MES2 7 0x30 0x31 0x31 0x31  0xD 0xA 0x24

VAR MES3 5 0x30 0x30  0xD 0xA 0x24

 

А вот текст самой программы-ассемблера на языке C++ (из папки PrCom5): посмотреть.

 

 

Хостинг от uCoz