2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 assembler+turbo pascal
Сообщение21.05.2011, 22:04 


21/05/11
8
подскажите пожалуйста как исправить код чтобы работал в паскале 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 
Заслуженный участник


26/07/09
1559
Алматы
Конкретизируйте ваш вопрос. Вас интересует, как можно использовать фрагменты ассемблерного кода в паскале? В tp есть ассемблерные вставки asm ... end;, где вместо многоточия могут располагаться ассеблерные инструкции (подробности и примеры смотрите в прилагаемой к tp документации). Разумеется, для решения вашей задачи необходимо понимание и ассемблера и паскаля. :)

 Профиль  
                  
 
 Re: assembler+turbo pascal
Сообщение22.05.2011, 09:29 


21/05/11
8
да......именно с вставками.
просто у меня не получается исправить некоторые операции чтобы они работали в паскале.
Вот и как мне сделать чтобы вот это работало:

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 
Заслуженный участник


26/07/09
1559
Алматы
Ну 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 


21/05/11
8
незнаю как перемещать.

 Профиль  
                  
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 20:37 
Заслуженный участник


26/07/09
1559
Алматы

(2zombie2478)

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

 Профиль  
                  
 
 Re: assembler+turbo pascal
Сообщение24.05.2011, 20:44 


21/05/11
8
вот я теперь поправил код,как сделать чтобы перемещался он?
код: [ скачать ] [ спрятать ]
Используется синтаксис 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 


21/05/11
8
всё сделал.)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group