Перед тем, как я узнал немного Ассамблеи, вы слышали, что вам нужно «запрограммировать непосредственно на аппаратное обеспечение», «мне пришлось делать все с нуля». Например, чтобы написать персонаж без операционной системы, я подумал, что мне нужно будет знать, как работает мой монитор и пишут пиксель за символом.Что существует в рамках Ассамблеи?
Так что мне стало интересно, и я немногому учусь. И я видел, что это было не так «близко к металлу». Затем хотел, чтобы кто-то объяснил мне, как это работает, и если можно пойти глубже и действительно контролировать все оборудование.
Вот код, который печатает символ:
[BITS 16]
[ORG 0x7C00]
MOV AL, 65
CALL PrintCharacter
JMP $
PrintCharacter:
MOV AH, 0x0E
MOV BH, 0x00
MOV BL, 0x07
INT 0x10
RET
TIMES 510 - ($ - $$) db 0
DW 0xAA55
Этот код использует службы BIOS через прерывание 0x10. Таким образом, код, который действительно обеспечивает прямой доступ к аппаратным средствам, был написан вашим поставщиком BIOS. Как показывает этот пример, при использовании сборки вам не нужно напрямую программировать аппаратное обеспечение *, вы можете использовать любые службы, отключающие вашу среду (например, прерывания BIOS или системные вызовы ОС). – Jester
Возможно, с помощью DOSBOX вы все равно хотите использовать службу BIOS 0x10 для входа в режим VGA. В режиме VGA 0x0D диапазон адресов от A000: 0000 до A000: f9ff будет содержать палитры данных пикселей. Или в текстовом режиме следующие 2000 байт, начиная с B800: 0000, позволят написание символа IBM ASCII и его цветового кода на экране как можно более непосредственно. –
Программирование «Монтаж» и «Голый металл» несколько связано, но отнюдь не эквивалентно. Можно использовать код в сборке, используя операционные системы и библиотеки пользовательского пространства. Напротив, многоголосного кода не написано в сборке. – EOF