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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2015, 23:25   #1
profpress-123
 
Регистрация: 24.11.2015
Сообщений: 2
По умолчанию вывести в динамике через LPT-порт

Код:
;ПРИМЕР EXE-ПРОГРАММЫ
;Определение сегмента стека /можно оставлять без изменения/
;Имя сегмента стека - stacksg
ssg segment para stack 'stack'  ;Стандартный заголовок определения стека 
dw 32 dup(?)                        ;Задание глубины стека
ssg ends                                ;Конец сегмента стека
 
;Определение сегмента данных
;Имя сегмента данных - datasg
datasg segment para 'data'          ;Стандартный заголовок определения данных
;Здесь определяются данные
namepar label byte                         ;Имя списка параметров:
maxnlen db 30                              ;максимальная длина имени 
namelen db ?                               ;число введенных символов
namefld db 30 dup(' '),'$'       ;имя и ограничитель для вывода на экран   
strg db 'I am here, in the Shadow',13,10,'$'
namprmp db 'TEST'
string1 DB 'Den nedeli','$'
 
tes db ?
cc db ?
day db ?
day1 db ?
day2 db ?
 
 
k db ?
a db ?
b db ?
c db ?
x db ?
y db ?
ends                                ;Конец сегмента данных
    
;Сегмент кода - тело программы                         
codesg segment para 'code'          ;Заголовок сегмента кода
begin proc far                      ;Начало программы - основной процедуры
;-------------------------------------------------------------------------
assume cs:codesg,ds:datasg,ss:ssg ; \
push ds                               ;   \
sub ax,ax                             ; Стандартный заголовок любой 
push ax                               ;        EXE - программы
mov ax,datasg                         ;   /
mov ds,ax                             ; /
;-------------------------------------------------------------------------
;Непосредственно ваша программа
 
START:
mov ax,0003h; стандартный 16-цветовой режим
int 10h ;передача управления в BIOS
 
 
mov x,15
mov y,0
sub y,01
 
mov cx,0010
zero:
sub x,01
add y,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero
 
CIKL:
 
mov al,y
cmp al,4Ch
JNE m1
JMP START
m1:
 
mov cx,0005
zero1:
add y,10
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero1
 
 
mov cx,0012
zero2:
add x,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero2
 
mov cx,0009
 
zero4:
 
sub x,01
add y,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero4
 
MOV AH,02   ; получить код следующей нажатой клавиши
MOV DL,AL   ; переместить считанный символ из AL в DL
INT 21H     ; вывести его на экран.
 
MOV  AH,00     ;    Функция ввода
INT  16H       ;        Вызвать BIOS
CMP  AL,0Dh    ;    Enter
JE   EXIT     ;         да - выйти
 
JMP CIKL
EXIT:   
mov ah,1
int 21h
;---------------------------------------------------------------------------
ret
begin endp      ;Стандартный конец программы
codesg ends     ;
end begin       ;

Последний раз редактировалось Stilet; 25.11.2015 в 09:54.
profpress-123 вне форума Ответить с цитированием
Старый 24.11.2015, 23:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Что это? О чем это? Зачем это тут? Какие вопросы то?
p51x вне форума Ответить с цитированием
Старый 25.11.2015, 12:12   #3
profpress-123
 
Регистрация: 24.11.2015
Сообщений: 2
По умолчанию

помогите доделать программу
дан текст программы который выводит на экран некоторую фигуру
нужно вывести в динамике через LPT-порт то есть чтобы фигура двигалась по экрану

Код:
;ПРИМЕР EXE-ПРОГРАММЫ
;Определение сегмента стека /можно оставлять без изменения/
;Имя сегмента стека - stacksg
ssg segment para stack 'stack'  ;Стандартный заголовок определения стека 
dw 32 dup(?)                        ;Задание глубины стека
ssg ends                                ;Конец сегмента стека
 
;Определение сегмента данных
;Имя сегмента данных - datasg
datasg segment para 'data'          ;Стандартный заголовок определения данных
;Здесь определяются данные
namepar label byte                         ;Имя списка параметров:
maxnlen db 30                              ;максимальная длина имени 
namelen db ?                               ;число введенных символов
namefld db 30 dup(' '),'$'       ;имя и ограничитель для вывода на экран   
strg db 'I am here, in the Shadow',13,10,'$'
namprmp db 'TEST'
string1 DB 'Den nedeli','$'
 
tes db ?
cc db ?
day db ?
day1 db ?
day2 db ?
 
 
k db ?
a db ?
b db ?
c db ?
x db ?
y db ?
ends                                ;Конец сегмента данных
    
;Сегмент кода - тело программы                         
codesg segment para 'code'          ;Заголовок сегмента кода
begin proc far                      ;Начало программы - основной процедуры
;-------------------------------------------------------------------------
assume cs:codesg,ds:datasg,ss:ssg ; \
push ds                               ;   \
sub ax,ax                             ; Стандартный заголовок любой 
push ax                               ;        EXE - программы
mov ax,datasg                         ;   /
mov ds,ax                             ; /
;-------------------------------------------------------------------------
;Непосредственно ваша программа
 
START:
mov ax,0003h; стандартный 16-цветовой режим
int 10h ;передача управления в BIOS
 
 
mov x,15
mov y,0
sub y,01
 
mov cx,0010
zero:
sub x,01
add y,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero
 
CIKL:
 
mov al,y
cmp al,4Ch
JNE m1
JMP START
m1:
 
mov cx,0005
zero1:
add y,10
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero1
 
 
mov cx,0012
zero2:
add x,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero2
 
mov cx,0009
 
zero4:
 
sub x,01
add y,01
 
mov ah,02
mov dh,x
mov dl,y
int 10h
 
mov ah,02
mov dl,2Ah
int 21h
 
loop zero4
 
MOV AH,02   ; получить код следующей нажатой клавиши
MOV DL,AL   ; переместить считанный символ из AL в DL
INT 21H     ; вывести его на экран.
 
MOV  AH,00     ;    Функция ввода
INT  16H       ;        Вызвать BIOS
CMP  AL,0Dh    ;    Enter
JE   EXIT     ;         да - выйти
 
JMP CIKL
EXIT:   
mov ah,1
int 21h
;---------------------------------------------------------------------------
ret
begin endp      ;Стандартный конец программы
codesg ends     ;
end begin       ;
Изображения
Тип файла: jpg 2015-11-25 12.10.57.jpg (80.3 Кб, 146 просмотров)

Последний раз редактировалось profpress-123; 25.11.2015 в 17:38.
profpress-123 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
требуется согласоватьустройства через LPT порт 7te4enie Фриланс 1 10.04.2012 01:15
Управление программой через LPT порт firmwares Помощь студентам 12 27.02.2011 00:33
Управление ШД через LPT - порт remz Общие вопросы Delphi 17 06.10.2010 22:39
lpt порт DeDoK Компьютерное железо 2 11.07.2010 13:23
LPT порт ImmortalAlexSan Компьютерное железо 5 19.06.2010 18:35