设(DS)=1000H,(10100H)=20H,(10101H)=10H,写出语句执行后的AX内容mov AX,0100H和MOV AX,[0100H]
这道题的答案我没看懂,答案是这样说的:(AL)=(DS*16+0100H)=(10100H)=20H;(AH)=(DS*16+0100H+0001H)=(10101H)=...
这道题的答案我没看懂,答案是这样说的:(AL)=(DS*16+0100H)=(10100H)=20H; (AH)= (DS*16+0100H+0001H)=(10101H)=10H;(AX)=1020H
为什么要这样求AX呢??高手给小弟讲讲吧!!谢谢 了。。 展开
为什么要这样求AX呢??高手给小弟讲讲吧!!谢谢 了。。 展开
3个回答
展开全部
这题很简单啊。
mov ax,0100h指的是把立即数0100h传给寄存器ax,此时ax=0100h。接着下一条指令
mov ax,[0100]指的是把偏移地址为0100的内存单元中的内容传给ax,由于段地址存放在DS中,所以段地址为1000h,那么这个内存单元的物理地址为1000h*16+0100h=10100h,其内容为20h。
但由于ax是16位寄存器,ax分为al和ah两个8位寄存器,而一个内存单元的内容只能是8位,所以al=20h。
接下来这个内存单元的下一个单元(10101)的内容10h会传给ah。
合起来ax=1020h。
mov ax,0100h指的是把立即数0100h传给寄存器ax,此时ax=0100h。接着下一条指令
mov ax,[0100]指的是把偏移地址为0100的内存单元中的内容传给ax,由于段地址存放在DS中,所以段地址为1000h,那么这个内存单元的物理地址为1000h*16+0100h=10100h,其内容为20h。
但由于ax是16位寄存器,ax分为al和ah两个8位寄存器,而一个内存单元的内容只能是8位,所以al=20h。
接下来这个内存单元的下一个单元(10101)的内容10h会传给ah。
合起来ax=1020h。
展开全部
mov AX, [0100h]是内存直接寻址。其中段地址在DS中,偏移也就是0100h。于是得出物理地址PA = DS * 16d(10h)+ 0100h = 10100h
也就是说,物理地址10100h存储的一个字节类型数据为20h。如果把它看作字类型数据的存储地址,则10100h存储的是字类型数据的低位,10101h存储的是字类型数据的高位。所以认为10100h的字类型数据为1020h,故AX = 1020h。答案是以字节类型数据为单位计算的。
寄存器数据在内存中的存储都遵循“高高低低”原则,即高位存放于高地址,低位存放于低地址,而指针寄存器(无论是SP还是作存储器指针的BX、BP、SI、DI)永远指向数据的低位字节,IP除外,因为它指向的是指令。
| …… |
| 20h In AL | <--- 10100h
| 10h In AH | 10101h
| …… |
也就是说,物理地址10100h存储的一个字节类型数据为20h。如果把它看作字类型数据的存储地址,则10100h存储的是字类型数据的低位,10101h存储的是字类型数据的高位。所以认为10100h的字类型数据为1020h,故AX = 1020h。答案是以字节类型数据为单位计算的。
寄存器数据在内存中的存储都遵循“高高低低”原则,即高位存放于高地址,低位存放于低地址,而指针寄存器(无论是SP还是作存储器指针的BX、BP、SI、DI)永远指向数据的低位字节,IP除外,因为它指向的是指令。
| …… |
| 20h In AL | <--- 10100h
| 10h In AH | 10101h
| …… |
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mov AX,0100H
把ax赋值0100h
MOV AX,[0100H]
内存地址0100h的内容放到ax
把ax赋值0100h
MOV AX,[0100H]
内存地址0100h的内容放到ax
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询