%include "asm_io.inc"
segment .data
segment .bss
argument resb 32 ; argument[32]
segment .text
global main
main:
enter 0,0
mov ebx, 4
mov ecx, dword [ebp + 4 * ebx]
mov eax, dword [ecx + 4]
mov [argument], eax
mov al, byte [argument + 0]
sub al, 48
call print_int
end: leave
mov eax, 0
ret
我正在尝试将字符串从命令行转换为整数(例如,当我在命令行键入$。/ Hello 30时,“ 30”必须是program(procedure)的整数参数)。 在发现[argument + 0] =='30'之后,[argument + 1] = bin / bash, 我以为我可以使用[参数+ 0]得到正确的数字。 但结果就像-1075579555。
即使发表一点评论,也将非常有帮助。谢谢
答案 0 :(得分:2)
程序启动时,栈的布局就这样
<div id="selected-card">
some code here
</div>
对于您的任务,您需要获取第一个程序参数的地址。
您可以在Rails.application.routes.draw do
devise_for :users
root to: 'visitor_pages#posts'
# root to: 'posts#index'
resources :posts
resources :posts do
member do
get :referred, :references
end
end
end
上找到它。
在执行 0
Address of last environment string
...
Address of 2nd environment string
Address of 1st environment string
0
Address of last program argument
...
Address of 2nd program argument
Address of 1st program argument
Address of program path
ESP -> Number of arguments
之后,由于该指令将dword [esp + 8]
寄存器压入寄存器,因此您可以在enter 0,0
== EBP
处找到它。
dword [esp + 12]