In che modo l'assemblaggio si riferisce al codice macchina / binario.
Ad esempio ecco come stampare sullo schermo in mikeOS (un piccolo sistema di assemblaggio puro), mikeOS utilizza NASM per assemblare.
BITS 16
ORG 32768
%INCLUDE 'mikedev.inc'
start:
mov si, mystring
call os_print_string
call os_wait_for_key
ret
mystring db 'My first MikeOS program!', 0
Dove os_print_string e os_wait_for_key sono definiti come
os_print_string equ 0003h ; SI = zero-terminated string
e
os_wait_for_key equ 0012h ; Returns AL = key pressed
in mikedev.inc rispettivamente e definito come
os_call_vectors:
jmp os_print_string ; 0003h
in kernal.asm
Ora nasometro deve fare molto più lavoro sotto la scena durante il montaggio, non ho idea di cosa.
In altre parole il linguaggio assembly è un wrapper in una certa misura per il codice macchina, proprio come dire che C è un wrapper per l'assembly. Se ho detto cout > > "Hello World", ad esempio in C ++, viene quindi compilato nell'equivalente dell'assemblaggio e assemblati in codice macchina.
Quindi sto cercando di capire come 0003h e 0012h sembrano dettare tutto ciò che accade quando si stampa sullo schermo. Come fanno questi due valori,
a) Comunicare al sistema CPU / PC quale bus invia i byte corrispondenti che rappresentano la stringa richiesta al bus monitor e non dire alla scheda audio.
b) In questo caso la stringa viene inviata al monitor, ovviamente, ora la mia comprensione è che si dispone di un frame buffer in grado di memorizzare un numero massimo di byte. Quindi, la risoluzione dello schermo è impostata su 1024 x 768, ovvero 786432 pixel e una frequenza di aggiornamento di 60 Hz sullo schermo, pertanto l'FB conterrà questo numero di valori di byte e quindi invierà questo numero di byte al monitor ogni 1 / 60 sec. Il primo byte nell'FB corrispondente al primo pixel sullo schermo e l'ultimo all'ultimo sullo schermo ecc.
Quindi, come fa la CPU / GPU a sapere quale byte inserire in quale posizione nell'FB. È come dire alla GPU 'ok ho bisogno di questo pixel al coord (245,232) verde quindi lascerò a te di mettere questo valore di pixel nella posizione corretta nell'FB' ecc.
Come funziona.