当前位置:网站首页>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
边栏推荐
- Threejs Part 2: vertex concept, geometry structure
- Develop team OKR in the way of "crowdfunding"
- What is the pledge pool and how to pledge?
- Simulink oscilloscope data is imported into Matlab and drawn
- LeetCode 1656. Design ordered flow
- LeetCode 1657. Determine whether the two strings are close
- What is the difference between 14Cr1MoR container plate and 14Cr1MoR (H)? Chemical composition and performance analysis of 14Cr1MoR
- Visual SLAM algorithms: a survey from 2010 to 2016
- CC2530 common registers for crystal oscillator settings
- 网络安全web渗透技术
猜你喜欢
Idea configuration plug-in
What kind of material is 14Cr1MoR? Analysis of chemical composition and mechanical properties of 14Cr1MoR
(补)双指针专题
2022 love analysis · panoramic report of digital manufacturers of state-owned enterprises
[solved] access denied for user 'root' @ 'localhost' (using password: yes)
ucore概述
(Supplement) double pointer topic
一台服务器最大并发 tcp 连接数多少?65535?
斑馬識別成狗,AI犯錯的原因被斯坦福找到了
MySQL Basics
随机推荐
[combinatorics] polynomial theorem (polynomial theorem | polynomial theorem proof | polynomial theorem inference 1 item number is the number of non negative integer solutions | polynomial theorem infe
Necessary ability of data analysis
To resist 7-Zip, list "three sins"? Netizen: "is the third key?"
中南大学|通过探索理解: 发现具有深度强化学习的可解释特征
utfwry. Dat PHP, about ThinkPHP's method of IP location using utfwry address Library
Two sides of the evening: tell me about the bloom filter and cuckoo filter? Application scenario? I'm confused..
Kindeditor editor upload image ultra wide automatic compression -php code
于文文、胡夏等明星带你玩转派对 皮皮APP点燃你的夏日
[sword finger offer] 58 - I. flip the word order
(Supplement) double pointer topic
What is the material of sa302grc? American standard container plate sa302grc chemical composition
Le zèbre a été identifié comme un chien, et la cause de l'erreur d'AI a été trouvée par Stanford
【剑指 Offer 】64. 求1+2+…+n
CC2530 common registers for timer 1
13mnnimo5-4 German standard steel plate 13MnNiMo54 boiler steel 13MnNiMo54 chemical properties
What material is sa537cl2? Analysis of mechanical properties of American standard container plate
UCORE overview
[2. Basics of Delphi grammar] 2 Object Pascal data type
Is it safe to open a stock account by mobile registration? Does it need money to open an account
为抵制 7-Zip,列出 “三宗罪” ?网友:“第3个才是重点吧?”