说来也搞笑,我半年前就开始看王爽的《汇编语言》这本书了,当时只看到第三章,后来看不下去,去学习C语言了,现在我看完了谭浩强那本绿色的入门书以后,又回过头来看《汇编语言》了。
半年前我就做过习题1.1,当时记得是都没做错,今天又重新开始做,发现怎么搞的突然觉得很难!怪了?!我以前可是很认真地做过一遍的啊!可能是我之前学了没总结吧,今天我要借此机会总结一下,巩固一下所学的知识,这样印像更深一点,免得以后又忘了。
如有错误也希望大家不吝赐教!
我解答得也很详细,希望也能帮帮一些和我一样的菜鸟。
顺便说一下,汇编网的学习氛围非常好!但是论坛有些设置做得不够完善,比如论坛字体太小,结构略显混乱,代码不支持不同代码不同色显示(这样看起来很吃力)等等,我个人认为汇编网这点应该向CSDN学习一下。
注:以下尽量用2^x次方的形式表示答案,这样答案会更容易理解,毕竟计算机是只认0和1的。
自己列一个参照表,省得大家去算:
2^3=8 2^4=16 2^5=32 2^6=64 2^7=128 2^8=256 2^9=512 2^10=1024
个人感觉比较难的题会写一个解题思路切入点,方便和我一样的菜鸟。
1. 一个CPU的寻址能力为8KB,那么他的地址总线的宽度为(13)。
(大家莫笑,我第一题就想了很久^_^)
解题思路切入点:这章内容讲的都是和”位”,也就是所谓的和bit有关的东西,而”地址总线”恰好又是和 bit有关的,所以只要进行相关的”位”转换运算就ok了。
解答:8KB = 8*1024Bite = 2^3*2^10Byte = 2^13Byte,好了,现在意思很明白了,一个CPU、要访问2^13个存储单元(1个存储单元可以存储的内容为1Byte)的内容,那么它的总线宽度就一定为13!因为要访问2^13个存储单元,地址总线就必须要有2^13种表示方法,所以就有13根总线!
这题解答大家如果还有不明白的话可以看我对第5题的解答,我当时第一题不会做就是从第5题启发的。
2. 1KB的存储器有(2^10)个存储单元。存储单元从编号(0)到(1023)。
解题思路切入点:明白”1个存储单元可以存储的内容为1Byte”这个知识点,这个题就好做了。
提示:1KB=2^10Byte
3. 1KB的存储器可以存储(2^13)个bit,(2^10)个Byte。
解题思路切入点:这题就是考察数据在存储器中存放的形式(二进制)。
解答:1KB=2^10Byte=2^13bit
4 .1GB=2^30 Byte 1MB=2^20 Byte 1KB=2^10 Byte
解答:这题太简单了!略!
5. 8080、8088、8086、80286、80386的地址总线宽度分别为16根、20根、24根、32根,则他们的寻址能力分别为(2^6KB)、(1MB)、(2^4MB)、(2^2GB)。
解题思路切入点:看清楚题目的要求,是“地址总线”,不要和“数据总线”混起来了。
注意:所谓的寻址能力意思就是指CPU可以访问存储单元大小的能力!这个地方一定要理解清楚!这个问题书上没有讲得很清楚,所以导致论坛上很多初学者对这个问题产生疑惑!(我也是初学者,嘿嘿)
解答:我以8080CPU为例向大家解答,16根地址总线,那么就有2^16种不同的表达方式,那么就可以访问2^16个存储单元的内容,每个存储单元大小为1Byte,所以答案就是2^16Byte,即2^16Byte=2^6KB,得解。
6. 8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则他们可一次传送的数据为:(1)B、(1)B、(2)B、(2)B、(4)B。
解题思路切入点:好了,这题是讲“数据总线”,和上面那题不一样了。
解答:其实这题很简单,大家不要想得太复杂了,我以8086 CPU为例向大家讲解,8根不就是8bit吗?(这个问题不懂的话请好好看看书上有关的图),8bit不就是1B吗!得解!
7. 从内存中读取1024字节的数据,8086至少要读2^9次,80386至少要读2^8次。
解题思路切入点:只要明白这题也是讲“数据总线” 的内容就好办了。
解答:以8086 CPU为例,1024字节=1024Byte,8086一次传送的数据位2B(由上题知),然后剩下的就好办了吧,1024/2=512=2^9
8. 在存储器中数据和程序以(二进制)形式存放。
解答:略。 |