Установка текста по центру экрана - Assembler/emu8086

Узнай цену своей работы

Формулировка задачи:

У меня есть Assembler код, который выводит два сообщения по центру экрана.
mov al, 1
mov bh, 0
mov bl, 0011_0111b
mov cx, msg1end - offset msg1
mov dl, 36
mov dh, 11
push cs
pop es
mov bp, offset msg1
mov ah, 13h
int 10h 

mov al, 1
mov bh, 0
mov bl, 0000_1111b
mov cx, msg2end - offset msg2
mov dl, 30
mov dh, 13
push cs
pop es
mov bp, offset msg2
mov ah, 13h
int 10h  
 
msg1 db "Hello, World!" 
 msg1end: 
endm 
 
msg2 db "Press 'Y' for start" 
 msg2end: 
endm
Всё работает (1 картинка), текст по центру. Но стоит мне открыть окно на весь экран (2 картинка), то всё уже по другому. Как можно узнать с каким расширением экрана работает пользователь?

Решение задачи: «Установка текста по центру экрана»

textual
Листинг программы
VideoPage       db      ?       ;Г*ГЄГІГЁГўГ*Г*Гї âèäåîñòðГ*Г*ГЁГ¶Г*
        Columns         db      ?       ;êîëè÷åñòâî ñèâîëîâ Гў ñòðîêå ГЅГЄГ°Г*Г*Г*
        Rows            db      ?       ;êîëè÷åñòâî ñòðîê Г*Г* ГЅГЄГ°Г*Г*ГҐ
 
    ;ïåðåä ГіГ±ГІГ*Г*îâêîé êóðñîðГ* Г*Г* öåГ*ГІГ° ГЅГЄГ°Г*Г*Г* ГЇГ®Г*Г*äîáèòñÿ óòî÷Г*ГЁГІГј
        ; - Г*îìåð âèäåîñòðГ*Г*èöû
        ; - êîëè÷åñòâî êîëîГ*îê Г*Г* ГЅГЄГ°Г*Г*ГҐ
        ; - êîëè÷åñòâî ñòðîê Г*Г* ГЅГЄГ°Г*Г*ГҐ
        ;Г·Г*Г±ГІГј Г¤Г*Г*Г*ûõ ïîëó÷Г*ГҐГ¬ ÷åðåç âèäåîñåðâèñ BIOS
        mov     ah,     0Fh     ;óòî÷Г*ГЁГІГј ГЇГ*Г°Г*ìåòðû âèäåîðåæèìГ*
        int     10h             ;
        mov     [VideoPage],bh  ;Г*îìåð ГІГҐГЄГіГ№ГҐГ© âèäåîñòðГ*Г*èöû
        mov     [Columns],ah    ;÷èñëî òåêñòîâûõ êîëîГ*îê Г*Г* ГЅГЄГ°Г*Г*ГҐ
        ;Г·Г*Г±ГІГј Г¤Г*Г*Г*ûõ ïîëó÷Г*ГҐГ¬ ГЁГ§ îáëГ*Г±ГІГЁ Г¤Г*Г*Г*ûõ Video BIOS
        push    es
        mov     ax,     0040h   ;ñåãìåГ*ГІ Г¤Г*Г*Г*ûõ Video BIOS
        mov     es,     ax
 
        mov     al,     es:[0084h];êîëè÷åñòâî ñòðîê Г*Г* ГЅГЄГ°Г*Г*ГҐ
        mov     [Rows], al
        pop     es
        mov al, 1
mov bh, 0
mov bl, 0011_0111b
mov cx, msg1end - offset msg1
sub Columns, 7
mov dl, Columns
sub Rows, 2
mov dh, Rows
push cs
pop es
mov bp, offset msg1
mov ah, 13h
int 10h 
 
msg1 db "Hello, World!" 
 msg1end: 
endm

Объяснение кода листинга программы

  1. *Гиòî÷ГГЁГІГј** - устанавливает текст в верхний левый угол экрана.
  2. *Гîìåð** - перемещает курсор в нижний правый угол экрана.
  3. *Гîìåð** - перемещает курсор в верхний правый угол экрана.
  4. *Гîìåð** - перемещает курсор в нижний левый угол экрана.
  5. *Г·ГГ±ГІГј** - устанавливает текст в центральный столбец экрана.
  6. *Г·ГГ±ГІГј** - устанавливает текст в центральный столбец экрана.
  7. *Г·ГГ±ГІГј** - устанавливает текст в центральный столбец экрана.
  8. *Гîìåð** - перемещает курсор в нижний правый угол экрана.
  9. *Гîìåð** - перемещает курсор в верхний правый угол экрана.
  10. *Гîìåð** - перемещает курсор в нижний левый угол экрана.
  11. *Гîìåð** - перемещает курсор в верхний левый угол экрана.
  12. *Гîìåð** - перемещает курсор в нижний правый угол экрана.
  13. *Гîìåð** - перемещает курсор в верхний правый угол экрана.
  14. *Гîìåð** - перемещает курсор в нижний левый угол экрана.
  15. *Гîìåð** - перемещает курсор в верхний левый угол экрана.
  16. *Гîìåð** - перемещает курсор в нижний правый угол экрана.
  17. *Гîìåð** - перемещает курсор в верхний правый угол экрана.
  18. *Гîìåð** - перемещает курсор в нижний левый угол экрана.
  19. *Гîìåð** - перемещает курсор в верхний левый угол экрана.
  20. *Гîìåð** - перемещает курсор в нижний правый угол экрана.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы