鱼C论坛

 找回密码
 立即注册
查看: 3420|回复: 8

[汇编作业] 检测点9.3

[复制链接]
发表于 2014-6-18 09:47:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. assume cs:code

  2. code segment
  3. start:        mov ax, 2000H
  4.                 mov ds, ax
  5.                 mov bx, 0
  6.         s:        mov cl,[bx]
  7.                 mov ch, 0
  8.                 jcxz ok
  9.                 inc bx
  10.                 loop s
  11.         ok:        dec bx
  12.                 mov dx, bx
  13.                
  14.                 mov ax, 4c00H
  15.                 int 21H
  16. code ends

  17. end start
复制代码
这题和上次9.2一样,不过就是把jmp无条件跳转转换为loop循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-27 10:50:07 | 显示全部楼层
如果[BX]的值为01H,赋给CL后,CX=0001H,执行,到LOOP时,CX=CX-1,loop失效,继续往下执行岂不是最后得到DX偏移地址是错误的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-18 21:51:43 | 显示全部楼层
同意2楼。
  1. assume cs:code

  2. code segment
  3. start:        mov ax, 2000H
  4.                 mov ds, ax
  5.                 mov bx, 0
  6.         s:        mov cl,[bx]
  7.                 mov ch, 0
  8.                 inc cx
  9.                 inc bx
  10.                 loop s
  11.         ok:        dec bx
  12.                 mov dx, bx
  13.                
  14.                 mov ax, 4c00H
  15.                 int 21H
  16. code ends

  17. end start
复制代码

这样比较正确。当(CX)=0时,inc cx;和loop s;会导致(CX)=0退出循环,得到偏移地址保存在DX中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 1

使用道具 举报

发表于 2017-12-10 16:48:52 From FishC Mobile | 显示全部楼层
2,3楼很棒,感谢感谢终于懂了,我一直觉得那个空是多余的,现在懂了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-12-15 22:36:26 | 显示全部楼层
nulptr 发表于 2015-5-18 21:51
同意2楼。

这样比较正确。当(CX)=0时,inc cx;和loop s;会导致(CX)=0退出循环,得到偏移地址保存在DX中 ...

前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 22:48:46 | 显示全部楼层
719871782 发表于 2017-12-15 22:36
前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊

我错了请见谅啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 11:18:08 | 显示全部楼层
719871782 发表于 2017-12-15 22:36
前辈,你这么改,程序只会一直循环在S那个循环里,dx永远也得不到偏移量啊

LOOP指令会先执行cx-1项,所以我觉得不存在你说的无法跳出循环吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 3 反对 0

使用道具 举报

发表于 2018-5-10 09:49:29 | 显示全部楼层
酿泉为酒 发表于 2018-1-25 11:18
LOOP指令会先执行cx-1项,所以我觉得不存在你说的无法跳出循环吧

666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-10 09:54:54 | 显示全部楼层

3楼正解,3楼和7楼分析很棒,执行loop指令时,cx还会再减去1,所以不光是不存在跳不出循环的问题,而且这个inc cx用的精妙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 23:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表