汇编语言:这个例题3.21中,L1:JC L2指令,JC表示

2021-01-14 16:41:51 字数 1890 阅读 6402

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