Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.212.145] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте)
дан текст программы который выводит на экран некоторую фигуру.Помогите пожалуйста мне дописать код в ассемблере чтобы выводил в динамике через 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 ; |