装配如果AND

use*_*868 -8 assembly

我有装配任务的问题:

编写一个程序,在数据段中写入数字7-15,从偏移200h开始,然后使用循环并将它们与从内存中读取数据进行比较,DX将插入可被4整除的数字之和.

这是我的代码,它不起作用.我是汇编语言的初学者.有人可以帮帮我吗?

mov ax,data
mov ds,ax
mov cl,07d 
mov ch,015d
mov [bx],200h

c:
mov [bx] ,cl
inc cl
inc bx
cmp cl,ch
jne c

c1:
mov cl,[bx]
if
AND ax, 3h
add dx, ax
inc cl
inc bx 
else
jmp c1
end if
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 6

没有IFELSE说明......嗯...... 任何汇编语言.如果要在程序集中使用等效的if/else块,则需要编写正确的指令序列.

例如,考虑这个C代码:

if (a == 0)
{
    b = 1;
}
else
{
    b = 2;
}
Run Code Online (Sandbox Code Playgroud)

适当的汇编代码看起来像这样:

    cmp eax, 0
    jne anotzero
aiszero:
    mov ebx, 1
    jmp endifblock
anotzero:
    mov ebx, 2
    jmp endifblock
endifblock:
    nop
Run Code Online (Sandbox Code Playgroud)

  • @ user1011868你的问题表明你需要编程i286 CPU/16bit程序.eax和ebx是32位寄存器.请在您的问题中说明您的目标平台!(杰夫的回答非常好.如果你确实阅读了你的文献,你会理解它.) (2认同)