Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
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
|
|
![]() |
|
|
14:03:2008, 07:37
|
|
Новенький ![]() Группа: Программист Сообщений: 40 Регистрация: 19:05:2006 Пользователь №: 4 307 Специализация: Visual C++ Репутация: 0
|
после
call line_bresenham добавь xor ax, ax int 16h программа будет ждать нажатия кнопки на клавиатуре |
|
Сообщение
#2
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 03:39 |