鱼C论坛

 找回密码
 立即注册
查看: 3801|回复: 17

关于loop循环 结果不正确!不知道怎么回事!希望大神指导!!

[复制链接]
发表于 2011-10-19 19:20:24 | 显示全部楼层 |阅读模式

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

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

x


从1+到100 =5050对不对! 但我调试出来等于 8080  不知道哪里错了!希望 指导下我!!

assume cs:code
code segment
    mov ax, 1            
mov dx, 0
mov cx, 100h               ;循环次数100次
s:  add dx, ax                  ;从1加起
    inc ax                           ;ax=ax+1
loop s                               ;循环

code ends
end

  程序调试后 结果
FUT4{EYZ1S}`_NH]V}5D6CJ.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 19:31:20 | 显示全部楼层
本帖最后由 风扫地 于 2011-10-19 19:31 编辑
mov cx,100H


100H  这是16进制的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-19 19:46:15 | 显示全部楼层

我不加 H 的话  cx=64    那怎么循环100次?

assume cs:code
code segment
    mov ax, 1
mov dx, 0
mov cx, 100
s:  add dx, ax
    inc ax
loop s

mov ax,4c00h
int 21h
code ends
end


看图:
O{Q721]F%[@7JR57U3J5K_1.jpg


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 20:10:21 | 显示全部楼层
简单的数学你弄不懂?
100次,十进制就是100,16进制就是64H。
你要么用mov cx,64h
要么mov cx,100
没那么纠结吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 20:16:35 | 显示全部楼层
楼主是对进制的知识不了解吗?建议看看小甲鱼老师关于进制的视频。
http://www.fishc.com/a/shipin/qita/623.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 20:56:48 | 显示全部楼层
不懂  :lol:lol:lol:lol:lol 还没开始学 汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-19 23:03:40 | 显示全部楼层
楼主你的程序设置循环的时候mov cx,100H这的地方错了哦,应该是mov cx,100或mov cx,64H(因为十进制100=十六进制的64H)如果你设成了100H的话结果就会成8080了哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-20 10:44:32 | 显示全部楼层
风扫地 发表于 2011-10-19 20:16
楼主是对进制的知识不了解吗?建议看看小甲鱼老师关于进制的视频。
http://www.fishc.com/a/shipin/qita/6 ...

能问下吗? 通用寄存器不都是以十六进制表示的? 那cx应该为100 才能表示循环100次啊,为什么要以十进制的100来表示啊!  我想不通啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 11:01:36 | 显示全部楼层
100531319 发表于 2011-10-20 10:44
能问下吗? 通用寄存器不都是以十六进制表示的? 那cx应该为100 才能表示循环100次啊,为什么要以十进制的 ...

你说的“通用寄存器不都是以十六进制表示的?”,这个只是你看到的“debug"程序选择的进制显示方式,在计算机内部,永远只能表示0和1。但你在编程的时候要让编译器可以正确理解你的本意。所以你在写代码时候得有说明,如果用16进制表示的话数值后面要加“H”,十进制的话就不用加。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-20 19:18:12 | 显示全部楼层
tsembrace 发表于 2011-10-20 11:01
你说的“通用寄存器不都是以十六进制表示的?”,这个只是你看到的“debug"程序选择的进制显示方式,在计 ...

那么我可不可以理解为 凡是在程序中循环的次数都以十进制表示的, 除非有说明要十六进制表示,才要在后面加H呢!是不是这样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 19:58:00 | 显示全部楼层
我也不知道该怎么说你才能明白了。。。我啥时候说循环次数必须以十进制表示了。。你的本意需要循环几次你就表示几次啊,随便你用哪种进制表示法,但编译器不知道你选用的是哪种进制,所以你得注明。你这里要100(十进制)次,那你就mov cx,100(这里是用了十进制),你也可以用16进制mov cx,64H(用‘H“注明表示16进制,这样编译器才晓得你本意的准确数值。)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-20 20:13:31 | 显示全部楼层
tsembrace 发表于 2011-10-20 19:58
我也不知道该怎么说你才能明白了。。。我啥时候说循环次数必须以十进制表示了。。你的本意需要循环几次你就 ...

受教了 ,有种茅舍顿开的感觉! 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-20 21:05:27 | 显示全部楼层
就是,可以用10进制,不用加H,也可以用16进制,后面加H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-21 15:13:09 | 显示全部楼层
yang7516 发表于 2011-10-20 21:05
就是,可以用10进制,不用加H,也可以用16进制,后面加H

    我已经明白了! 3Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 18:13:50 | 显示全部楼层

回帖奖励 +1 鱼币

:loveliness:看了下 LZ果然还是应该去补补进制
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-21 18:51:33 | 显示全部楼层
基础得再牢固点。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-22 14:23:00 | 显示全部楼层
100H是16进制数,转换成10进制是256,也就是说你这个程序循环了256次。
不加H的话,10进制的100转换成16进制就是64,在debug中默认都是16进制。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-22 19:56:52 | 显示全部楼层
恩 谢谢 大家的 指点!我会努力的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 22:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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