. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  问题3.8  [待解决] 回复[ 8次 ]   点击[ 389次 ]  
aiker
[帖 主]   [ 发表时间:2009-06-01 11:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
指定好SS和SP了 为什么不能PUSH AX进栈??
运行完 mov ss,ax  mov sp,0010后 push ax这段指令就变没了
到底怎么回事啊 哪个帮帮我 谢谢
younggay
[第1楼]   [ 回复时间:2009-06-01 11:09 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
不可能啊,push ax可定能运行到的。
这是我T跟踪的,没问题的。

AX=1000  BX=0000  CX=0015  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=142B  ES=142B  SS=143B  CS=143B  IP=0003   NV UP EI PL NZ NA PO NC
143B:0003 8ED0          MOV     SS,AX
-t

AX=1000  BX=0000  CX=0015  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=142B  ES=142B  SS=1000  CS=143B  IP=0008   NV UP EI PL NZ NA PO NC
143B:0008 B81A00        MOV     AX,001A
-t

AX=001A  BX=0000  CX=0015  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=142B  ES=142B  SS=1000  CS=143B  IP=000B   NV UP EI PL NZ NA PO NC
143B:000B BB1B00        MOV     BX,001B
-t

AX=001A  BX=001B  CX=0015  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=142B  ES=142B  SS=1000  CS=143B  IP=000E   NV UP EI PL NZ NA PO NC
143B:000E 50            PUSH    AX
-t

AX=001A  BX=001B  CX=0015  DX=0000  SP=000E  BP=0000  SI=0000  DI=0000
DS=142B  ES=142B  SS=1000  CS=143B  IP=000F   NV UP EI PL NZ NA PO NC
143B:000F 53            PUSH    BX
aiker
[第2楼]   [ 回复时间:2009-06-01 11:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
那就怪了 为什么我的一到PUSH AX 就变其他的指令了.....
aiker
[第3楼]   [ 回复时间:2009-06-01 11:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
我快晕了 为什么有时候行 有时候又不行
而且有时候 用T执行mov sp 0010的时候却不显示指令出来
但却能执行
sysnap
[第4楼]   [ 回复时间:2009-06-01 11:49 ]   [引用]   [回复]   [ top ] 
荣誉值:32
信誉值:0
注册日期:2008-01-15 12:22
我快晕了 为什么有时候行 有时候又不行
而且有时候 用T执行mov sp 0010的时候却不显示指令出来
但却能执行
------------------
回复:把你的跟踪也像一楼那样子发上来,这样说说也看不明白。

可以使用dos窗口的编辑功能,把dos窗口中的内容复制出来。
zhenglxd
[第5楼]   [ 回复时间:2009-06-01 12:52 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
仔细看书
mov ss,ax 只要是改变栈段地址的指令 后面一条指令 会 直接执行
如果 mov ss,ax mov sp,10H
mov sp ,10这条指令不会显示 他会紧跟着 mov ss,ax后直接执行
因为一般 改变栈段的话,也会改变栈指针sp 所以这个是贴心的设计
如果你 push ax是紧跟着改变栈段指令的话 他是不会显示 他会被直接执行
这是8086 被设计成这样的
aiker
[第6楼]   [ 回复时间:2009-06-02 10:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04
谢谢回答
tsembrace
[第7楼]   [ 回复时间:2009-06-17 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20
没仔细看书哦~。~
ryan1779
[第8楼]   [ 回复时间:2009-06-29 21:04 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39
仔细看书 
mov ss,ax 只要是改变栈段地址的指令 后面一条指令 会 直接执行 
如果 mov ss,ax mov sp,10H 
mov sp ,10这条指令不会显示 他会紧跟着 mov ss,ax后直接执行 
因为一般 改变栈段的话,也会改变栈指针sp 所以这个是贴心的设计 
如果你 push ax是紧跟着改变栈段指令的话 他是不会显示 他会被直接执行 
这是8086 被设计成这样的 
--------------------------------------
明白了@谢谢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved