鱼C论坛

 找回密码
 立即注册
查看: 3747|回复: 8

[汇编作业] 为什么第九章检测点9.1中问题(2)中的【bx+2】处要填的是cs,不能是bx么?

[复制链接]
发表于 2017-7-18 16:45:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么第九章检测点9.1中问题(2)中的【bx+2】处要填的是cs,不能是bx么?求大神解释一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-7-18 20:43:39 | 显示全部楼层
(2)补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令。

完整程序如下:

assume cs:code,ds:data
data segment

    dd 12345678h

data ends

code segment

start:  mov ax,data

    mov ds,ax

    mov bx,0

    mov [bx],bx      ;源操作数bx为所填内容

    mov [bx+2],cs    ;源操作数cs为所填内容

    jmp dword ptr ds:[0]

code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 10:29:19 | 显示全部楼层
我正好也看到这里 12345678h在内存中应该是 78 56 34 12  这个时候的高位34 12应该是cs的值所以是bx+2       78 56才是bx。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-19 14:56:54 | 显示全部楼层
madao0505 发表于 2017-7-19 10:29
我正好也看到这里 12345678h在内存中应该是 78 56 34 12  这个时候的高位34 12应该是cs的值所以是bx+2     ...

兄弟,是dd型的呀,在内存中应该是01 00 02 00 03 00 。。。08 00。
mov 【bx】,bx  ;表示把01 00 改为00 00
mov 【bx+2】,cs  ;表示把02 00改为cs
我的疑问是
既然要指向第一条指令的话,就应该是cs:ip=0000:0000
又因为bx已经为0了,那为什么不可以把【bx+2】的内存用bx来mov呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-20 10:08:50 | 显示全部楼层
本帖最后由 madao0505 于 2017-7-20 10:10 编辑
weixin_学习爱我 发表于 2017-7-19 14:56
兄弟,是dd型的呀,在内存中应该是01 00 02 00 03 00 。。。08 00。
mov 【bx】,bx  ;表示把01 00 改为0 ...


你理解错了哈。如果按照你说的那种定义的话 应该是dd  1,2,3,4,5,6,7,8  而不是dd 12345678h  具体你可以debug试一下。
dd 12345678 出来就是 78 56 34 12
然后 你要返回到第一条指令 也不是0000:0000 应该是cs:0000   这里的段地址是 code 这个标号所在的地址。
这个地址就是cs中的地址。所以直接将cs赋值给[bx+2]就是段地址了。   可能表达的不太好  你可以再去看下视频 然后debug自己试下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-20 19:04:17 | 显示全部楼层
madao0505 发表于 2017-7-20 10:08
你理解错了哈。如果按照你说的那种定义的话 应该是dd  1,2,3,4,5,6,7,8  而不是dd 12345678h   ...

有点理解了,多谢多谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 20:40:40 | 显示全部楼层
dd 12345678h在内存中不是应该这样存放吗 34 12 78 56吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-15 20:53:50 | 显示全部楼层
梦想飞翔的蜗牛 发表于 2019-1-26 20:40
dd 12345678h在内存中不是应该这样存放吗 34 12 78 56吗

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

使用道具 举报

发表于 2020-9-15 19:33:43 | 显示全部楼层
madao0505 发表于 2017-7-19 10:29
我正好也看到这里 12345678h在内存中应该是 78 56 34 12  这个时候的高位34 12应该是cs的值所以是bx+2     ...

在内存中难道不是87 65 43 21吗?越来越糊涂了,卧槽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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