. : : 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