我的装配分配有问题:
编写一个程序,在数据段中写入数字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
答案 0 :(得分:6)
在...... well ... 任何汇编语言中没有IF
或ELSE
指令。如果要在汇编中使用等效的if / else块,则需要编写正确的指令序列。
if (a == 0)
{
b = 1;
}
else
{
b = 2;
}
适当的汇编代码如下所示:
cmp eax, 0
jne anotzero
aiszero:
mov ebx, 1
jmp endifblock
anotzero:
mov ebx, 2
jmp endifblock
endifblock:
nop
答案 1 :(得分:0)
您正在c循环中递增BX寄存器,然后忘记再次分配200h。然后它继续进行icrementing并变成209h以上,但你需要它再次从200h开始。
jne c
**mov [bx],200h** add this.
c1:
mov cl,[bx]