鱼C论坛

 找回密码
 立即注册
查看: 3603|回复: 7

[汇编作业] 检测点 9.3

[复制链接]
发表于 2020-4-8 13:36:41 | 显示全部楼层 |阅读模式

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

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

x
  1. assume cs:code

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

-d 2000:0
2000:0000  D8  00  20  8E  C0  00 00  00-00 00  00  00 00  00  00 00
最后(dx)=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-9 11:43:17 | 显示全部楼层
dx = 0 ,2000:0000 = D8
但实际上应该是 dx = 1
ok标志后有个dec bx,说明inc bx是肯定要执行的,和dec bx抵消,所以不能直接跳转,这样inc bx就执行不到了
应该是inc cx,如果cx = 0,先cx++,再和loop s中的cx--抵消,cx = 0,退出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-5-29 21:30:24 | 显示全部楼层
mrthreepa 发表于 2020-5-9 11:43
dx = 0 ,2000:0000 = D8
但实际上应该是 dx = 1
ok标志后有个dec bx,说明inc bx是肯定要执行的,和dec ...

inc cx或者add cx,1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-6-17 14:18:52 | 显示全部楼层
你这样有BUG,DX值永远索引的是当前值得前面那个。应该把jcxz ok 移到 inc bx 下面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-30 21:58:30 | 显示全部楼层
本帖最后由 1605538404 于 2020-8-30 22:16 编辑
mrthreepa 发表于 2020-5-9 11:43
dx = 0 ,2000:0000 = D8
但实际上应该是 dx = 1
ok标志后有个dec bx,说明inc bx是肯定要执行的,和dec ...


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

使用道具 举报

发表于 2020-8-30 22:06:16 | 显示全部楼层
yuxinajie 发表于 2020-6-17 14:18
你这样有BUG,DX值永远索引的是当前值得前面那个。应该把jcxz ok 移到 inc bx 下面

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

使用道具 举报

发表于 2020-9-15 21:24:25 | 显示全部楼层
mrthreepa 发表于 2020-5-9 11:43
dx = 0 ,2000:0000 = D8
但实际上应该是 dx = 1
ok标志后有个dec bx,说明inc bx是肯定要执行的,和dec ...

那这个OK标号,在现有段中就是没有意义的了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-23 14:59:20 | 显示全部楼层
如果ds:[bx]处的值为1,那么jcxz不会运行,然后往下loop指令会先将cx-1得到cx=0;那么就会跳出循环继续像下走,走到ok标识处,这样得到的bx是错误的。如果cl处为0的话,应该将其+1再由loop指令将cx的值去减一;然后就会得到正确的bx了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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