当前位置:网站首页>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边栏推荐
- CC2530 common registers for port initialization
- What is the difference between 14Cr1MoR container plate and 14Cr1MoR (H)? Chemical composition and performance analysis of 14Cr1MoR
- 跟我学企业级flutter项目:简化框架demo参考
- Eleven requirements for test management post
- Leetcode binary search tree
- What material is sa537cl2 equivalent to in China? Sa537cl2 corresponding material
- 浅谈拉格朗日插值及其应用
- Difference between JSON and bson
- CC2530 common registers for watchdog
- 比亚迪、长城混动市场再“聚首”
猜你喜欢

CC2530 common registers for serial communication

关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM

CC2530 common registers for watchdog

word 退格键删除不了选中文本,只能按delete

NSQ source code installation and operation process

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

2022 love analysis · panoramic report of digital manufacturers of state-owned enterprises

Daily code 300 lines learning notes day 10
智慧之道(知行合一)

Threejs Part 2: vertex concept, geometry structure
随机推荐
[combinatorics] non descending path problem (number of non descending paths with constraints)
Visual SLAM algorithms: a survey from 2010 to 2016
word 退格键删除不了选中文本,只能按delete
Kotlin学习快速入门(7)——扩展的妙用
Golang anonymous function use
RF analyze demo build step by step
What is the material of 13mnnimor? 13mnnimor steel plate for medium and low temperature pressure vessels
Thread pool executes scheduled tasks
Alibaba P8 painstakingly sorted it out. Summary of APP UI automated testing ideas. Check it out
Characteristic polynomial and constant coefficient homogeneous linear recurrence
Simulink oscilloscope data is imported into Matlab and drawn
Netease UI automation test exploration: airtest+poco
Hong Kong Polytechnic University | data efficient reinforcement learning and adaptive optimal perimeter control of network traffic dynamics
CC2530 common registers
[combinatorics] recursive equation (outline of recursive equation content | definition of recursive equation | example description of recursive equation | Fibonacci Series)
Leetcode binary search tree
AcWing 第58 场周赛
PHP CI (CodeIgniter) log level setting
mysql用户管理
Caching mechanism of Hibernate / session level caching mechanism