Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ TP7 проблема компиляции

Автор: St@senk@ 12.03.2007 22:36

Здравствуйте, не подскажите ли Вы, как скомпилировать

procedure putpixel2 (x,y:word;col:byte);assembler;
asm
pusha
mov ax,0A000h
mov es,ax
mov ax,[y]
mul 320
mov di,ax
add di,[x]
mov al,[col]
cld
stosb
popa
end;

а то у меня по каким-то причинам Turbo Pascal 7, пишет ошибку в строке mul 320
Заранее благодарен

Автор: volvo 12.03.2007 22:47

Цитата
а то у меня по каким-то причинам Turbo Pascal 7, пишет ошибку в строке mul 320
По вполне понятным, кстати, ведь:
Цитата
В качестве операнда-сомножителя команды mul можно указывать регистр (кроме сегментного) или ячейку памяти; не допускается умножение на непосредственное значение.


Занеси это значение в регистр и умножай на него...

Автор: St@senk@ 12.03.2007 23:54

А Вы нен могли бы привести работающий код этой процедуры?
Заранее благодарен.

Автор: volvo 13.03.2007 0:00

Ну, не знаю, насколько он работающий, но то что должен компилироваться - точно:

procedure putpixel2 (x,y:word;col:byte);assembler;
const a: word = 320;
asm
pusha
mov ax,0A000h
mov es,ax
mov ax,[y]
mul a
mov di,ax
add di,[x]
mov al,[col]
cld
stosb
popa
end;

Автор: Malice 13.03.2007 15:09

Вместо mul в данном случае лучше использовать тот факт, что:
y*320=y shl 8 + y shl 6
будет гараздо быстрее.