nma*_*rko 11 linux x86 assembly nasm
我希望这些问题相当简单:( NASM编译器,Linux,x86英特尔语法)
第1部分:
我试图弄清楚如何使用Assembly程序的.bss部分来找到一种方法来存储值,例如操作(+ - */)中的值到声明的变量.例如:
section .bss
variable: resb 50 ;Imaginary buffer
section .text
add 10,1 ;Operation
;move the result into variable
Run Code Online (Sandbox Code Playgroud)
所以,我知道有可能用内核intterupt来读取用户输入(但这涉及到字符串,但有没有办法将这个值复制到变量变量中,以便以后可以使用?这会更容易而不是必须推动和弹出堆栈上下两件事.
第2部分:
有没有办法删除.bss部分中变量的值?换句话说,如果我想在.bss变量中存储一个新值,如果没有变量中的字符/值没有与新值复合,我怎么能这样做呢?
谢谢
Mat*_*ery 29
section .bss
variable: resb 4
Run Code Online (Sandbox Code Playgroud)
...符号variable现在指的是该.bss部分中4字节存储的地址(即足以存储32位值).
section .text
...
mov eax, 123
mov [variable], eax
Run Code Online (Sandbox Code Playgroud)
...将eax寄存器设置为123,然后将值存储eax在符号所寻址的位置variable.
mov eax, [variable]
Run Code Online (Sandbox Code Playgroud)
...将当前存储在所寻址位置的值读variable入eax寄存器.
mov eax, 456
mov [variable], eax
Run Code Online (Sandbox Code Playgroud)
...存储一个新值,覆盖前一个值.