. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
寄存器(内存访问)
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
检测点3.2的第一个疑惑
[待解决]
回复[
3
次 ] 点击[
467
次 ]
327451977
[帖 主]
[ 发表时间:2008-12-13 18:56 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-11-14 12:24
检测点3.2
(1)
mov ax,1000
mov ds,ax
mov ax,2000
mov ss,ax
mov sp,0010
push [0]
push [2]
push [4]
push [6]
push [8]
push [a]
push [c]
push [e]
问题1:
SP=FFEE SS=1825 CS=1825 IP=0108
1825:0108 8ED0 MOV SS,AX
-t
SP=0010 SS=2000 CS=1825 IP=010D
1825:010D FF360000 PUSH [0000] DS:0000=0000
上面显示出mov ss,ax和mov sp,0010这两条指令是同时被执行了,书上貌似说过,但是不是8086本身的设计才造成这样的功能呢?
perry0721
[第
1
楼]
[ 回复时间:2008-12-13 20:59 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-07-28 10:59
我也有疑问,我开始怀疑SP=FFEE是不是快满了才出来这个问题,而且SP=0010正好是空栈初始值。我然后用r命令修改了SS,SP的值再自己写了不同的SS,SP值设置,发现debug t的时候这2步还是连在一起执行的。后来我修改成
mov ax,1234
mov ss,ax
mov ax,1222
mov sp,0030
push ax
发现mov ss,ax和mov ax,1222也是一起运行的,结论似乎是mov ss,ax和后面的一条语句被CPU看成一条指令,刚才我测试换mov ss,ax后一条指令成mov ax,bx,CPU还是能正确知道指令长度是4
perry0721
[第
2
楼]
[ 回复时间:2008-12-13 21:24 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-07-28 10:59
看到69页就开始有解释了,楼主也可以去看看
perry0721
[第
3
楼]
[ 回复时间:2008-12-14 17:29 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-07-28 10:59
12.12有更详细的解释
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved