关于汇编语言一个问题
DS=1000MOVAX,[1352H]PA=DS左移4位加逻辑地址1352H=11352H结论是AX=26FFHAX分高8位AH和低8位ALAH=26HAL=FFH这么...
DS=1000
MOV AX,[1352H]
PA=DS左移4位加逻辑地址1352H=11352H
结论是 AX=26FFH AX分高8位AH和低8位AL
AH=26H AL=FFH 这么是怎么算出来的?根据 11352H怎么算阿 展开
MOV AX,[1352H]
PA=DS左移4位加逻辑地址1352H=11352H
结论是 AX=26FFH AX分高8位AH和低8位AL
AH=26H AL=FFH 这么是怎么算出来的?根据 11352H怎么算阿 展开
2个回答
展开全部
16位汇编语言中,物理地址=段地址*16(即16进制的10H,亦即二进制中左移4位,或16进制中左移一位)+偏移地址,构成20位地址(因为8086CPU有20位地址线)。所以此题的PA=DS*16+1352H=10000+1352=11352H(通常表示成 1000:1352 的形式)。而指令MOV AX,[1352H] 即是将地址1000:1352H(默认段地址是DS)处存储的数据送入寄存器AX中(不是算出来的,此处地址1000;1352H处的值应是26FFH),其中AH存高8位,AL存低8位。
希望能帮到你。
希望能帮到你。
追问
不是算出来的,此处地址1000;1352H处的值应是26FFH, 这个值是怎么得到的。
追答
根据你给的已知条件,地址1000:1352H处存储的数据是26FFH,这个可以在debug中用R命令查看,当然每部电脑可能是不一样的,每次查看可能也是不同的(因为内存内容会随着程序的运行而改变)。可以这么理解,数据存储在内存(不妨假想成一个房间)中,而物理地址就像房间的门牌号,有了这个门牌号,就可以访问这个房间了,这个房间中有什么,你所能访问的就是什么。如果你有C语言基础的话,也可以用指针的概念来理解。
如果是初学汇编,有一本比较简单易懂的书建议看看,王爽老师的《汇编语言(第二版)》,小甲鱼出过配套的视频教程,感兴趣可以下载看看。还有就是要常用debug,虽然有点麻烦,却可以加深对CPU内部运行机制的理解。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询