|
主题 : : 小白发布 检查点2.1答案*_* [待解决] |
回复[ 27次 ]
点击[ 956次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-03-15 22:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-14 20:28 |
开篇之前首先感谢王爽老师写的汇编语言以及汇编网提供的论坛...如果说王爽老师的书是神兵利器,那么论坛就是磨刀石.....
文中出现的小白指小白菜,既菜鸟....太土,,,改成小白
链接a: http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1003&qkSg=3&qID=17380&readSg=1
链接b: http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1003&qkSg=2&qID=21582&readSg=1
链接c: http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1003&qkSg=2&qID=32719&readSg=1
(1)
1 MOV AX,62627 AX=F4A3H //C语言模运算,最简单方法,计算器.不过最好会,没有电脑怎么办..
62627%16=3 3
3914%16=10 A
244%16=4 4
15 F
2 MOV AH,31H AX=31A3H //MOV是传送指令其实就是把AX高8位AH清空,再把31H放进去,大多数小白(我也是小白)都会犯个错误就是用前面的F4+31 把这个指令当成了ADD指令,我也犯错-|-这个错误可以参考链接a
3 MOV AL,23H AX=3123H //3同2一样,不过有些连这个都不懂...明显的没把这本书看明白...具体问这个问题的可以参考链接b 里面还有squaaa公布的答案和我的一样*_*
4 ADD AX,AX AX=6246H //ADD是加法指令
5 MOV BX,826CH BX=826CH
6 MOV CX,AX CX=6246H
AX=6246H
7 MOV AX,BX AX=826CH
BX=826CH
8 ADD AX,BX AX=04D8H
AX=826CH
BX=826CH
AX+BX=826CH+826CH=104D8H 超过16bit所能存储的最大值 去掉前面的1 即04D8H
9 MOV AL,BH AX=0482H
10 MOV AH,BL AX=6C82H
11 ADD AH,AH AX=D882H
12 ADD AL,6 AX=D888H
AL=82
AL+6=82+6=88
13 ADD AL,AL AX=D810H //不会算的可以参考链接c 741117给出了很好的解释 比我的解释好,我懒嘛*_*
AL=88
AL+AL=88+88=110 超过8bit所能存储的最大值 去掉前面的1 即10
14 MOV AX,CX AX=6246H //如果学到这步了还不明白这个是什么的话,我建议把你人道毁灭了算了#_#(这个是带墨镜呵呵...)
(2)答案:
mov ax,2
add ax,ax
add ax,ax
add ax,ax | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-03-15 23:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-14 20:28 |
|
|
|
|
|
[第2楼]
[ 回复时间:2009-03-16 10:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:14
信誉值:2
注册日期:2008-10-19 21:37 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-03-16 17:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2009-03-14 15:44 |
编程计算2的四次方 那个咋做了 就那几条命令 只有加 没有 乘法啊~~~~~···· | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-03-16 21:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-14 20:28 |
目前我们还没有学到所谓*的指令呀,,,,,只能用ADD来实现这样的一个结果,,,,,目前我们就学到MOV ADD这2条指令而已 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-03-27 19:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-03-25 18:37 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-04-01 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-03-08 00:10 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-04-20 12:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-04-19 12:53 |
很简单啊,我看了二遍书就会做了。。。呵呵。
只要心细就好了,到这个检测点,只要小学水平就会做了,除了第二题。。 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-04-21 15:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-04-18 22:26 |
|
|
|
|
|
[第9楼]
[ 回复时间:2009-05-14 10:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-06 23:32 |
|
|
|
|
|
[第10楼]
[ 回复时间:2009-05-16 05:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-16 04:02 |
|
|
|
|
|
[第11楼]
[ 回复时间:2009-05-17 07:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-11 17:21 |
第二题求2的4次方;
楼猪给的答案错的吧,好像是计算2+2+2+2=8了
而2的4次方=16!!!
楼猪,再想想吧. | | |
|
|
|
|
[第12楼]
[ 回复时间:2009-05-17 07:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-11 17:21 |
自己抛砖引玉下:
2的4次方,就是2*2*2*2=1*2*2*2*2;而乘2,可以看做移位1位,4次方刚好移位4次,恰好把AL数据移到AH了
MOV AL,1
MOV AH,AL
MOV AL,0
此时,AX刚好为2的4此方!!! | | |
|
|
|
|
[第13楼]
[ 回复时间:2009-05-17 14:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-11 17:21 |
自己调试了下,原来楼主的第二题好像也对哦
第一次加法:2+2
第二次:4+4
第三次:8+8
结果16,哈哈 | | |
|
|
|
|
[第14楼]
[ 回复时间:2010-07-09 20:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-09 19:46 |
|
|
|
|
|
[第15楼]
[ 回复时间:2010-07-09 20:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-09 19:46 |
|
|
|
|
|
[第16楼]
[ 回复时间:2010-07-09 20:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
自己抛砖引玉下:
2的4次方,就是2*2*2*2=1*2*2*2*2;而乘2,可以看做移位1位,4次方刚好移位4次,恰好把AL数据移到AH了
MOV AL,1
MOV AH,AL
MOV AL,0
此时,AX刚好为2的4此方!!!
------------------
回复:????????? | | |
|
|
|
|
[第17楼]
[ 回复时间:2010-07-12 14:36 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-06-01 10:03 |
回复:[第16楼]
------------------
乘方本来是应该考虑位移的,但我一直没想出最终的办法来。12楼的做法有几处错误。
1、MOV AL,1此时AL值是十进制的1而不是二进制的,虽然正好相等,但应该写成这样 MOV AL,1B。
2、AH、AL都是8位而不是4位!所以最终结果还是错的。
2的4次方,用加法算出来虽然结果对但只是巧合。不知道楼上的高手masmaster有没有什么更好的办法? | | |
|
|
|
|
[第18楼]
[ 回复时间:2010-07-12 14:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-06-01 10:03 |
少说了一句话,只有2进制下乘2才能用左移一位表示,AL值为十进制1,左移就是乘十了,所以要强调 MOV AL,1B。 | | |
|
|
|
|
[第19楼]
[ 回复时间:2010-07-12 16:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
【十进制数左移1位相当于X10,二进制左移1位相当于X2,十六进制数左移1位】
2的四次方是16
如果al的初值是1的话, 那么要实现2的四次方得多用几次add:
mov al,1
add al,al
add al,al
add al,al
add al,al
以后要学到移位指令就简单啦 | | |
|
|
|
|
[第20楼]
[ 回复时间:2010-07-14 15:42 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-14 15:30 |
|
|
|
|
|
[第21楼]
[ 回复时间:2010-07-17 16:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-09 15:55 |
mov cx,ax 老了。。眼花了。。写成 3123H.... | | |
|
|
|
|
[第22楼]
[ 回复时间:2010-07-17 17:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
这个你就错了。。你下面的是对的。但2楼也是对的。你看啊。
mov ax,2 ;AX=2
add ax,ax ;ax=ax+ax=4,此时AX=4了。
add ax,ax ;ax=ax+ax=4+4=8,因为上一步的AX已经为4了,这一步AX=8了。
add ax,ax ;ax=ax+ax=8+8=16,上一步的AX为8,所以这一步AX+AX=16.
你下面的做法很好。今天知道了题目的解题方法是不只一种的。以后要多想想其它方法。 | | |
|
|
|
|
[第23楼]
[ 回复时间:2010-07-17 17:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
不,不是2楼。是楼主。。。。看错了。是第2题。。。。 | | |
|
|
|
|
[第24楼]
[ 回复时间:2010-07-20 13:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
今天回想了一下。。发现16楼错了。,
MOV AL,1
MOV AH,AL
MOV AL,0
ah,al都是8位寄存器。。如果这么给的话。。相当于进了8位。。是2的8次方了。。 | | |
|
|
|
|
[第25楼]
[ 回复时间:2010-07-23 14:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-10 22:57 |
|
|
|
|
|
[第26楼]
[ 回复时间:2010-09-04 16:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-09-03 15:44 |
...看到高手用位移,我还是不明白,自己慢慢学。希望以后会明白。 | | |
|
|
|
|
[第27楼]
[ 回复时间:2010-09-06 10:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-15 18:49 |
|