当前位置:网站首页>Résolution de l'instance d'assemblage - - affichage à l'écran en mode réel
Résolution de l'instance d'assemblage - - affichage à l'écran en mode réel
2022-07-03 16:50:00 【Raindayinrain】
1.Comment1
; Mise en marche,Exécution en premierBIOS,Exécuter à nouveau le programme de démarrage principal du disque dur,C'est ici..
; C'est le mode réel.,16Mode bit,L'emplacement physique du Bootstrapper principal est maintenant0x7c00
; Zone mémoire physique:0xb8000~0xbFFFFEst la zone de mémoire.
; Mode mémoire80*25.Chaque caractère occupe2Octets,L'un est un caractèreasciiCode,L'un est le format d'affichage.
mov ax,0xb800
mov es,ax
; esPeut être utilisé pour les registres de segments auxiliaires d'adressage de mémoire physique de données,Par défautds
mov byte [es:0x00],'L'
mov byte [es:0x01],0x07
mov byte [es:0x02],'a'
mov byte [es:0x03],0x07
mov byte [es:0x04],'b'
mov byte [es:0x05],0x07
mov byte [es:0x06],'e'
mov byte [es:0x07],0x07
mov byte [es:0x08],'l'
mov byte [es:0x09],0x07
mov byte [es:0x0a],' '
mov byte [es:0x0b],0x07
mov byte [es:0x0c],"o"
mov byte [es:0x0d],0x07
mov byte [es:0x0e],'f'
mov byte [es:0x0f],0x07
mov byte [es:0x10],'f'
mov byte [es:0x11],0x07
mov byte [es:0x12],'s'
mov byte [es:0x13],0x07
mov byte [es:0x14],'e'
mov byte [es:0x15],0x07
mov byte [es:0x16],'t'
mov byte [es:0x17],0x07
mov byte [es:0x18],':'
mov byte [es:0x19],0x07
; Lors de l'entrée dans le Bootstrapper principal ,csLe contenu est le suivant:0x0000
mov cx,cs
mov ds,cx
mov ax,number
mov bx,10
mov dx,0
; dx:ax / bx, Commercial Fair ax, Mets le reste dx
div bx
mov [0x7c00+number+0x00],dl ; Reste de stockage, C'est un peu
xor dx,dx ; dxSera réglé à0
div bx
mov [0x7c00+number+0x01],dl ; Reste de stockage, Voici les dix
xor dx,dx
div bx
mov [0x7c00+number+0x02],dl ; Reste de stockage, C'est une centaine
xor dx,dx
div bx
mov [0x7c00+number+0x03],dl ; Reste de stockage, C'est mille
xor dx,dx
div bx
mov [0x7c00+number+0x04],dl ; Reste de stockage, Voici dix mille
mov al,[0x7c00+number+0x04]
add al,0x30 ; Ceci convertit une valeur décimale de 10 000 bits en asciiCode
mov [es:0x1a],al ; Continuer à écrire 10 000 bits à la mémoire d'affichage ascii
mov byte [es:0x1b],0x04
mov al,[0x7c00+number+0x03]
add al,0x30
mov [es:0x1c],al
mov byte [es:0x1d],0x04
mov al,[0x7c00+number+0x02]
add al,0x30
mov [es:0x1e],al
mov byte [es:0x1f],0x04
mov al,[0x7c00+number+0x01]
add al,0x30
mov [es:0x20],al
mov byte [es:0x21],0x04
mov al,[0x7c00+number+0x00]
add al,0x30
mov [es:0x22],al
mov byte [es:0x23],0x04
mov byte [es:0x24],'D'
mov byte [es:0x25],0x07
; Contrôle l'affichage pour afficher un segment de contenu , Et puis il a montré number, Et puis il a montré D.
infi: jmp near infi
; Langues d'assemblage supportant les étiquettes , L'étiquette est une valeur numérique . Décalage reflétant la position indiquée .
; Ici.numberÇa reflètedbDéclaration5- Oui.1 Distance entre la position de départ des données octets et la position de départ du programme
number db 0,0,0,0,0
; Appui à la compilation timesPréfixe, Utilisé pour indiquer combien de fois les instructions suivantes sont exécutées .
; Déclaration203- Oui.1Octets de données, Occupe une position continue 203Espace de stockage.
times 203 db 0
; Bootstrapper principal512Octets, Les deux derniers octets doivent être 0x55 0xaa
db 0x55,0xaa 2.Comment2
jmp near start
mytext db 'L',0x07,'a',0x07,'b',0x07,'e',0x07,'l',0x07,' ',0x07,'o',0x07,\
'f',0x07,'f',0x07,'s',0x07,'e',0x07,'t',0x07,':',0x07
number db 0,0,0,0,0
start:
mov ax,0x7c0
mov ds,ax
mov ax,0xb800
mov es,ax
cld
mov si,mytext
mov di,0
mov cx,(number-mytext)/2
; Oui.ds:siDivision,cxUn mot, Vers l'avant es:diDivision
rep movsw
mov ax,number
mov bx,ax
mov cx,5
mov si,10
digit:
xor dx,dx ; dxSet to0
div si ; dx:ax / si,Quotientax,Restedx
mov [bx],dl ; Stocker les bits dans number Premier emplacement de mémoire marqué
inc bx
loop digit ; Exécution du cycledigit, Compte tenu de l'exécution initiale ,Application conjointecxUne fois
mov bx,number
mov si,4
show:
mov al,[bx+si] ; number Emplacement du marquage 4Début des octets[De0Nombre]
add al,0x30 ; Convertir en octets asciiCode
mov ah,0x04 ; Afficher les propriétés
mov [es:di],ax ; Stocké dans la mémoire d'affichage immédiatement après la chaîne d'étiquettes précédente
add di,2
dec si
jns show ; Cycle,Jusqu'àdec si Le résultat est négatif , Arrêter le cycle pour continuer .
mov word [es:di],0x0744
jmp near $
times 510-($-$$) db 0 ; $ Représente le décalage entre la position actuelle et la position de départ .
db 0x55,0xaa 3. Somme par pile
jmp near start ; Saut
message db '1+2+3+...+100='
start:
mov ax,0x7c0
mov ds,ax
mov ax,0xb800
mov es,ax
mov si,message
mov di,0
mov cx,start-message
@g:
mov al,[si] ; De la mémoire physique au Registre
mov [es:di],al ; Du registre à la mémoire physique , Parce que la mémoire physique directe n'est pas prise en charge 1à la mémoire physique2
inc di
mov byte [es:di],0x07
inc di
inc si ; di Pointer vers l'emplacement de la mémoire 2 Octets pour afficher un siOctets à
loop @g ; AdoptioncxNombre de contrôles
xor ax,ax ; axZéro.
mov cx,1 ;
@f:
add ax,cx
inc cx
cmp cx,100
jle @f ; Continuer la boucle tant que le résultat de la comparaison est inférieur ou égal à
xor cx,cx
mov ss,cx
mov sp,cx
mov bx,10
xor cx,cx
@d:
inc cx
xor dx,dx
div bx ; dx:ax / bx,Quotientax,Restedx
or dl,0x30 ; Réalisationdl+0x30Même effet
push dx ; Utiliser la pile pour stocker les résultats de calcul --Bits,Dix.,...
cmp ax,0
jne @d ; Les résultats de la comparaison ne sont pas égaux ,Continuez le cycle
@a:
pop dx
mov [es:di],dl ; Va sortir de la pile ascii Les caractères sont copiés dans la mémoire d'affichage immédiatement après la Section d'affichage précédente
inc di
mov byte [es:di],0x07
inc di
loop @a ; Adoptioncx Pour contrôler le nombre de cycles ,À chaque arrivéeloopIci.,cxSoustraire d'abord1,Si à ce stadecxPour0, La boucle ne peut pas continuer .Sinon,Continuez le cycle.
jmp near $
times 510-($-$$) db 0
db 0x55,0xaa边栏推荐
- Record windows10 installation tensorflow-gpu2.4.0
- PHP CI (CodeIgniter) log level setting
- Preventing/catching “IllegalArgumentException: parameter must be a descendant of this view” error
- [2. Basics of Delphi grammar] 2 Object Pascal data type
- [sword finger offer] 58 - I. flip the word order
- CC2530 common registers for timer 1
- Mysql 单表字段重复数据取最新一条sql语句
- Interpretation of several important concepts of satellite antenna
- (Supplement) double pointer topic
- CC2530 common registers for port interrupts
猜你喜欢
![[combinatorics] non descending path problem (number of non descending paths with constraints)](/img/89/bd1a2ddd9632ab5d4b4bee9336be51.jpg)
[combinatorics] non descending path problem (number of non descending paths with constraints)

Yu Wenwen, Hu Xia and other stars take you to play with the party. Pipi app ignites your summer

斑马识别成狗,AI犯错的原因被斯坦福找到了

(补)双指针专题

斑馬識別成狗,AI犯錯的原因被斯坦福找到了
The way of wisdom (unity of knowledge and action)

What is the maximum number of concurrent TCP connections for a server? 65535?

Arduino esp32: overall framework of lvgl project (I)

Thread pool executes scheduled tasks

ucore概述
随机推荐
(Supplement) double pointer topic
Google Earth engine (GEE) - daymet v4: daily surface weather data set (1000m resolution) including data acquisition methods for each day
Thread pool executes scheduled tasks
Zebras are recognized as dogs, and Stanford found the reason why AI made mistakes
8 cool visual charts to quickly write the visual analysis report that the boss likes to see
【剑指 Offer 】64. 求1+2+…+n
Visual SLAM algorithms: a survey from 2010 to 2016
Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
Execute script unrecognized \r
CC2530 common registers for timer 1
Shentong express expects an annual loss of nearly 1billion
为抵制 7-Zip,列出 “三宗罪” ?网友:“第3个才是重点吧?”
一台服务器最大并发 tcp 连接数多少?65535?
香港理工大学|数据高效的强化学习和网络流量动态的自适应最优周界控制
Is it safe to open a stock account by mobile registration? Does it need money to open an account
Simulink oscilloscope data is imported into Matlab and drawn
PHP CI (CodeIgniter) log level setting
function overloading
Kindeditor editor upload image ultra wide automatic compression -php code
A survey of state of the art on visual slam