我试图将字符串移动到BSS var中,我尝试了各种方法,但我有一种感觉,除非我对字符串进行硬编码或使用读取来抓取字符串I' m打一场徒劳的战斗,我遇到的问题是,虽然我可以将文本数据输入到正确的寄存器中,但是更多的数据伴随着它会破坏输出,还有一些如何破坏vdlen的值(如果我直接为ecx赋值在WriteFile中放置了适当的长度,但尝试使用vdlen导致它远离雷达)
如何获得正确的结果(即"您好!"在" text.txt")?
section .bss
vdata resw 10
vdlen resb 3
vfd resb 1
vfn resb 15
err resb 2
section .text
mov eax,vfn
mov dword [eax],'test'
mov dword [eax+3], '.txt'
mov ebx,vdata
mov dword [ebx], 'Hell'
mov dword [ebx+3],'o!'
mov ecx,vdlen
mov [ecx], 0x03h
jmp WriteFile
ProgramEnd:
mov eax,1
mov ebx,[err]
int 80h
WriteFile:
mov eax,5 ;Syscall for open()
mov ebx,vfn
mov ecx, 65 ; mode Write-only Create
mov edx, 420 ; permissions rw-r-r
int 80h ; Linux Kernel Interrupt
mov [vfd],eax ; get file descriptor
mov eax,4 ;Syscall for write()
mov ebx,[vfd] ; FD argument
mov ecx,[vdata] ; this is where my issue is
mov edx,[vdlen] ; length of vdata
int 80h
mov [err],eax
jmp ProgramEnd
答案 0 :(得分:0)
在rkbh和MikeCat向OP提供的非常有用的建议之后,OP得到了它的工作:
import {PolymerElement, html} from '/node_modules/@polymer/polymer/polymer-element.js';
loadElement('/poly2-element.html');
class Poly3Element extends PolymerElement {
....
}
TL; DR:OP试图使用DWORD MOV将6个字节填入4个字节,并错误地指定了vdlen的大小。