鱼C论坛

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

汇编 第六章 实验五(1) 疑问

[复制链接]
发表于 2014-5-15 11:33:49 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 943566987 于 2014-5-15 11:38 编辑

assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start: mov ax,stack
       mov ss,ax
    mov sp,16
   
    mov ax,data
    mov ds,ax
   
    push ds:[0]
    push ds:[2]
    pop  ds:[2]
    pop  ds:[0]
   
    mov ax,4c00h
    int 21
   
    code ends
    end start
我在做实验五答案跟我理解的有一定出入 所以发出来想问问我这样做是否正确

(1) CPU执行程序,程序返回前 cs= ss= ds=
程序载人后CS值是1446我用U查看了一下

3.jpg

执行到PUSH 【2】看了一下SS 是1445

3.jpg

程序执行到POP 【0】要执行到下一条指令 DS是1444
3.jpg
因此答案是 CS=1446 SS=1445 DS=1444不知道我这样做答案是否正确

(2)设程序加载后,CODE段的段地址为X,则DATA段的段地址为 X-2 ,STACK段的段地址为 X-1  为什么DATA段地址是X-2,STACK段地址是X-1 这道题我不明白去解释

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

使用道具 举报

发表于 2014-5-15 13:18:07 | 显示全部楼层
本帖最后由 沉ジ寞 于 2014-5-15 13:19 编辑

你的答案是正确的,每台机子上运行出来的结果都不一样 ,但是你没有看清题意!
第二个问题是:CPU执行程序,程序返回前cs:  ss:    ds:的值,也就是程序运行到int 21h 这句之前,寄存器的结果
而x-2  x-1这是根据的出的结果计算出来的,意义不大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-15 14:17:17 | 显示全部楼层
本帖最后由 xiaosawanjava 于 2014-5-15 14:28 编辑

这个问题我也纠结过,这个data为 x-2 stack x-1 其实也是不确定的,你这程序如此是因为,你的data定义在前面,stack定义在data后面,code 定义在stack后面
你也可以这样认为,假设  data = 1 ,stack = data+1 ,code = stack+1 ,因此data = code -2,stack = code -1。
如果你把data段放在后面,那他就不是-1了,也许就是+1或者+2 ,你可以去试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-15 17:24:37 | 显示全部楼层
恩恩!支持楼上的回答!{:2_27:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-15 17:24:54 | 显示全部楼层
恩恩!支持楼上的回答!{:2_27:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-27 14:21:03 | 显示全部楼层
呵呵,三楼正解……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-27 20:25:50 | 显示全部楼层
3楼说的对{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-30 13:48:37 | 显示全部楼层
我也刚做到这里,其实就是和你定义的3个顺序有关,你可以吧实验的第(3)题也做一下,把他们的顺序是调过来的,结果又不一样了,因为cpu在运行的时候,是从上到下运行。我个人是这样认为的,新手作答,如果有错,欢迎指出、。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-16 21:17:48 | 显示全部楼层
xiaosawanjava 发表于 2014-5-15 14:17
这个问题我也纠结过,这个data为 x-2 stack x-1 其实也是不确定的,你这程序如此是因为,你的data定义在前 ...

360软件小助手截图20140716211443.png
这是第三题的结果,按你所说,不应该是cs=ds-1=ss-2么?

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

使用道具 举报

发表于 2014-7-16 21:19:28 | 显示全部楼层
七月你好 发表于 2014-6-30 13:48
我也刚做到这里,其实就是和你定义的3个顺序有关,你可以吧实验的第(3)题也做一下,把他们的顺序是调过来 ...

看看我的结果为什么是这样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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