Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> ВОПРОС ПО АСМУ
sub
Вставить ник
сообщение 13:03:2008, 23:52
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 1
Регистрация: 13:03:2008
Пользователь №: 15 858
Специализация: lamer



Репутация: - 0 +


Прога, написанная на асме, работает корректно только из-под Нортона. При запуске из командной строки cmd ничего не выдает (должна рисовать линию). Кто знает в чем проблема и как её решить? Исходник: (писал не сам, тк в асме почти ничего не парю)
CODE
.model small
.data
pos_x dw 320
pos_y dw 20
old_x dw 160
old_y dw 100
x_inc dw -1
y_inc dw -1
color db 39

.stack 256

.386
.code



line_bresenham proc
pusha
mov cx, pos_x
mov dx, pos_y
mov ax, cx
sub ax, old_x
jns pixel_dx
neg ax
mov word ptr x_inc, 1
jmp short pixel_xneg
pixel_dx: mov word ptr x_inc,-1
pixel_xneg: mov bx, dx
sub bx, old_y
jns pixel_dy
neg bx
mov word ptr y_inc, 1
jmp short pixel_yneg
pixel_dy: mov word ptr y_inc,-1
pixel_yneg: shl ax,1
shl bx,1
call set_pixel
cmp ax, bx
jna neg_dxdy
mov di, ax
shr di, 1
neg di
add di, bx
line_cycle_a: cmp cx, word ptr old_x
je exit_bres
cmp di, 0
jl line_calc_a
add dx, word ptr y_inc
sub di, ax
line_calc_a: add cx, word ptr x_inc
add di, bx
call set_pixel
jmp short line_cycle_a
neg_dxdy: mov di, bx
shr di, 1
neg di
add di, ax
line_cycle_b: cmp dx, word ptr old_y
je exit_bres
cmp di, 0
jl line_calc_b
add cx, word ptr x_inc
sub di, bx
line_calc_b: add dx, word ptr y_inc
add di, ax
call set_pixel
jmp short line_cycle_b
exit_bres: popa
ret
line_bresenham endp

pixel_coords proc
push ax
push dx
mov ax, dx
mov bx, 320
mul bx
pop dx
add ax, cx
mov bx, ax
pop ax
ret
pixel_coords endp

set_pixel proc
push ax
push bx
mov al, color
call pixel_coords
mov byte ptr es:[bx], al
pop bx
pop ax
ret
set_pixel endp

begin: ;assume cs:@code, ds:@data, ss:@stack
mov ax, @data
mov ds, ax


push 0a000h
pop es
mov ax, 0013h
int 10h

call line_bresenham

mov ax, 4c00h
int 21h

end begin


Сообщение отредактировал European - 14:03:2008, 06:37
Причина редактирования: Установка тегов кода
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 1)
Maxx
Вставить ник
сообщение 14:03:2008, 07:37
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 40
Регистрация: 19:05:2006
Пользователь №: 4 307
Специализация: Visual C++



Репутация: - 0 +


после
call line_bresenham

добавь
xor ax, ax
int 16h

программа будет ждать нажатия кнопки на клавиатуре
Подняться вверх 
 
Сообщение #2


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 03:39
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net