Dezimalzahlen 0-9 ausgeben
This commit is contained in:
22
zaehler.asm
22
zaehler.asm
@@ -1,13 +1,31 @@
|
||||
section .bss
|
||||
buf resb 2 ;reserviert 2 Bytes im BSS
|
||||
|
||||
section .text
|
||||
|
||||
global _start
|
||||
|
||||
_start:
|
||||
xor rax, rax ; RAX auf 0 setzen
|
||||
mov al, 0 ;schiebt in das Register AL 0 AL= 8 Bit
|
||||
|
||||
.loop:
|
||||
cmp al, 10 ;vergleicht ob AL 10 ist
|
||||
je .done ;Jump if Equal nach done
|
||||
jge .done ;Jump if Equal or greater nach done
|
||||
|
||||
mov bl, al ; schiebt den Inhalt von AL in BL
|
||||
add bl, '0' ; formt Zahl nach ASCII Steuerzeichen
|
||||
mov [rel buf], bl ; schiebt die Dezimalzahl in den Buffer
|
||||
mov [rel buf+1], 10 ; Leerzeile
|
||||
|
||||
push rax ; sichert RAX in den Speicher AL->8Bit von RAX 64Bit
|
||||
mov rax, 1 ; schreibt eine 1 SYS_WRITE in das Register RAX
|
||||
mov rdi, 1 ; schreibt 1 stout in das Register RDI
|
||||
lea rsi, [rel buf]
|
||||
mov rdx, 2
|
||||
|
||||
syscall ;system call
|
||||
pop rax ; stellt RAX wieder da
|
||||
|
||||
inc al ;increment
|
||||
jmp .loop ;sprung nach oben
|
||||
@@ -15,4 +33,4 @@ _start:
|
||||
.done:
|
||||
mov rax, 60
|
||||
xor rdi, rdi
|
||||
syscall
|
||||
syscall
|
||||
|
||||
Reference in New Issue
Block a user