吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2404|回复: 10
收起左侧

[学习记录] 【已解决】王爽老师的《汇编语言》书中问题7.4不太明白,请大佬助我一臂之力!

[复制链接]
Pojie1999.0909 发表于 2020-12-21 17:46
本帖最后由 Pojie1999.0909 于 2020-12-22 08:38 编辑

[Asm] 纯文本查看 复制代码
;用debug查看内存,结果如下:
;2000:1000 BE 00 06 00 00 00 ......

;程序代码如下:
mov ax,2000H
mov ds,ax
mov bx,1000H
mov si,0
mov ax,[bx+si]        ;此时ax的内容是00BE,这个我明白,因为[bx+si]也就是2000:1000处的字节是BE,所以给ax赋值后,ax的内容是00BE
inc si                       ;si自增1,此时si是1
mov cx,[bx+si]        ;[bx+si]此时的物理地址是2000:1001,而2000:10001处的字节是00呀,为什么给cx赋值后,cx的内容不是0000,而是0600呢?这个我不明白呀。。


程序执行完,寄存器cx中的内容是什么?是0000还是0600?书中给出的答案是0600,我用debug执行之后,发现也是0600。

内存情况

内存情况

汇编代码

汇编代码

ax执行情况1

ax执行情况1

cx执行情况1

cx执行情况1

但是从内存中看,2000:1001处的字节不是00吗?那cx不应该是0000吗?为什么会是0600呢?
求大佬们指点一下!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
diaozatian815 发表于 2020-12-21 18:06
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| Pojie1999.0909 发表于 2020-12-21 18:26
diaozatian815 发表于 2020-12-21 18:06
MOV是赋值啊~~最后一步加了以后赋值过去啊~

大佬。最后一步,mov cx,[bx+si] 是把当前2000:1001处的字节赋值给cx,这个我明白。
我不明白的是,2000:1001处的字节是00,那么给cx赋值后,我觉得cx应该是0000呀,为什么cx此时不是0000而是0600呢?
cn奔跑的子弹 发表于 2020-12-21 18:40
Pojie1999.0909 发表于 2020-12-21 18:26
大佬。最后一步,mov cx, 是把当前2000:1001处的字节赋值给cx,这个我明白。
我不明白的是,2000:1001 ...

是双字节啊,小端

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Pojie1999.0909 + 1 + 1 谢谢@Thanks!

查看全部评分

逍遥枷锁 发表于 2020-12-21 19:23
本帖最后由 逍遥枷锁 于 2020-12-21 19:27 编辑
Pojie1999.0909 发表于 2020-12-21 18:26
大佬。最后一步,mov cx, 是把当前2000:1001处的字节赋值给cx,这个我明白。
我不明白的是,2000:1001 ...

【bx+si】不是一个16位内存单元,自增不是指向下一个内存单元起始位置?
 楼主| Pojie1999.0909 发表于 2020-12-21 21:02

多谢大佬提醒!重新看了一遍第3章寄存器,发现新大陆!已理解!
 楼主| Pojie1999.0909 发表于 2020-12-21 21:02
逍遥枷锁 发表于 2020-12-21 19:23
【bx+si】不是一个16位内存单元,自增不是指向下一个内存单元起始位置?

多谢大佬回复!
 楼主| Pojie1999.0909 发表于 2020-12-21 21:03
diaozatian815 发表于 2020-12-21 18:06
MOV是赋值啊~~最后一步加了以后赋值过去啊~

多谢大佬回复!
CC000731 发表于 2020-12-21 21:04
本帖最后由 CC000731 于 2020-12-21 21:10 编辑
逍遥枷锁 发表于 2020-12-21 19:23
【bx+si】不是一个16位内存单元,自增不是指向下一个内存单元起始位置?

1001指向的是00,但是你的CX是两个字节,也就是赋值是00 06,又由于存储结构的原因,值就变成了0600
 楼主| Pojie1999.0909 发表于 2020-12-22 08:31
CC000731 发表于 2020-12-21 21:04
1001指向的是00,但是你的CX是两个字节,也就是赋值是00 06,又由于存储结构的原因,值就变成了0600

多谢大佬!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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