鱼C论坛

 找回密码
 立即注册
查看: 2212|回复: 4

第三章 3.5 数据段检测点3.1 习题求解

[复制链接]
发表于 2013-2-12 21:59:46 | 显示全部楼层 |阅读模式
3鱼币
在 debug中用   d 0:0 1f  查看内存,结果如下  解题过程可以给我说下吗步骤最好详细点(谢谢)
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=________
mov  bX,[0001]            BX=________
mov  ax,bx                  AX=________
mov  ax,[0000]            AX=________
mov  bx,[0002]            BX=________
add   ax,bx                   AX=________
add   ax,[0004]            AX=________
mov  ax,0                    AX=________
mov  al,[0002]             AX=________
mov   bx,0                   BX=________
mov  bl,[000c]             BX=________
add   al,bl                     AX=________

求前辈指点谢谢

最佳答案

查看完整内容

详细点的意思是啰嗦点么? 在 debug中用 d 0:0 1f 查看内存,结果如下 解题过程可以给我说下吗步骤最好详细点(谢谢) 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 mov bX,[0001] BX=E626h ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-12 21:59:47 | 显示全部楼层
本帖最后由 メ㊣逆ご帅☆ 于 2013-2-12 23:02 编辑

详细点的意思是啰嗦点么?


在 debug中用   d 0:0 1f  查看内存,结果如下  解题过程可以给我说下吗步骤最好详细点(谢谢)
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
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


首先制定段地址为1
第一条空 mov ax,[0000],默认DS为段地址,偏移为括号中的0000,那么地址计算就是这样1*10h+0=10h
换算下就是段地址为0,偏移为10h的地方(理由0*10h+10h=1*10h+10h,这两个是同一个地址)

所以mov ax,[0000]就是取0000:0010 中一个字的值 就是这里0000:0010 62 26
由于是反过来读的,所以ax=26 62h

mov bx[0001]同上就是段地址为0000,偏移为11h的地方(红色为偏移11H位置,下面会采取同样的方法)
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88


由于是取一个字的值,所以不只取26一个还得向前取 E6

由于是反过来读的,所以bx=E6 26h

mov ax,bx 就是把BX的值E626h给AX,那么AX就和BX一样是E626H了

mov  ax,[0000]不多说


mov  bx,[0002]            BX=D6E6h

换算下0001:0002,换算完也就是段地址为0000偏移为0012h的地方
0000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88
由于是取一个字的值,所以不只取E6一个还得向前取 D6
反过来读 所以是 D6E6H


add   ax,bx                   AX=FD48h
AX=2662H,BX=D6E6H
相加等于FD48H,把这个值给AX,所以AX=FD48H

add   ax,[0004]            AX=2C14h
把AX的值FD48H和段地址为0000偏移为14H的值(2ECCH)相加得到12C14H,AX不够装,最高位舍去,所以AX=2C14H

mov  ax,0                    AX=0 不多说

mov  al,[0002]             AX=00E6h 取一个字节所以等于E6H

mov   bx,0                   BX=0 不多说

mov  bl,[000c]             BX=0026h 不多说,同上
add   al,bl                     AX=000Ch
AL=E6H,BL=26H  E6+26=10CH,把这个值给AL,所以AL=10CH,最高位溢出舍去
AL=0C
所以AX=000CH




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

使用道具 举报

发表于 2013-2-13 11:34:38 | 显示全部楼层
看来楼主的段寄存器原理还是没有全吃透
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-14 20:37:50 | 显示全部楼层
2楼好详细!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-2-14 23:04:50 | 显示全部楼层
谢谢 楼主我又复习了一下前面的功课终于明白了谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-8 00:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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