Assembly language compare instruction not working
Process:
call cScreen ; clear screen
mov ah,09h
lea dx,msg1
int 21h
mov dl,10
mov ah,2
int 21h
mov dl,13
mov ah,2
int 21h
mov ah,2
mov dl,msg2
int 21h
mov cx,control
loading:
mov ah,2
mov dl,msg2
int 21h
loop loading
;set cursor
mov ah,2
mov bh,0
mov cx,4
mov dh,2
mov dl,10
int 10h
mov ah,2
mov dl,msg2
int 21h
mov ah,9
lea dx,msg1
int 21h
call Delay
inc control
cmp control,10
jne Process
I am trying to do a process bar but the last compare is not working.
msg 1 is use for draw the bar, and msg 2 is for building the processing bar.
and the loading loop is not working also.
anyone have any idea on it?
below are my the data i create
msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0
assembly x86
New contributor
add a comment |
Process:
call cScreen ; clear screen
mov ah,09h
lea dx,msg1
int 21h
mov dl,10
mov ah,2
int 21h
mov dl,13
mov ah,2
int 21h
mov ah,2
mov dl,msg2
int 21h
mov cx,control
loading:
mov ah,2
mov dl,msg2
int 21h
loop loading
;set cursor
mov ah,2
mov bh,0
mov cx,4
mov dh,2
mov dl,10
int 10h
mov ah,2
mov dl,msg2
int 21h
mov ah,9
lea dx,msg1
int 21h
call Delay
inc control
cmp control,10
jne Process
I am trying to do a process bar but the last compare is not working.
msg 1 is use for draw the bar, and msg 2 is for building the processing bar.
and the loading loop is not working also.
anyone have any idea on it?
below are my the data i create
msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0
assembly x86
New contributor
MaybeDS
isn't initialized?
– rkhb
Dec 27 '18 at 16:59
What assembler are you using? How does it decide on an operand-size forinc control
? If it's MASM,control db 0
would imply byte operand size. But thenmov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or elseinc control
wouldn't even assemble without square brackets).
– Peter Cordes
2 days ago
add a comment |
Process:
call cScreen ; clear screen
mov ah,09h
lea dx,msg1
int 21h
mov dl,10
mov ah,2
int 21h
mov dl,13
mov ah,2
int 21h
mov ah,2
mov dl,msg2
int 21h
mov cx,control
loading:
mov ah,2
mov dl,msg2
int 21h
loop loading
;set cursor
mov ah,2
mov bh,0
mov cx,4
mov dh,2
mov dl,10
int 10h
mov ah,2
mov dl,msg2
int 21h
mov ah,9
lea dx,msg1
int 21h
call Delay
inc control
cmp control,10
jne Process
I am trying to do a process bar but the last compare is not working.
msg 1 is use for draw the bar, and msg 2 is for building the processing bar.
and the loading loop is not working also.
anyone have any idea on it?
below are my the data i create
msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0
assembly x86
New contributor
Process:
call cScreen ; clear screen
mov ah,09h
lea dx,msg1
int 21h
mov dl,10
mov ah,2
int 21h
mov dl,13
mov ah,2
int 21h
mov ah,2
mov dl,msg2
int 21h
mov cx,control
loading:
mov ah,2
mov dl,msg2
int 21h
loop loading
;set cursor
mov ah,2
mov bh,0
mov cx,4
mov dh,2
mov dl,10
int 10h
mov ah,2
mov dl,msg2
int 21h
mov ah,9
lea dx,msg1
int 21h
call Delay
inc control
cmp control,10
jne Process
I am trying to do a process bar but the last compare is not working.
msg 1 is use for draw the bar, and msg 2 is for building the processing bar.
and the loading loop is not working also.
anyone have any idea on it?
below are my the data i create
msg1 db 10,13,"-----------$"
msg2 db "|"
control db 0
assembly x86
assembly x86
New contributor
New contributor
edited Dec 28 '18 at 14:46
Jim Mischel
106k12128247
106k12128247
New contributor
asked Dec 27 '18 at 16:21
Tan Jia Jin
93
93
New contributor
New contributor
MaybeDS
isn't initialized?
– rkhb
Dec 27 '18 at 16:59
What assembler are you using? How does it decide on an operand-size forinc control
? If it's MASM,control db 0
would imply byte operand size. But thenmov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or elseinc control
wouldn't even assemble without square brackets).
– Peter Cordes
2 days ago
add a comment |
MaybeDS
isn't initialized?
– rkhb
Dec 27 '18 at 16:59
What assembler are you using? How does it decide on an operand-size forinc control
? If it's MASM,control db 0
would imply byte operand size. But thenmov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or elseinc control
wouldn't even assemble without square brackets).
– Peter Cordes
2 days ago
Maybe
DS
isn't initialized?– rkhb
Dec 27 '18 at 16:59
Maybe
DS
isn't initialized?– rkhb
Dec 27 '18 at 16:59
What assembler are you using? How does it decide on an operand-size for
inc control
? If it's MASM, control db 0
would imply byte operand size. But then mov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or else inc control
wouldn't even assemble without square brackets).– Peter Cordes
2 days ago
What assembler are you using? How does it decide on an operand-size for
inc control
? If it's MASM, control db 0
would imply byte operand size. But then mov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or else inc control
wouldn't even assemble without square brackets).– Peter Cordes
2 days ago
add a comment |
1 Answer
1
active
oldest
votes
You have this instruction:
mov cx, control
First thing is that you have defined control as:
control db 0
So you've allocated a byte for control
, and yet you're loading it as a word. That's going to give you some trouble in your loop. You need to either define control
as a word, or do something like:
mov cx,0
mov cl,control
You have the same problem with your final comparison:
cmp cx,control
control
is just a byte, but you're comparing an entire word. Whatever byte follows control
in memory is going to affect the outcome.
add a comment |
Your Answer
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
});
}
});
Tan Jia Jin is a new contributor. Be nice, and check out our Code of Conduct.
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%2f53947952%2fassembly-language-compare-instruction-not-working%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
You have this instruction:
mov cx, control
First thing is that you have defined control as:
control db 0
So you've allocated a byte for control
, and yet you're loading it as a word. That's going to give you some trouble in your loop. You need to either define control
as a word, or do something like:
mov cx,0
mov cl,control
You have the same problem with your final comparison:
cmp cx,control
control
is just a byte, but you're comparing an entire word. Whatever byte follows control
in memory is going to affect the outcome.
add a comment |
You have this instruction:
mov cx, control
First thing is that you have defined control as:
control db 0
So you've allocated a byte for control
, and yet you're loading it as a word. That's going to give you some trouble in your loop. You need to either define control
as a word, or do something like:
mov cx,0
mov cl,control
You have the same problem with your final comparison:
cmp cx,control
control
is just a byte, but you're comparing an entire word. Whatever byte follows control
in memory is going to affect the outcome.
add a comment |
You have this instruction:
mov cx, control
First thing is that you have defined control as:
control db 0
So you've allocated a byte for control
, and yet you're loading it as a word. That's going to give you some trouble in your loop. You need to either define control
as a word, or do something like:
mov cx,0
mov cl,control
You have the same problem with your final comparison:
cmp cx,control
control
is just a byte, but you're comparing an entire word. Whatever byte follows control
in memory is going to affect the outcome.
You have this instruction:
mov cx, control
First thing is that you have defined control as:
control db 0
So you've allocated a byte for control
, and yet you're loading it as a word. That's going to give you some trouble in your loop. You need to either define control
as a word, or do something like:
mov cx,0
mov cl,control
You have the same problem with your final comparison:
cmp cx,control
control
is just a byte, but you're comparing an entire word. Whatever byte follows control
in memory is going to affect the outcome.
answered Dec 27 '18 at 19:59
Jim Mischel
106k12128247
106k12128247
add a comment |
add a comment |
Tan Jia Jin is a new contributor. Be nice, and check out our Code of Conduct.
Tan Jia Jin is a new contributor. Be nice, and check out our Code of Conduct.
Tan Jia Jin is a new contributor. Be nice, and check out our Code of Conduct.
Tan Jia Jin is a new contributor. Be nice, and check out our Code of Conduct.
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53947952%2fassembly-language-compare-instruction-not-working%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
Maybe
DS
isn't initialized?– rkhb
Dec 27 '18 at 16:59
What assembler are you using? How does it decide on an operand-size for
inc control
? If it's MASM,control db 0
would imply byte operand size. But thenmov cx,control
would be an error, operand-size mismatch. So use an better assembler that enforces operand-size, if you want to rely on it to select / check the operand-size for memory accesses. (You're not using NASM, or elseinc control
wouldn't even assemble without square brackets).– Peter Cordes
2 days ago