鱼C论坛

 找回密码
 立即注册
查看: 2221|回复: 5

汇编语言6.1中的一个问题 快崩溃了

[复制链接]
发表于 2012-3-18 21:00:25 | 显示全部楼层 |阅读模式

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

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

x
检测点6.1(第119页)
-------------------
(1)
assume cs:codesg
codesg segment
    dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
    mov ds,ax
    mov bx,0

    mov cx,8
s: mov ax,[bx]
      mov cs:[bx],ax  ;此条指令为所填指令
    add bx,2
    loop s

    mov ax,4c00h
    int 21h
codesg ends
end start

DW 写的那一段数据写到哪个段呢?  好像是CS吧  那写进去后 为什么还有  mov cs:[bx],ax    CS不是已经改变了吗  内存的段地址就不是0了 不是    求各位大神求解   小的先谢谢了   一直不太懂这些   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-18 21:08:54 | 显示全部楼层
本帖最后由 wAterLoo 于 2012-3-18 21:10 编辑

ds:0-ds:15的数据只是写入到cs:0-cs:15的内存中,并没有说CS寄存器的值被更改了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-18 21:14:41 | 显示全部楼层
同楼上。。。外加介个程序执行时改变了IP,CS木有变。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-18 21:18:26 | 显示全部楼层
DW写到了数据段(DS段),mov cs:[bx],ax只是个写法(意思等同于这个mov bx, ax把,或许不是),内存段地址不会是0的把
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-18 21:40:45 | 显示全部楼层
程序加载到内存的时候,cs代码段的前16位保存dw这个八个字符,之后是程序。所以 cs:[bx],ax 的含义就是用内存地址00001-0000F来替换DW里面的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-3-23 12:07:19 | 显示全部楼层
这个我开始也不太理解!后来想了一下应该是这样?
dw  X,X,X,X,X,X,这里是先让CPU在CS里给我们一个16位的字节空间?这样才能让以下代码中的DS指定的内存数据能进入CS内存?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-19 22:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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