Why does the value that DI is pointing to change when I changed the value that SI is pointing to?
push si
push [bx]
mov si, [si]
mov [bx], si
mov di, bx
pop bx
pop si
mov [si], bx
This is my code. For some reason the value that di is pointing to changes after mov[si], bx (the last line).
Does anybody know why?
Edit: Both si and di are pointing to values in the same array, which is defined as db. The value that di is pointing to becomes the value after it in the array.
assembly x86-16
add a comment |
push si
push [bx]
mov si, [si]
mov [bx], si
mov di, bx
pop bx
pop si
mov [si], bx
This is my code. For some reason the value that di is pointing to changes after mov[si], bx (the last line).
Does anybody know why?
Edit: Both si and di are pointing to values in the same array, which is defined as db. The value that di is pointing to becomes the value after it in the array.
assembly x86-16
2
Maybesianddipoint to the same memory address?
– tkausl
Nov 16 '18 at 10:46
No, they don't.
– Gderu
Nov 16 '18 at 10:48
3
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30
add a comment |
push si
push [bx]
mov si, [si]
mov [bx], si
mov di, bx
pop bx
pop si
mov [si], bx
This is my code. For some reason the value that di is pointing to changes after mov[si], bx (the last line).
Does anybody know why?
Edit: Both si and di are pointing to values in the same array, which is defined as db. The value that di is pointing to becomes the value after it in the array.
assembly x86-16
push si
push [bx]
mov si, [si]
mov [bx], si
mov di, bx
pop bx
pop si
mov [si], bx
This is my code. For some reason the value that di is pointing to changes after mov[si], bx (the last line).
Does anybody know why?
Edit: Both si and di are pointing to values in the same array, which is defined as db. The value that di is pointing to becomes the value after it in the array.
assembly x86-16
assembly x86-16
edited Nov 16 '18 at 11:04
Gderu
asked Nov 16 '18 at 10:44
GderuGderu
368
368
2
Maybesianddipoint to the same memory address?
– tkausl
Nov 16 '18 at 10:46
No, they don't.
– Gderu
Nov 16 '18 at 10:48
3
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30
add a comment |
2
Maybesianddipoint to the same memory address?
– tkausl
Nov 16 '18 at 10:46
No, they don't.
– Gderu
Nov 16 '18 at 10:48
3
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30
2
2
Maybe
si and di point to the same memory address?– tkausl
Nov 16 '18 at 10:46
Maybe
si and di point to the same memory address?– tkausl
Nov 16 '18 at 10:46
No, they don't.
– Gderu
Nov 16 '18 at 10:48
No, they don't.
– Gderu
Nov 16 '18 at 10:48
3
3
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30
add a comment |
1 Answer
1
active
oldest
votes
Jester was correct, I added words to an array of bytes which changed not only the specific part I was trying to change but also the parts around it.
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53336250%2fwhy-does-the-value-that-di-is-pointing-to-change-when-i-changed-the-value-that-s%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Jester was correct, I added words to an array of bytes which changed not only the specific part I was trying to change but also the parts around it.
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
add a comment |
Jester was correct, I added words to an array of bytes which changed not only the specific part I was trying to change but also the parts around it.
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
add a comment |
Jester was correct, I added words to an array of bytes which changed not only the specific part I was trying to change but also the parts around it.
Jester was correct, I added words to an array of bytes which changed not only the specific part I was trying to change but also the parts around it.
answered Nov 16 '18 at 11:36
GderuGderu
368
368
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
add a comment |
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
1
1
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
Upvote for answering your own question! Always nice to see that.
– fuz
Nov 16 '18 at 11:57
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53336250%2fwhy-does-the-value-that-di-is-pointing-to-change-when-i-changed-the-value-that-s%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown

2
Maybe
sianddipoint to the same memory address?– tkausl
Nov 16 '18 at 10:46
No, they don't.
– Gderu
Nov 16 '18 at 10:48
3
You probably have a byte array but you are writing words so affecting two elements at a time.
– Jester
Nov 16 '18 at 11:12
Huh, you're right! Thanks a lot!
– Gderu
Nov 16 '18 at 11:30