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
|
section .text
|
||||||
|
|
||||||
global _start
|
global _start
|
||||||
|
|
||||||
_start:
|
_start:
|
||||||
|
xor rax, rax ; RAX auf 0 setzen
|
||||||
mov al, 0 ;schiebt in das Register AL 0 AL= 8 Bit
|
mov al, 0 ;schiebt in das Register AL 0 AL= 8 Bit
|
||||||
|
|
||||||
.loop:
|
.loop:
|
||||||
cmp al, 10 ;vergleicht ob AL 10 ist
|
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
|
inc al ;increment
|
||||||
jmp .loop ;sprung nach oben
|
jmp .loop ;sprung nach oben
|
||||||
@@ -15,4 +33,4 @@ _start:
|
|||||||
.done:
|
.done:
|
||||||
mov rax, 60
|
mov rax, 60
|
||||||
xor rdi, rdi
|
xor rdi, rdi
|
||||||
syscall
|
syscall
|
||||||
|
|||||||
Reference in New Issue
Block a user