鱼C论坛

 找回密码
 立即注册
查看: 3547|回复: 9

课后题

[复制链接]
发表于 2013-7-17 23:47:08 | 显示全部楼层 |阅读模式
1鱼币
(1)  在DEBUG中,用 "D 0:0 lf" 查看内存,结果如下:  
0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 60  
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88  
下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行完后相关寄存器中的值
mov ax,1
mov ds,ax
mov ax,[0000]  ax= 2662H                     ( ax为什么是等于2662呢,而不是8070呢?第一行的元素是什么意思呢?)D 0:0 lf这句是什么意思呢?
mov bx,[0001]  bx= E626H  
mov ax,bx      ax= E626H  
mov ax,[0000]  ax= 2662H  
mov bx,[0002]  bx= D6E6H  
add ax,bx      ax= FD48H  
add ax,[0004]  ax= 2C14H  
mov ax,0       ax=   0   
mov al,[0002]  ax= 00e6H  
mov bx,0       bx=   0   
mov bl,[000c]  bx= 0026H  
add al,bl      ax= 000CH  

最佳答案

查看完整内容

D 0:0 lf 是debug里查看内存的命令。其中 0:0 是要查看的起始地址,1F(转10进制是31),也就是查看段基址为0,偏移地址为0 到1f 的32个字节。也就是题中所展示的两行。 mov ax,1 mov ds,ax ;设数据段基址为1 mov ax,[0000] 把DS段,偏移为0的两个字节传送到AX, 即把0001:0000 处的两个字节传送到AX 你说的8070的地址是 0:0为起始始的两个,而不是0001:0为起始。 从题中看 “0000:0010 62 26 ”,2660的起始地 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-17 23:47:09 | 显示全部楼层
D 0:0 lf   是debug里查看内存的命令。其中 0:0  是要查看的起始地址,1F(转10进制是31),也就是查看段基址为0,偏移地址为0   到1f 的32个字节。也就是题中所展示的两行。
mov ax,1
mov ds,ax  ;设数据段基址为1
mov ax,[0000]   把DS段,偏移为0的两个字节传送到AX, 即把0001:0000 处的两个字节传送到AX

你说的8070的地址是 0:0为起始始的两个,而不是0001:0为起始。
从题中看 “0000:0010 62 26 ”,2660的起始地址为0:10h,而不是0001:1。但这两个表示的是同一个址。
记得? 物里地址=段基址*16+偏移量  。0:10h,和1:0 经换算是同一个地址:10h

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-18 01:07:41 | 显示全部楼层
看看,路过!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-18 01:13:13 From FishC Mobile | 显示全部楼层
段地址和和偏移都是相对的,只要记住公式:段地址*16+偏移量=物理地址,怎么算都不怕了。首先这题有点拗,一定要深刻记住公式。解题开始:先看[0000],其实这个他是坑你的,就是[0]的意思,也就是偏移是0。如果你不明偏移,我可以解释一下。假如我有n米长的绳子,设100-110之间是一个段(可以理解为一段绳子),我把100设为段基地址(一个点),那我要剪105米的绳子怎么办呢?对,可以从100那个点开始,挪动5个单位,剪下去。挪动的这5个单位,相当于100定好的那个段点的偏移,懂了吧。。。其实就是这么简单,理解就好。再看题目ds是1就是段基地址是1,那么我们现在根据公式运算,1*16+0,可以算到物理地址是10h,由于地址前面是用0填充的,也就是0000:0010,然后我们再看0000:0010相应的数据便是了。吼吼~一定要深入领会公式,这对你以后很有帮助的!!:)

评分

参与人数 1荣誉 +1 鱼币 +1 贡献 +1 收起 理由
Dardy + 1 + 1 + 1 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-18 01:38:09 From FishC Mobile | 显示全部楼层
不管题目怎么麻烦,只要看到段地址你,直接按照公式算就是了,看到0000:0010这种格式,你就要明白“:”前面是段地址,“:”后面是偏移地址,这要按照公式找出物理地址了,东西是放在物理地址的单元里的,这种“段地址+偏移地址”是一种描述物理地址的方法,是模糊的。再打个比方,我家地址就是个物理地址,是真实的,想要找到家里的我,首先你要大概找个标志性的地方,例如xxx村口(段基地址),然后再向某个方向走n米(这个走n米是偏移地址,相对于村口[段基地址]来说的),经过走了n米才能找到我家,然后才能把呆在家里的我叫出来去玩~所以你现在理解了吧!(^_^)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-20 12:22:20 | 显示全部楼层
ds=ax=1 那么 [0]=ds:[0]=1:0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-20 12:26:35 | 显示全部楼层

楼主真好,回答的很用心,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-20 22:39:14 | 显示全部楼层
楼主 ~~~这么多的回答 ~~~~哪一个才是你要的呢???赶紧采纳一个最合适的吧~~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-24 22:02:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-1 19:34:12 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 12:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表