1楼:匿名用户
cjne指令,参与比较的两个数,若不相等,则转移,若相等则程序顺序执行;当第一个操作数(目的字节内容)大于等于第二个数(源字节内容)时,cy=0,否则cy=1。
汇编语言里jc指令时啥意思
2楼:天池血崩
jc=jump if carry
当运算产生进位标志时,即cf=1时,跳转到目标程序处。
例如:add al,bl
jc carrybit
inc al;如果al+bl产生了进位,这一句就不执行了。
carrybit:
neg al
这段程序没有任何意义,仅仅作为示例哈。。。
相同的指令还有:
jnc,当cf=0时跳转;
jz,当zf=1时跳转,jnz,当zf=0时跳转;
jo,当of=1时跳转,jno,当of=0时跳转;
jp,当pf=1时跳转……
依此类推,标志寄存器的各个位基本上都可以用来做“条件跳转”的条件。
当然,条件跳转不仅仅是标志寄存器位,还可以是cx如:a_loop:
;do something
dec cx
jcxz
jmp a_loop
可以看出,这一段相当于一个loop指令。。。
还有,用于大小判断型的:
cmp op1,op2
jxx ***x
其中jxx有以下几种:
ja表示op1>op2,jna表示op1<=op2;
jb表示op1=op2;
je表示op1=op2,jne表示op1<>op2;
还有jae、jnae、jbe、jnbe等等功能重复不再赘述。
以上是无符号数的比较。
有符号数的比较将a换成g,将b换成l即可。
a=above b=below g=greater l=less介绍的够详细了吧。。。
3楼:匿名用户
汇编语言里jc是进位则跳转指令;
跳转指令分三类:
一、无条件跳** jmp;
二、根据 cx、ecx 寄存器的值跳** jcxz(cx 为 0 则跳转)、jecxz(ecx 为 0 则跳转);
三、根据 eflags 寄存器的标志位跳转。
4楼:匿名用户
jc就是jump if carry
如果发生进位则跳转,由标志寄存器cf标志位来判断
5楼:
jc是一个单测试条件转移指令,转移条件为cf=1
6楼:不亦心
jc address 加/减法出现进/借位是就跳转到address,否者顺序执行
7楼:刷帖之神
如果cf=1跳转到标号处
请教一个汇编语言的程序,求出al中1的个数,不太明白这个程序段的意思
8楼:永恒
movah,0;计数器置0again:shlal,1;al中的数逻辑左移1位adcah,0;带进位的加法,即将上条指令置的进位标志值加到ah中
cmpal,0;检查al是否为0jnzagain;非0则转againhlt;
这个程序可简化为:
movcx,8
movah,0;计数器置0again:shlal,1;al中的数逻辑左移1位adcah,0;带进位的加法,即将上条指令置的进位标志值加到ah中
loopagain;循环8次hlt