atm456320 发表于 2012-12-25 14:11:40

判断ax中的数,如果是0,给bx赋1,否则给bx赋2

本帖最后由 atm456320 于 2012-12-26 19:09 编辑

只能用mov add inc loop push pop这些指令 其它指令不能用。

huise865 发表于 2012-12-25 19:04:40

把ax的值给cx,如果不为0则循环,否则...你知道怎么办吧~~

张国祥 发表于 2012-12-26 03:04:45

想了一晚上,,无解啊……这是哪里的题目还是?有什么提示嘛?

atm456320 发表于 2012-12-26 19:05:31

张国祥 发表于 2012-12-26 03:04 static/image/common/back.gif
想了一晚上,,无解啊……这是哪里的题目还是?有什么提示嘛?

已经解决了~~答案在下面

atm456320 发表于 2012-12-26 19:08:08

本帖最后由 atm456320 于 2012-12-26 19:12 编辑

;程序1:
assume cs:code
code segment
start:
      mov ax,23
      inc ax
      mov cx,ax
      mov bx,1
      loop s
      
      mov ax,4c00h
      int 21h
      
s:      mov bx,2
      
      mov ax,4c00h
      int 21h
      
code ends
end start


;程序2:
assume cs:code
code segment
start:
      mov ax,0
      inc ax
      mov cx,ax
      loop s
      mov bx,1
      loop s1
      
s:      mov bx,2
      
s1:      mov ax,4c00h
      int 21h
      
code ends
end start
程序1用到了两个程序返回点程序2就相当于程序1,是学长点拨的~~
先让CX加1,如果ax为0的话,就可以让loop判断一次 不会陷入cx-1之后的一个类似溢出的情况,然后用loop跳转。

atm456320 发表于 2012-12-26 19:14:25

huise865 发表于 2012-12-25 19:04 static/image/common/back.gif
把ax的值给cx,如果不为0则循环,否则...你知道怎么办吧~~

这个开始的时候想到了,但是关键就是判断cx的情况。。如果CX一开始为0,loop一次之后,cx变成了FFFF的情况,唯有让cx先加一次,然后loop让cx减一次1,就可以实现跳转了。

张国祥 发表于 2012-12-26 20:05:00

atm456320 发表于 2012-12-26 19:14 static/image/common/back.gif
这个开始的时候想到了,但是关键就是判断cx的情况。。如果CX一开始为0,loop一次之后,cx变成了FFFF的情况 ...

谢谢指导,在凌晨大脑短路了- -
页: [1]
查看完整版本: 判断ax中的数,如果是0,给bx赋1,否则给bx赋2