2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 assembler+turbo pascal
Сообщение21.05.2011, 22:04 
подскажите пожалуйста как исправить код чтобы работал в паскале 7.1?

text segment 'code' ;
assume CS:text,DS:data;
vertical proc;
v: ;
push CX;
mov AH,0Ch;
mov AL,6;
mov BH,0;
mov CX,SI;
int 10h;
inc DX;
pop CX;
loop v;
ret;
vertical endp;
horizontal proc;
h: ;
push CX;
mov AH,0Ch;
mov AL,6;
mov BH,0;
mov CX,SI;
int 10h;
inc SI;
pop CX;
loop h;
ret;
horizontal endp;

begin: ;
mov AX,00h;
mov AL,10h;
int 10h;
mov cx,3
rect: push cx
mov SI,100;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call vertical;
mov SI,100;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call horizontal;

mov SI,120;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call vertical;

mov SI,100;
add si,i
mov DX,120;
add dx,i
mov CX,21;
call horizontal;
add i,22
pop cx
loop rect

mov AH,08h
int 21h

mov AH,00h
mov AL,03h
int 10h

mov AX,4C00h;
int 21h;
text ends;
data segment
i dw 0
data ends

stk segment stack
dw 128 dup (0)
stk ends

end begin;

 
 
 
 Re: assembler+turbo pascal
Сообщение22.05.2011, 01:12 
Конкретизируйте ваш вопрос. Вас интересует, как можно использовать фрагменты ассемблерного кода в паскале? В tp есть ассемблерные вставки asm ... end;, где вместо многоточия могут располагаться ассеблерные инструкции (подробности и примеры смотрите в прилагаемой к tp документации). Разумеется, для решения вашей задачи необходимо понимание и ассемблера и паскаля. :)

 
 
 
 Re: assembler+turbo pascal
Сообщение22.05.2011, 09:29 
да......именно с вставками.
просто у меня не получается исправить некоторые операции чтобы они работали в паскале.
Вот и как мне сделать чтобы вот это работало:

asm

text segment 'code' ;
assume CS:text,DS:data;
vertical proc;
v: ;
push CX;
mov AH,0Ch;
mov AL,6;
mov BH,0;
mov CX,SI;
int 10h;
inc DX;
pop CX;
loop v;
ret;
vertical endp;
horizontal proc;
h: ;
push CX;
mov AH,0Ch;
mov AL,6;
mov BH,0;
mov CX,SI;
int 10h;
inc SI;
pop CX;
loop h;
ret;
horizontal endp;

begin: ;
mov AX,00h;
mov AL,10h;
int 10h;
mov cx,3
rect: push cx
mov SI,100;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call vertical;
mov SI,100;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call horizontal;

mov SI,120;
add si,i
mov DX,100;
add dx,i
mov CX,20;
call vertical;

mov SI,100;
add si,i
mov DX,120;
add dx,i
mov CX,21;
call horizontal;
add i,22
pop cx
loop rect

mov AH,08h
int 21h

mov AH,00h
mov AL,03h
int 10h

mov AX,4C00h;
int 21h;
text ends;
data segment
i dw 0
data ends

stk segment stack
dw 128 dup (0)
stk ends

end begin;

end.

-- Вс май 22, 2011 10:30:18 --

спасибо за внимание

-- Вс май 22, 2011 11:20:09 --

как то я саму задачу не написал...(
такое условие:
Имеется набор из 9-ти квадратиков. Выбор активного из них осуществляется нажатием соответствующей цифровой клавиши. Активный квадратик можно передвигать по полю, используя курсорные клавиши, а по нажатию "пробела" - менять его цвет. Написать программу построение различных фигур, испльзуя такой принцип управления.

 
 
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 13:57 
Ну pascal-обертка для вашего кода может выглядеть очень просто:
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
procedure vertical; assembler;
asm
    @v:
    push CX
    mov AH, 0Ch
    mov AL, 6
    mov BH, 0
    mov CX, SI
    int 10h
    inc DX
    pop CX
    loop @v
end;

procedure horizontal; assembler;
asm
    @h:
    push CX
    mov AH, 0Ch
    mov AL, 6
    mov BH, 0
    mov CX, SI
    int 10h
    inc SI
    pop CX
    loop @h
end;

var i: word;

begin asm
    mov AX, 00h
    mov AL, 10h
    int 10h
    mov CX, 3
    @rect: push CX
    mov SI, 100

    add SI, i
    mov DX, 100
    add DX, i
    mov CX, 20
    call vertical
    mov SI, 100
    add SI, i
    mov DX, 100
    add DX, i
    mov CX, 20
    call horizontal

    mov SI, 120
    add SI, i
    mov DX, 100
    add DX, i
    mov CX, 20
    call vertical

    mov SI, 100
    add SI, i
    mov DX, 120
    add DX, i
    mov CX, 21
    call horizontal
    add i, 22
    pop CX
    loop @rect

    mov AH, 08h
    int 21h

    mov AH, 00h
    mov AL, 03h
    int 10h

    mov AX, 4C00h
    int 21h
end; end.
 

Здесь я просто поправил имена меток, поудалял точки с запятой и т.д. Что именно делает этот код -- не знаю; по крайней мере, заявленной интерактивности не видно, просто рисуются какие-то 3 прямоугольника...

 
 
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 19:59 
незнаю как перемещать.

 
 
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 20:37 

(2zombie2478)

Пожалуйста, при выкладывании вышего кода пользуйтесь для его оформления тегами [сode] или [syntаx]!

 
 
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 20:44 
вот я теперь поправил код,как сделать чтобы перемещался он?
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
procedure vertical; assembler;
asm
@v:
push CX
mov AH, 0Ch
mov AL, 6
mov BH, 0
mov CX, SI
int 10h
inc DX
pop CX
loop @v
end;

procedure horizontal; assembler;
asm
@h:
push CX
mov AH, 0Ch
mov AL, 6
mov BH, 0
mov CX, SI
int 10h
inc SI
pop CX
loop @h
end;

var i: word;

begin asm

mov AX, 00h
mov AL, 10h
int 10h
mov CX, 1
@rect: push CX

mov SI, 200
add SI, i
mov DX, 200
add DX, i
mov CX, 50
call vertical
mov SI, 200
add SI, i
mov DX, 200
add DX, i
mov CX, 50
call horizontal

mov SI, 250
add SI, i
mov DX, 200
add DX, i
mov CX, 50
call vertical
mov SI, 200
add SI, i
mov DX, 250
add DX, i
mov CX, 50
call horizontal

add i, 22
pop CX
loop @rect

mov AH, 08h
int 21h


end; end.

 
 
 
 Re: assembler+turbo pascal
Сообщение07.06.2011, 07:01 
всё сделал.)

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group