16位CPU一次将从两个内存单元中读取数据送入寄存器吗?
debug吧
全部回复
仅看楼主
level 5
王爽的汇编语言教程中有这样一个练习:
2009年04月16日 14点04分 1
level 5
不好意思,粘的图太小了,重发
2009年04月16日 14点04分 2
level 5
题是这样的:
2009年04月16日 14点04分 3
level 5
我已将原图放大了,怎么一发上去就变得还是这么小啊,真是的
2009年04月16日 14点04分 4
level 5
只好用文字说了:“mov ax,[0]”这个指令执行后,为什么读入ax中的是10000H和10001H两个内存单元中的数据,而不是只有10000H中的数据被读入。是因为指令中的〔0〕不是“内存单元”,而是“字单元”吗?还是因为8086CPU是16位的,一次要读入16位数据,所以就一次读两个内存单元? 请高手指教。
2009年04月16日 15点04分 5
level 7
1
2009年04月16日 16点04分 6
level 7
mov al,[0] 传送1个字节--[10000]
mov ax,[0] 传送2个字节 [10000][10001]
mov eax,[0] 传送4个字节 [10000][10001][10002][10003]
2009年04月16日 16点04分 7
level 7
mov al,[0]
相当于
mov al,byte ptr [0]
mov ax,[0]
相当于
mov ax,word ptr [0]
mov eax,[0]
相当于
mov eax,dword ptr [0]
2009年04月16日 16点04分 8
level 5
明白了,非常感谢! 另外,如果是32位CPU,那么类似的指令是不是一次就将读取32位数据呢?
 您发的图为什么可以显示那么大呢?是因为您是图片小编,可以直接发送图片吗?(我是先将图片上传到空间相册,再粘贴图片链接才发上来的) 还是我没有进行相关设置呢?
2009年04月17日 02点04分 9
level 7
32位的CPU
mov al,[0] 还是读取1个字节
这是根据寄存器大小来传送数据的
mov byte ptr [0],al
mov word ptr [0],ax
mov dword ptr [0],eax
楼主去下个debug32来试验一下啦(www.aogosoft.com上面有debug32.exe下载)
------------------------

图片还是你的空间的啦
你发的可能是缩略图的地址
俺直接点击你的相册,再点击那图
然后从地址栏里面得到原始图片的地址
2009年04月17日 02点04分 10
level 7
点击查看原图
2009年04月17日 02点04分 11
level 0
dy2003310 一来就带来好东西了,哈哈哈!
(我指的是那个链接)blueglass2
2009年04月17日 12点04分 12
level 7
呵呵
那个链接俺之前在学习资源那里做了链接啦
2009年04月18日 08点04分 13
level 5
汗颜!我把这个问题估计过高了,以为自己权限不够,没敢深究,无地自容啊,呵呵
2009年04月19日 10点04分 14
level 5
另外,您说“32位的CPU……还是读取一个字节,这是根据寄存器大小来传送数据的”,——寄存器不是CPU的组成部分吗?CPU是16位还是32位,跟寄存器大小是两码事吗?
2009年04月19日 10点04分 15
level 6
al:8位
ax:16位
eax:32位
在32位的CPU中
mov al,[10000]依然是读取ds:10000处的一个字节到8位寄存器al中
---
CPU里面当然含有寄存器
多少位是说能寻址多少多少
寄存器大小
一般是指一次能保存的字节数
如al 1字节
ax 2字节
eax 4字节
2009年04月21日 10点04分 16
1