张永明 发表于 2024-4-1 13:49:28

C18 8086\097 检测点中的疑问?

老师你好:
习题要求从1到100的和


      xorax,ax
      mov cx,100   ;此时cx中的数值为100?
@f:
   add ax,cx   ;这时cx中的数值是不是还是100?
   loop @f

站长 发表于 2024-4-1 19:22:28

mov cx, 100 这句,cx是目的操作数,其值会被修改为100

add ax, cx 这句,cx是源操作数。源操作数不会被改变,只是使用。

张永明 发表于 2024-4-2 09:00:10

站长 发表于 2024-4-1 19:22
mov cx, 100 这句,cx是目的操作数,其值会被修改为100

add ax, cx 这句,cx是源操作数。源操作数不会被改 ...

老师你好:感觉挺别扭的,是不是应该把赋值100的寄存器cx保存一下,
再设置cx为1?因为寄存器里面已经存储了100?

站长 发表于 2024-4-2 09:49:00

张永明 发表于 2024-4-2 09:00
老师你好:感觉挺别扭的,是不是应该把赋值100的寄存器cx保存一下,
再设置cx为1?因为寄存器里面已经存 ...

什么意思?为啥要设置CX为1?为啥要保存CX

Stephane 发表于 2024-4-2 11:54:30

张永明 发表于 2024-4-2 09:00
老师你好:感觉挺别扭的,是不是应该把赋值100的寄存器cx保存一下,
再设置cx为1?因为寄存器里面已经存 ...

cx设置为100,每次循环时 add ax, cx这句代码中的cx的值都减去1,相当于是从100,99,…,1这样的顺序实现1到100的加法

站长 发表于 2024-4-2 22:52:24

Stephane 发表于 2024-4-2 11:54
cx设置为100,每次循环时 add ax, cx这句代码中的cx的值都减去1,相当于是从100,99,…,1这样的顺序实现 ...

是的。我当初没看懂他的意思。

张永明 发表于 2024-4-3 07:35:16

我明白了,1到100的倒序加法。从99+98 +97……2+1

张永明 发表于 2024-4-3 08:59:05

昨天下班后我还寻思是不是应该把CX,100 PUSH CX
xor  ax,ax
      mov cx,100 
      push cx 
@f:
    mov cx,1
     add ax,cx   
     pop pop
     loop @f
大脑思维太差了多此一举
页: [1]
查看完整版本: C18 8086\097 检测点中的疑问?