mirror of
https://github.com/cfenollosa/os-tutorial.git
synced 2024-10-27 20:34:19 +00:00
we _can_ access different locations in the stack. correct this comment, and add an example for clarity
This commit is contained in:
parent
5b88226edf
commit
89bc72d54c
@ -1,19 +1,23 @@
|
|||||||
mov ah, 0x0e ; tty mode
|
mov ah, 0x0e ; tty mode
|
||||||
|
|
||||||
mov bp, 0x8000 ; this is an address far away from 0x7c00 so that we don't get overwritten
|
mov bp, 0x8000 ; this is an address far away from 0x7c00 so that we don't get overwritten
|
||||||
mov sp, bp ; if the stack is empty then sp points to bp
|
mov sp, bp ; if the stack is empty then sp points to bp
|
||||||
|
; if we push (0x8000 - 0x7c00) bits (0x400 or 1,024 bits), we will start to write over
|
||||||
|
; the bootloader. so, don't do that!
|
||||||
|
|
||||||
|
; still in 16-bit mode, so these each push 16 bits onto the stack.
|
||||||
push 'A'
|
push 'A'
|
||||||
push 'B'
|
push 'B'
|
||||||
push 'C'
|
push 'C'
|
||||||
|
|
||||||
; to show how the stack grows downwards
|
; to show how the stack grows downwards
|
||||||
mov al, [0x7ffe] ; 0x8000 - 2
|
mov al, [0x7ffe] ; 0x8000 - 16 bits
|
||||||
int 0x10
|
int 0x10
|
||||||
|
|
||||||
; however, don't try to access [0x8000] now, because it won't work
|
mov al, [0x8000] ; this is a null byte - it's the top of the stack
|
||||||
; you can only access the stack top so, at this point, only 0x7ffe (look above)
|
int 0x10
|
||||||
mov al, [0x8000]
|
|
||||||
|
mov al, [0x7ffa] ; 0x8000 - 48 bits. lower in memory
|
||||||
int 0x10
|
int 0x10
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user