давно
Старший Модератор
31795
6196
26.05.2011, 14:16
общий
это ответ
Здравствуйте, Canijke!
Программа на паскале(ТР7):
[code р=100]var
a,b,c,d:string;
procedure CopyStrA(var x,y:string);external;
{$L q183348a}
procedure CopyStrB(var x,y:string);external;
{$L q183348b}
procedure CopyStrC(var x,y:string);
begin
asm
cld
lds si,dword ptr x
les di,dword ptr y
lodsb
stosb
mov cl,al
xor ch,ch
rep movsb
end
end;
begin
Writeln('Canijke');
repeat
write('Enter string:');
readln(d)
until length(d)>0;
CopyStrA(d,a);
writeln('Result A:',a);
CopyStrB(d,b);
Writeln('Result B:',b);
CopyStrC(d,c);
writeln('Result C:',c);
readln;
end.[/code]
С директивой MODEL и упрощенным описанием сегментов:
[code р=100]model small,pascal
.code
public CopyStrA
proc CopyStrA
push bp
mov bp,sp
cld
mov di,[bp+04]
mov es,[bp+06]
mov si,[bp+08]
mov ds,[bp+10]
lodsb
stosb
mov cl,al
xor ch,ch
rep movsb
pop bp
ret 8
endp
end[/code]
Полное описание сегмента:
[code р=100]_TEXT segment word public 'CODE'
public CopyStrB
assume cs:_TEXT
proc CopyStrB
push bp
mov bp,sp
cld
mov di,[bp+04]
mov es,[bp+06]
mov si,[bp+08]
mov ds,[bp+10]
lodsb
stosb
mov cl,al
xor ch,ch
rep movsb
pop bp
ret 8
endp
_TEXT ends
end[/code]
Компилятор TASM 2.0.
вопросы задавайте в минифорум
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.