|
|
|
Вывод текста на микроассемблере посередине экрана
|
|||
|---|---|---|---|
|
#18+
В общем мне нужен код программы, которая выводит посередине экрана введенный пользователем текст с ограничением ввода, ниже строки, где выводится символ. мой багнутый код( в начале флаг рисую до 56-ой строчки и символ , не обращайте внимания) ;ПРИМЕР EXE-ПРОГРАММЫ ;Определение сегмента стека /можно оставлять без изменения/ ;Имя сегмента стека - stacksg sseg segment para stack 'stack' ;Стандартный заголовок определения стека db 32 dup(?) ;Задание глубины стека sseg ends ;Конец сегмента стека ;Определение сегмента данных ;Имя сегмента данных - datasg datasg segment para 'data' ;Стандартный заголовок определения данных ;Здесь определяются данные dalen label byte maximum db 21 unity db ? A DW ? dark db 21 dup (' '),'$' string db 'Enter a number:',13,10,'$' string2 db 'Enter a string',13,10,'$' ends ;Конец сегмента данных ;Сегмент кода - тело программы codesg segment para 'code' ;Заголовок сегмента кода begin proc far ;Начало программы - основной процедуры ;------------------------------------------------------------------------- assume cs:codesg,ds:datasg,ss:sseg ; \ push ds ; \ sub ax,ax ; Стандартный заголовок любой push ax ; EXE - программы mov ax,datasg ; / mov ds,ax ; / ;------------------------------------------------------------------------- ;Непосредственно ваша программа MOV AX,0700H ; AH 06 прокрутка ; AL 00 весь экран MOV BH,16h ; синий MOV CX,0000 ; от 0000 MOV DX,184FH ; до 24,79(полный экран) INT 10H ; биос MOV AX,0600H ; AH 06 прокрутка ; AL 00 весь экран MOV BH,76h ; белый MOV CX,0025 ; от 0000 MOV DX,184FH ; до 24,79(полный экран) INT 10H ; биос MOV AX,0600H ; AH 06 прокрутка ; AL 00 весь экран MOV BH,46h ; красный MOV CX,0055 ; от 0000 MOV DX,184FH ; до 24,79(полный экран) INT 10H ; биос MOV AH, 02 ;место вывода операнда MOV BH, 00 MOV DX, 0100H INT 10H MOV AH, 09 ;выводим первый операнд LEA DX, string INT 21H ; Вызов DOS MOV AH, 01 ;читаем первый символ INT 21H MOV AH, 02 ;выводим здесь MOV DX, 0C27H INT 10H ;получаем код следующей нажатой клавиши MOV DL, AL INT 21H MOV AH, 02 MOV DX, 0300H ;место вывода операнда INT 10H MOV AH, 09 ;выводим второй операнд LEA DX, string2 INT 21H MOV AH, 0AH ;вывод символов LEA DX, dalen MOV A, CX INT 21H ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! MOV AH, 02 ;размещение строки посередине символа MOV AH, 00 MOV AL, 02 MOV CL, 02 DIV CL MOV DL, 41 SUB DL, AL MOV DH, 13 MOV AH, 02 INT 10H MOV AH, 09H ;вывод строки MOV CX, 21 LEA DX, dark INT 21H ;------------------------------------------------------------------------- ret begin endp codesg ends ; end begin ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2012, 19:59 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=64&tid=1342120]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 300ms |

| 0 / 0 |
