Консультация № 192369
12.01.2018, 11:09
0.00 руб.
12.01.2018, 11:13
0 2 1
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Привет. Работаю на Емашине(ИнтелАтом). Не так давно заинтересовался ассемблером. Скачал Кнута, Калашникова и masm32. Что-бы не заводить лишнюю переменную, добавил link16.exe и afdpro.exe в masm32/bin. Работаю с батами:
для EXE:
Код:

@echo off
ml /c /coff 00.asm
link /subsystem:console 00.obj
::00.exe
::afdpro 00.exe
pause

и для COM:
Код:

@echo off
ml /c /AT 00.asm
link16 /TINY 00.obj,00.com;
pause
::00.com
::afdpro 00.com

Как патриот - начал со второго...но на видеобуфере завис. Из 3-го примера:
Код:

;вывод символа на экран-прямое отображение в видеобуфер
CSEG segment ;CSEG-название сегмента
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h ;код проги расположен со смещением 100h(com-проги)
proga:
mov ax,0B800h ;сегмент дисплея в текстовом режиме!
mov es,ax ;загружаем его в сегментный дисплей
mov di,0 ;смещение относительно предыдущего сегмента

mov ah,31 ;заносим атрибут символа:ярко-белый на синем фоне
mov al,1 ;код ASCII-символа(01-рожица)
mov es:[di],ax ;*заносим их по адресу 0В800:0000(левый верхний угол дисплея)

mov ah,10h ;10h - функция ожидания нажатия любой клавиши, прерывания 16h
int 16h

int 20h ;выход в DOS-прога вернётся на место (~exit)

CSEG ends
end proga
;*загружаем не в регистр, а по адресу [0B800:0000]

Ничего не отображается кроме мигающего курсора. Может в Атоме ASCII другая?

Обсуждение

давно
Мастер-Эксперт
17387
18345
12.01.2018, 11:14
общий
Обратите, пожалуйста, внимание на данную консультацию, перенесённую из другого раздела.
Об авторе:
Facta loquuntur.
давно
Посетитель
7438
7205
12.01.2018, 11:40
общий
это ответ
Здравствуйте, cupoma58!
Чтобы работала прямая запись в видеобуфер, необходимо явно проиницировать текстовый видеорежим.
Т.е. необходимо в начале добавить строки:
[code lang=asm]
mov ax,0003h
int 10h[/code]Раньше, под чистым ДОС-ом все работало, а вот при эмуляции под нынешними ОС Windows есть нюансы
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа