global _start
section .data
xmsg: db "x is "
ymsg: db "y is "
nl: db 0ah,0dh
end:
section .bss
struct: resb 8
dmsg: resb 1
section .text
_start:
; your code goes here
; fill the struct
mov eax,struct
mov byte [eax],4
mov byte [eax+4],9
; erase ~evidence~ register
xor eax,eax
; read the struct
mov esi,struct
mov eax,xmsg
mov ebx,ymsg
call print
mov eax,[esi]
add eax,48
mov [dmsg],eax
mov eax,dmsg
mov ebx,eax
inc ebx
call print
mov eax,nl
mov ebx,end
call print
mov eax,ymsg
mov ebx,nl
call print
mov eax,[esi+4]
add eax,48
mov [dmsg],eax
mov eax,dmsg
mov ebx,eax
inc ebx
call print
mov eax,nl
mov ebx,end
call print
; clear ... yk
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
xor esi,esi
je exit
exit:
mov eax, 01h ; exit()
xor ebx, ebx ; errno
int 80h
print:
mov ecx,eax
sub ebx,eax
mov edx,ebx
mov eax,4
mov ebx,1
int 80h
ret
Z2xvYmFsIF9zdGFydAoKc2VjdGlvbiAuZGF0YQp4bXNnOiBkYiAieCBpcyAiCnltc2c6IGRiICJ5IGlzICIKbmw6IGRiIDBhaCwwZGgKZW5kOgoKc2VjdGlvbiAuYnNzCnN0cnVjdDogcmVzYiA4CmRtc2c6IHJlc2IgMQoKc2VjdGlvbiAudGV4dAoKX3N0YXJ0OgoJOyB5b3VyIGNvZGUgZ29lcyBoZXJlCgo7IGZpbGwgdGhlIHN0cnVjdAptb3YgZWF4LHN0cnVjdAptb3YgYnl0ZSBbZWF4XSw0Cm1vdiBieXRlIFtlYXgrNF0sOQo7IGVyYXNlIH5ldmlkZW5jZX4gcmVnaXN0ZXIKeG9yIGVheCxlYXgKOyByZWFkIHRoZSBzdHJ1Y3QKbW92IGVzaSxzdHJ1Y3QKbW92IGVheCx4bXNnCm1vdiBlYngseW1zZwpjYWxsIHByaW50Cm1vdiBlYXgsW2VzaV0KYWRkIGVheCw0OAptb3YgW2Rtc2ddLGVheAptb3YgZWF4LGRtc2cKbW92IGVieCxlYXgKaW5jIGVieApjYWxsIHByaW50Cm1vdiBlYXgsbmwKbW92IGVieCxlbmQKY2FsbCBwcmludAptb3YgZWF4LHltc2cKbW92IGVieCxubApjYWxsIHByaW50Cm1vdiBlYXgsW2VzaSs0XQphZGQgZWF4LDQ4Cm1vdiBbZG1zZ10sZWF4Cm1vdiBlYXgsZG1zZwptb3YgZWJ4LGVheAppbmMgZWJ4CmNhbGwgcHJpbnQKbW92IGVheCxubAptb3YgZWJ4LGVuZApjYWxsIHByaW50CjsgY2xlYXIgLi4uIHlrCnhvciBlYXgsZWF4CnhvciBlYngsZWJ4CnhvciBlY3gsZWN4CnhvciBlZHgsZWR4CnhvciBlc2ksZXNpCgoKCWplCQlleGl0CgpleGl0OgoJbW92CQllYXgsIDAxaAkJOyBleGl0KCkKCXhvcgkJZWJ4LCBlYngJCTsgZXJybm8KCWludAkJODBoCgpwcmludDoKbW92IGVjeCxlYXgKc3ViIGVieCxlYXgKbW92IGVkeCxlYngKbW92IGVheCw0Cm1vdiBlYngsMQppbnQgODBoCnJldA==