【发布时间】:2021-08-16 12:36:50
【问题描述】:
此问题与nasm Intel: Access items in the stack without using pop有关
我的数据、代码和堆栈段是之前设置的,以覆盖全部内存。
我尝试使用以下代码直接访问堆栈:
[bits 32]
[org 0x0]
mov ah, 0x62
mov al, 'H'
push ax
mov esi, 0x90000 ;(esp is 0x90000)
sub esi, 4
mov word ax, [esi]
mov word [0xB8A00], ax
jmp $
它应该打印一个 H,但它什么也没打印。我不明白我做错了什么,我也尝试删除 sub esi, 4,结果相同。我也尝试过切换 ah & al 的内容(因为 little endian,我保留了这个顺序)
【问题讨论】:
-
push ax仅将 ESP 减少 2,而不是 4;也许你的意思是push eax。使用调试器查看寄存器值和内存内容。
标签: assembly operating-system nasm