关于3的N次方的解释
本帖最后由 weixianlang 于 2011-8-5 21:08 编辑很多在监测点2点几就开始问3的4次方了,我很纳闷,以前我在学的时候好像没碰到过,所以我也直接给了大家回答,但是我发现多数人已经习惯了一直N次方的习惯性代码,就是
add ax,ax
add ax,ax
......
以此类推
书上的例子是有特殊性的,因为底数是2,2的N次方就是底数每次乘以2以后的结果作为下一次的底数,下一次的底数再乘以2,又一次类推,
但是,我就不说别的数了,就说1,1的N次方得多少?
add ax,ax
add ax,ax??????
...........
感觉不对了吧?这就是王爽据这个例子的奥秘,如果刚学几个加法,就能求N次幂,那么也太夸张了(至少我现在还没见到谁只有传送和加法指令搞定的,当然,是可以的,小点的数字,来个大点的,你怎么办?)所以王爽为了给大家一个合理的例子,就选择了这个特殊的数字,2,也方便大家实践,所以请大家不要被这个2误导了,后面的知识好多着,也没必要为了这个题目苦恼,打好基础,后面的难题就会迎刃而解!
{:1_1:}被你一说我才想到1这个.但是想了下我只能想到用
cmp ax,1
再看标志寄存器如果是ZF=1
就跳到专门的执行.
思路完毕.请求漏洞 2是个特殊数字,做底数容易误导初学者,认为所有底数的n次幂都是只要add就ok 是啊是啊……挺误导人的……{:1_1:} 举一反三,有启发 assume cs:code
data segment
dw 128 dup (0);$
data ends
code segment
start:
mov ax,data;此程序求AX的DX次方,结果放在数据段的前128个字节中,以16进制的形式存放,
mov ds,ax;如果你的计算结果大于128个字节数,可以自行更改$处
mov bx,0
mov di,16*8;$
mov si,1
mov ax,3;参数 x^y这里的AX等于X
cmp ax,0
je ookk
mov bp,ax
mov dx,4;参数 X^Y这里的DX=Y
mov cx,dx
sub cx,1
jb ookk
jcxz okk;上有政策
mov ,ax
s1:push cx
mov cx,bp
s:push cx
mov cx,si
add cx,0
s2:
mov ax,
adc ,ax
pushf
cmp cx,1
jz j
jmp nj
j:popf
jb j1
pushf
jmp nj
j1:inc si
add bx,2
add word ptr ,1
jmp ok
nj:add bx,2
popf
ok:loop s2
mov bx,0
pop cx
loop s
push si
s5:
mov ax,
mov ,ax
mov word ptr ,0
add bx,2
dec si
cmp si,0
ja s5
mov bx,0
pop si
pop cx
loop s1
jmp short ookk
okk:mov ,ax;下有对策
ookk:mov ax,4c00h
int 21h
code ends
end start 冰寒幽灵 发表于 2011-8-7 19:01 static/image/common/back.gif
assume cs:code
data segment
dw 128 dup (0);$
这位施主...??? 哥们哪是注释吧,不知到什么意思 冰寒幽灵 发表于 2011-8-7 19:01 static/image/common/back.gif
assume cs:code
data segment
dw 128 dup (0);$
此乃 成吉思汗
页:
[1]