Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2010, 13:53   #1
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию Ассемблер в С++

Добрый день всем..!! У меня есть программа, которую я написал на асме, которая строит окружность на экране...а потом выяснилось, что нужно на С++ со вставками на асме...не ясно, как быть с переменными..как их объявлять...? Заранее спасибо...!!!
вот код на С++, в который вставить:

Код:
#include <dos.h>
#include <iostream>

void main ()
{
    _asm
 {

 };
}
а вот асмовский, который нужно как-то преобразовать...

Код:
codesg segment
    assume cs: codesg, ds: codesg, es: codesg, ss: codesg
    org 100h
    .386
    begin: jmp main 
s1 db 'Postroit okrujnost?',10,13,'$'
s2 db 'Vvedite radius',10,13,'$'

two_pi	dd		180.0
four_pi		dw		360
color	db		10

xc		dw		320
yc		dw		175

;rx_1		dw		100
;ry_1		dw		85
koef	dd		0.85

rx		dw		?
ry		dw		?

x		dw		?
y		dw		?
angl	dw		1

probel db 10,13,'$'
ind db 0
count db 0
ch_1 db 0

point proc near
	push cx

	mov ah,0Ch
	mov al,color
	mov bh,0
	
	mov cx,x
	mov dx,y
	int 10h

	pop cx
;mov rx,0
;mov ry,0
;mov ind,0
;mov x,0
;mov y,0
	ret
point endp

    

main proc near
mov ah,09h
lea dx,s1
int 21h

mov ah,08h
int 21h

cmp al,'e'
jne @end

mov ah,09h
lea dx,s2
int 21h
@enter:
        mov ah,08
        int 21h
        
        inc count
        
        cmp count,4
        je @form
        
        cmp al,'e'
        je @form
        
        cmp al,'Q'
        je @end 
        jmp @stack
        ret

@stack:
         cbw
         push ax

@record: 
         mov ah,03
         mov bh,0
         int 10h 
         
         pop ax
         mov ch_1,al
         push ax
                
         mov ah,13h
         mov bl,30
         mov al,1
         lea bp,ch_1
         mov cx,1
         int 10h   

jmp @enter


;-------------------------------
@form:  

    mov ah,09
    lea dx,probel
    int 21h
    dec count    
    
    pop ax
    sub al,30h
    add ind,al
    dec count
    cmp count,0
    je @create_circle
    
    pop ax
    sub al,30h
    mov bl,10
    mul bl
    add ind,al
    dec count
    cmp count,0
    je @create_circle
    
    pop ax
    sub al,30h
    mov bl,100
    mul bl
    add ind,al
    dec count 
    cmp count,0
    je @create_circle

@create_circle:
;инициализировать графический режим 640x350	EGA	
	mov ah,0h
	mov al,10h
	int 10h

	;push ax
	mov al,ind
	cbw
	mov rx,ax
	mov ax,0
	mov al,ind
	cbw
	mov ry,ax

	;pop ax

mov cx,four_pi	
@create:

	finit
	fldpi
	fld		two_pi
	fdiv
	fstp	two_pi

@do:
	
	fld		two_pi	;ST = pi/180
	fild		angl	;ST = 1	ST(1) = pi/180
	fmul			;ST = pi/180

	fsincos			;ST(1) = cos(angl)	ST(0) = sin(angl)
	fild		ry	
	fmul
	fild		yc
	fadd
	fistp	y

	fild		rx	
	fmul
	fild		xc
	fadd
	fistp	x

	fwait
	call point
	inc angl
	loop @do

@end:



main endp
      codesg ends
      end begin
JeyKip вне форума Ответить с цитированием
Старый 03.11.2010, 20:07   #2
JeyKip
Форумчанин
 
Регистрация: 18.09.2009
Сообщений: 133
По умолчанию

ну или кто-то знает, как ввести значение через cin, а использовать его в качестве операнда в асме...пробовал int и byte,но безрезультатно...пишет, что несовместимые типы...или же просто описать переменные в стиле ассемблера (например, a db ?)...???
JeyKip вне форума Ответить с цитированием
Старый 04.11.2010, 19:09   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

db это char
dw это short
dd это long
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ассемблер VD1988 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 20.05.2010 22:10
Ассемблер Opiym Фриланс 3 20.05.2010 12:36
Ассемблер Андрей.12 Фриланс 2 05.04.2010 10:02
ассемблер ЫлЫч Помощь студентам 2 24.01.2010 12:42
Ассемблер maziLa Помощь студентам 2 14.07.2009 09:25