|
主题 : : 菜鸟求教:在第三章有个读取10000H单元的内容,卡住了 [已解决] |
回复[ 9次 ]
点击[ 366次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-08-05 18:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2011-08-05 17:58 |
书上写的是用以下的程序段来读取10000H的内容
mov bx,1000H 将1000H传递到寄存器bx
mov ds,bx 将BX内容传递如ds,ds现在等于1000H
mov al,[0] 我不明白这句.
个人感觉 AX是AH+AL 为什么将这个[0]传递到al呢?
书上说明是上面的三条指令将10000H(1000:0)中的数据读到al中.
望高手老师解答 | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-08-05 18:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
是呀,[]带下标的是存储单元,下标内是地址,在没有段超越的情况下默认的数据段寄存器是ds。Mov al,[0]表示把地址为ds:[0]的内容送给al,具体传送的是字还是字节由al指出,段超越指段跨越前缀,如es:[di]等 | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-08-05 21:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:12
信誉值:1
注册日期:2011-06-04 00:01 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-08-05 21:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
是呀,我没有弄明白,你是对这个地址不明白还是对为什么要把数据放到al不明白呢 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-08-06 18:29 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2011-08-05 17:58 |
我是对为什么要把数据放到al不太清楚.al是属于AX的低位寄存器不是吗.为什么要把数据放到al呢 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-08-06 18:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2011-08-05 17:58 |
我对这个地址也不太明白 本来以为自己明白了,但是看了2楼的解答 又糊涂啦 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-08-06 19:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
因为cpu不支持同时对两个内存单元进行操作,如add [0],[si]是错误的,所以得用al来中转一下。当然也不是说非得用al。ah,bl,bh等都可以,而且也可以用一些通用16位寄存器,如mov ax,[0] xor ah.ah就可以了
至于地址,大家只要记住8086的地址是20位的,就是说可以寻址从00000H到0Fffffh这么多,80386的地址是32位的,当然这些说的是物理地址 | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-08-06 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2011-08-05 17:58 |
|
|
|
|
|
[第8楼]
[ 回复时间:2011-08-06 23:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
这是我应该做的,等你把所有的检测题都做完了你就明白我为什么还要留在这里给大家解答了了 | | |
|
|
|
|
[第9楼]
[ 回复时间:2011-08-07 21:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:7
注册日期:2011-08-05 17:58 |
此贴由 贴主 于 [ 2011-08-07 21:30 ] 结贴。 结贴原因:问题已解决 | | |