鱼C论坛

 找回密码
 立即注册
查看: 8307|回复: 24

编程计算3的4次方

[复制链接]
发表于 2011-6-11 17:51:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 张国祥 于 2011-6-20 14:24 编辑

小甲鱼在监测点2.1留下了题目,用汇编计算3^4,要怎么计算?
有人告诉我用:
mov cx,27                               '疑问:27H是十进制的:39,也就是说不能循环27次二十39次
s:add ax,3                                '疑问:这句话怎么在debug上写出来?
loop s                                       '这句话同上


另外有没有别的办法呢?,我的办法是:
mov ax,3
add ax,6
add ax,12
add ax,36

但这样就等于是自己在算……
在群里问过:他们的回答是用27个add指令累加……貌似也不靠谱……

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 18:07:39 | 显示全部楼层
本帖最后由 lsgo 于 2011-6-11 18:26 编辑

支持写 27 个ADD 指令

看你会打错多少个 ADD 指令   

还有第一条直接 MOV  AX,3   后面应该打 26 条ADD指令
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-11 18:22:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 18:29:25 | 显示全部楼层
张国祥 发表于 2011-6-11 18:22
那……没有别的方法了吗?

没法 跟据题目的要求用学过的指令  只能这样了  后面到是有个循环的     等你学到了再来写这个就简单了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-11 18:35:50 | 显示全部楼层
lsgo 发表于 2011-6-11 18:29
没法 跟据题目的要求用学过的指令  只能这样了  后面到是有个循环的     等你学到了再来写这个就简单了

嗯,谢谢指教!{:3_52:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 18:41:25 | 显示全部楼层
张国祥 发表于 2011-6-11 18:35
嗯,谢谢指教!

mov ax,3
add ax,ax
add ax,ax
mov bx,ax
add bx,bx
add bx,bx
mov ax,bx
add ax,ax
add ax,ax
不知道这样可以吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 20:56:02 | 显示全部楼层
再生缘 发表于 2011-6-11 18:41
mov ax,3
add ax,ax
add ax,ax

你算过没有》?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 21:14:20 | 显示全部楼层
本帖最后由 再生缘 于 2011-6-11 21:15 编辑
wshkzhh 发表于 2011-6-11 20:56
你算过没有》?


恩 估计不行
mov ax,3
add ax,ax
add ax,ax
  这里都是12了 我以为是9呢
看来这个还要继续研究呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-11 21:43:21 | 显示全部楼层
再生缘 发表于 2011-6-11 18:41
mov ax,3
add ax,ax
add ax,ax

mov ax,3                                             '      ax= 3
add ax,ax                                        '       ax=6      
add ax,ax                                        '       ax= 12
mov bx,ax                                       '      ax=12 bx=12
add bx,bx                                        '      ax=12 bx=24
add bx,bx                                         '     ax=12 bx=48
mov ax,bx                                       '      ax=48 bx=48
add ax,ax                                       '        ax=96
add ax,ax                                        '       ax=192
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 22:23:23 | 显示全部楼层
:lol:lol:lol看来只能add下去了:L
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-11 22:50:54 | 显示全部楼层
本帖最后由 天下孤鹰 于 2011-6-11 22:53 编辑

:lol   计算如下。。 应该是正确的吧。。
长了点。。 4条的不会写。。:lol

mov ax,3        ;ax=3
mov bx,ax       ;bx=3
add ax,bx       ;ax=6
add ax,bx       ;ax=9
mov bx,ax       ;bx=9
add ax,bx       ;ax=12H
add ax,bx       ;ax=1BH
mov bx,ax       ;bx=1BH
add ax,bx       ;ax=36H
add ax,bx       ;ax=51H
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-12 12:03:45 | 显示全部楼层
:D:D 每一次的ADD AX,AX  都是*2 的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-12 12:21:53 From FishC Mobile | 显示全部楼层
事实上这道题要用循环或者乘法指令。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-12 21:14:23 | 显示全部楼层
:lol:lol:lol:lol哈哈还没学到呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 15:30:35 | 显示全部楼层
用ADD只能这样一遍一遍的写,loop就很简单了,不过要到第五章才有学 要么用乘法 貌似乘法的指令还没学过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-13 18:28:30 | 显示全部楼层
小甲鱼 发表于 2011-6-12 12:21
事实上这道题要用循环或者乘法指令。

小甲鱼不能坑人哦!{:3_58:},题目都说了只能用学过的指令0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-13 20:19:33 | 显示全部楼层
{:2_35:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-13 20:57:07 | 显示全部楼层

{:3_50:}明显感觉被坑了……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-27 22:14:43 | 显示全部楼层
天下孤鹰 发表于 2011-6-11 22:50
计算如下。。 应该是正确的吧。。
长了点。。 4条的不会写。。

恩,哥们写的非常好~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-27 23:57:08 | 显示全部楼层
3的4次方可以看成3*3*3*3  那么3*3又可以看成3+3+3那么我们可以用loop语句来实现
assume cs:codesg
codesg segment
start: mov ax,3   ‘给AX初值3 用来存放最后的结果
       mov bx,3       '给BX初值3 用BX当一个中间数
       mov cx,3        '3的4次方要循环3次
       s: push cx       '用到两次循环,把第一个CX压入栈中,不让和第二次循环的CX弄混了
          mov cx,2     ‘设置第二次循环的次数,3个3相加要循环两次,因为AX的初值为3
          s0: add ax,bx  ’把AX和BX的值相加存入AX中
              loop s0       ’检测CX的值是否为0,不为0跳到S0处,直到CX为0
              mov bx,ax  ‘下一次循环是3个9相加,所以把AX的值传给BX
              pop cx        ’取出栈中CX的值,
              loop s       ‘判断第一层CX的值,如果不为0跳到S处执行
       mov ax,4c00H
       int 21H
codesg ends
end start


不知道有没有帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-13 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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