db - definiowanie bajtu
Część sekcji Podstawy ścieżki Assembly w Coddy. Lekcja 24 z 45.
Najbardziej podstawowym sposobem tworzenia danych w pamięci jest db: Definiuj bajt. Tworzy jeden bajt (8 bitów) danych.
Składnia:
label db valuelabel: nazwa, którą nadajesz temu adresowi pamięcidb: dyrektywa Define Bytevalue: liczba lub znak do zapisania (od 0 do 255)
Przykłady:
section .data
age db 25 ; Tworzy bajt o nazwie "age" zawierający 25
grade db 'A' ; Tworzy bajt o nazwie "grade" zawierający 65 (kod ASCII znaku 'A')
zero db 0 ; Tworzy bajt o nazwie "zero" zawierający 0Co możesz przechowywać w jednym bajcie:
| Typ | Zakres | Przykład |
|---|---|---|
| Mała liczba | 0 do 255 | db 100 |
| Znak | 'A' do 'z' | db 'X' |
| Kod ASCII | 0 do 255 | db 65 (tak samo jak 'A') |
Wiele bajtów w jednym wierszu:
Możesz zdefiniować kilka bajtów po kolei, używając przecinków:
section .data
numbers db 5, 10, 15, 20 ; Tworzy 4 bajty: 5, 10, 15, 20
letters db 'A', 'B', 'C' ; Tworzy 3 bajty: 65, 66, 67Jak używać bajtu w kodzie:
section .data
myByte db 42
section .text
mov al, [myByte] ; Załaduj wartość 42 do al
add al, 1 ; al przyjmuje wartość 43
mov [myByte], al ; Zapisz 43 z powrotem w myByteWażna zasada:
| Zasada | Wyjaśnienie |
|---|---|
| Wartość musi mieścić się w 1 bajcie | Od 0 do 255 (lub pojedynczy znak) |
Użyj al, aby wczytać lub zapisać | al to 8-bitowy rejestr dla bajtów |
Częsty błąd:
; Błąd: próba zapisania liczby zbyt dużej, by zmieściła się w jednym bajcie
section .data
error db 300 ; 300 jest zbyt dużą wartością (maks. 255)Wyzwanie
ŁatwyUtwórz bajt o nazwie score i wartości 15 w sekcji .data.
Zapisz plik data.asm z poprawną sekcją .data i dyrektywą db.
Spróbuj swoich sił
%include "data.asm"
section .text
global _start
_start:
mov al, [score]
mov r12, rax
add al, 48
mov [digit], al
mov rax, 1
mov rdi, 1
mov rsi, digit
mov rdx, 1
syscall
mov rax, 60
mov rdi, 0
syscall
section .bss
digit resb 1Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Maszyna
Czym jest CPUPamięćRejestry a pamięćJak działają instrukcjeWzorzec dwóch plikówArchitektura x86-644Definiowanie danych
Sekcja .datadb - definiowanie bajtudw - definiowanie słowadd - definiowanie podwójnego słowadq - definiowanie poczwórnego słowaCiągi znaków z dbSymbol $Podsumowanie: budowanie data.asm2Systemy liczbowe
Dlaczego system binarny?Liczby binarneZamiana z systemu dziesiętnego na binarnyDlaczego system szesnastkowy?Zamiana z systemu szesnastkowego na dziesiętnyZamiana z systemu dziesiętnego na szesnastkowyASCII i system szesnastkowy5Wywołanie systemowe zakończenia
Czym jest syscall?Wywołanie systemowe zakończenia (60)Kody zakończeniaPodsumowanie: prawidłowe zakończeniePoćwicz samodzielnie: Edytor online Assembly