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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2010, 16:32   #1
bookkc
Форумчанин
 
Регистрация: 16.05.2009
Сообщений: 199
По умолчанию Блок схема ASSEMBLER

Помогите сделать блок схему, немогу понять с чего начинать, как и что может есть какие-то программы для создания автоматически ? Помогите

Код:
stk segment stack
db 2 dup(?)
stk ends
 
data segment 
text    db 'Hello World!!! WooHoo!!!!'
textend EQU $
textsize EQU textend-text
clear   db textsize DUP(32)
data ends
 
code segment
assume cs:code, ds:data, ss:stk
 
start:
        push data
        pop es
 
        mov ax,3
        int 10h
 
        mov dh,15       ; dh = y координат
        mov dl,5        ; dl = x координат
        mov si,1        ; si = напрямок флагу до y
        mov di,si       ; di = напрямок флагу до x
 
        ; main loop
draw_m:
        push dx         ; зберегти поточні координати
 
        mov ax,1300h
        xor bh,bh       ; нуль vid сторінки
        mov bl,0ah      ; колір тексту
        mov cx,textsize ; розмір рядка
        mov bp,offset text
        int 10h         ; робимо рядок у dh:dl
 
        ; робиться невелика затримка
delay:
        xor ah,ah
        int 1Ah         ; отримуємо таймер
        add dx,1        ; 4 * 18.2
        mov bx,dx
d_loop:     
        int 28h         ; NTVDM простою
        int 1Ah         
        cmp dx,bx       ; порівняти поточний з BX
        jne d_loop      
 
        pop dx          ; відновлення координат
 
        mov ah,1        ; отримуємо стан клавіатури
        int 16h
        jz clear_str    ; якщо клавіша не натиснута, очищаємо поточний рядок
        xor ah,ah       ; отрімуємо символ з buf
        int 16h
        cmp al,27       ; якщо натиснута ESC
        je done_prog
 
clear_str:
        push dx         ; зберігання координат
        mov ax,1300h
        xor bh,bh
        mov bl,0ah
        mov cx,textsize
        mov bp,offset clear
        int 10h         ; очищення рядка у XY
        pop dx
 
        test si,si      ; якщо si = 0
        jz dec_y        ; тоді  dec y
        inc dh          ; inc y
        cmp dh,24       ; якщо y > 24
        jb test_x       
        xor si,si       ; si прапор напряму = 0
        jmp test_x
dec_y:
        dec dh          ; dec y
        cmp dh,0        ; якщо y > 0
        ja test_x       
        mov si,1        ; si прапор напряму = 1
test_x:
        test di,di      ; якщо di = 0
        jz dec_x        ; тоді dec x
        inc dl          ; inc x
        cmp dl,80-textsize ; якщо x > 80-text рядок
        jb test_done    
        xor di,di       ; di прапор напряму = 0
        jmp test_done
dec_x:
        dec dl          ; dec x
        cmp dl,0        ; якщо x > 0
        ja test_done
        mov di,1        ; di прапор напряму = 1
test_done:
        jmp draw_m      ; йти до основного циклу
 
done_prog:
        mov ah,4ch      ; зупинка программи, вихід в ДОС
        int 21h
 
code ends
end start
bookkc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок схема katya777 Помощь студентам 2 28.10.2010 17:01
Схема алгоримта (блок схема) на задачу по Паскалю LINCHAK Помощь студентам 0 22.10.2010 16:56
Блок схема sir.andrey Помощь студентам 4 27.03.2010 13:33
Блок схема алгоритма программы и схема взаимодействия модулей. Lazio Фриланс 3 02.12.2009 23:10