· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ZEN —› Вот подумалось ))

Посл.отвђт Сообщенiе


Дата: Янв 31, 2003 21:56:21

Здравствуйте.
Вот подумалось, делать переход мона используя.

Mov CX, ну пусть будет 2 ))
Loop @@@1
Loop @@@2
Loop @@@3
Jmp exit

@@@1:
...
Jmp Exit
@@@2:
...
Jmp Exit
@@@3:
...
Jmp Exit
@@@x:
..
Exit:


Или етот алгоритм стар как мир ?
Если где он уже писался я невиноват ))


Дата: Фев 1, 2003 04:43:31

Afaik:
при CX != 1 будет выполнена команда Loop @@@1,
при CX == 1 будет выполнена команда Loop @@@2.
При каком значении CX будет выполнена команда Loop @@@3, ...?

Микропроцессор i486. Книга IV. Справочник по системе команд. В.Л.Григогрьев - "Операнд команды LOOP должен находиться в диапазоне 128 байт перед командой или 127 байт после команды." - т.е. есть ограничение на количество кода между Loop @@@x и меткой @@@x.


Дата: Фев 1, 2003 13:55:54

Подкину парочку извращений
Насчет loop
inc cx
loop Label
получается конструкция типа jncxz
и по примеру
ну скажем есть табличка по bx, а номер у нас в ax
shl ax,1
add bx,ax
push [bx]
ret
и нет ограничений loop
Хотя и этот алгоритм стар как жизнь
Андрей Бертыш
А для 32-bit и вообще
push [ebx+eax*4]
ret


Дата: Фев 1, 2003 21:26:33 · Поправил: myghost

P2M

Млин и точно не будет Loop @@@3 ((

p.s. Человек не машина он может ошибаться.


Дата: Фев 1, 2003 21:50:04

Хе а вот ))
org 100h

mov CX, 0004
loop @1
loop @2
loop @3
jmp endprog

@1:
mov ax,1
loop @2
jmp endprog

@2:
mov ax,2
loop @3
jmp endprog

@3:
mov ax,3

endprog:
ret
---
При СХ=0 Выполняются @1,@2,@3
При СХ=1 Выполняются @2,@3
При СХ=2 Выполняются @1
При СХ=3 Выполняются @1,@2
При СХ=4 Выполняются @1,@2,@3
При СХ=5 Выполняются @1,@2,@3
прога занимает 29байт
Тока ето наврядли гдето пригодится. ))


Дата: Фев 3, 2003 04:51:14

Imho для моделируемого Вами случая подойдет таблица с адресами переходов, т.е.:
[code]
...
tblOffset dw offset @1, offset @2, ...
...
mov bx,index
shl bx,1
; можно добавить проверку на диапазон?
jmp word ptr tblOffset[bx]
@1:
...
jmp endprog
@2:
...
jmp endprog
...
endprog:
...
[/code]


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067