张国祥 发表于 2011-6-11 17:51:03

编程计算3的4次方

本帖最后由 张国祥 于 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指令累加……貌似也不靠谱……

lsgo 发表于 2011-6-11 18:07:39

本帖最后由 lsgo 于 2011-6-11 18:26 编辑

支持写 27 个ADD 指令

看你会打错多少个 ADD 指令   

还有第一条直接 MOVAX,3   后面应该打 26 条ADD指令{:5_111:}

张国祥 发表于 2011-6-11 18:22:00

lsgo 发表于 2011-6-11 18:07 static/image/common/back.gif
支持写 27 个ADD 指令

看你会打错多少个 ADD 指令   

那……没有别的方法了吗?

lsgo 发表于 2011-6-11 18:29:25

张国祥 发表于 2011-6-11 18:22 static/image/common/back.gif
那……没有别的方法了吗?

没法 跟据题目的要求用学过的指令只能这样了后面到是有个循环的   等你学到了再来写这个就简单了

张国祥 发表于 2011-6-11 18:35:50

lsgo 发表于 2011-6-11 18:29 static/image/common/back.gif
没法 跟据题目的要求用学过的指令只能这样了后面到是有个循环的   等你学到了再来写这个就简单了

嗯,谢谢指教!{:3_52:}

再生缘 发表于 2011-6-11 18:41:25

张国祥 发表于 2011-6-11 18:35 static/image/common/back.gif
嗯,谢谢指教!

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
不知道这样可以吗

wshkzhh 发表于 2011-6-11 20:56:02

再生缘 发表于 2011-6-11 18:41 static/image/common/back.gif
mov ax,3
add ax,ax
add ax,ax


你算过没有》?

再生缘 发表于 2011-6-11 21:14:20

本帖最后由 再生缘 于 2011-6-11 21:15 编辑

wshkzhh 发表于 2011-6-11 20:56 http://bbs.fishc.com/static/image/common/back.gif
你算过没有》?

恩 估计不行
mov ax,3
add ax,ax
add ax,ax
这里都是12了 我以为是9呢
看来这个还要继续研究呀

张国祥 发表于 2011-6-11 21:43:21

再生缘 发表于 2011-6-11 18:41 static/image/common/back.gif
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

wshkzhh 发表于 2011-6-11 22:23:23

:lol:lol:lol看来只能add下去了:L

天下孤鹰 发表于 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

号号不爽 发表于 2011-6-12 12:03:45

:D:D 每一次的ADD AX,AX都是*2 的呀

小甲鱼 发表于 2011-6-12 12:21:53

事实上这道题要用循环或者乘法指令。

6839940 发表于 2011-6-12 21:14:23

:lol:lol:lol:lol哈哈还没学到呢

开机中。。。 发表于 2011-6-13 15:30:35

用ADD只能这样一遍一遍的写,loop就很简单了,不过要到第五章才有学 要么用乘法 貌似乘法的指令还没学过

张国祥 发表于 2011-6-13 18:28:30

小甲鱼 发表于 2011-6-12 12:21 static/image/common/back.gif
事实上这道题要用循环或者乘法指令。

小甲鱼不能坑人哦!{:3_58:},题目都说了只能用学过的指令0.0

小甲鱼 发表于 2011-6-13 20:19:33

{:2_35:}

张国祥 发表于 2011-6-13 20:57:07

小甲鱼 发表于 2011-6-13 20:19 static/image/common/back.gif


{:3_50:}明显感觉被坑了……

土豆~ 发表于 2012-6-27 22:14:43

天下孤鹰 发表于 2011-6-11 22:50 static/image/common/back.gif
计算如下。。 应该是正确的吧。。
长了点。。 4条的不会写。。



{:5_106:} 恩,哥们写的非常好~

飞渡专业VPN 发表于 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


不知道有没有帮助
页: [1] 2
查看完整版本: 编程计算3的4次方