. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  有了3.2的答案,把SS值置为2000H,程序怎么知道就是先从DS而不是先从SS开始的呢  [待解决] 回复[ 6次 ]   点击[ 418次 ]  
hbk
[帖 主]   [ 发表时间:2010-12-14 22:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-14 20:58
前面卟是有
mov ax,1000H
mov ds,ax


<1>mov ax,2000H  ;这里又把SS值置为2000H,程序怎么知道就是先从DS而不是先从SS开始的呢
 <2>mov ss,ax  
 <3>mov sp,0010H  

  
 <1>mov ax,1000H  
 <2>mov ss,ax  
 <3>mov sp,0
8782711
[第1楼]   [ 回复时间:2010-12-15 00:44 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-12-12 20:21
我认为是因为CS:IP的指向,先指谁,cpu就先执行谁
goodxiaowan
[第2楼]   [ 回复时间:2010-12-20 07:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-23 12:24
cs:ip所指向的数据就是cpu将要执行的命令!
xiahe147
[第3楼]   [ 回复时间:2010-12-20 22:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-30 21:46
一个数据段一个代码段。
cai1990ace
[第4楼]   [ 回复时间:2010-12-24 16:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-05 12:39
前面卟是有
mov ax,1000H
mov ds,ax


<1>mov ax,2000H  ;这里又把SS值置为2000H,程序怎么知道就是先从DS而不是先从SS开始的呢
 <2>mov ss,ax  
 <3>mov sp,0010H  

  
 <1>mov ax,1000H  
 <2>mov ss,ax  
 <3>mov sp,0
------------------
回复:这里又把SS值置为2000H,程序怎么知道就是先从DS而不是先从SS开始的呢?有高手给个详细的解释吗?
ouch27
[第5楼]   [ 回复时间:2011-01-03 18:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-12-22 11:43
这个是看你把这些语句放在cs段中的什么位置,谁放前面就先执行谁,
程序的执行是从cs:ip指向的地址开始的,
至于上面的设置,一个是把数据段基址设置成1000
这样取数据加便宜地址就能得到1000:0等等的数据了
而把ss设置成2000,因为要把这1000:0 f的数据逆序搬移到2000:0开始的地址
novelasm
[第6楼]   [ 回复时间:2011-01-17 14:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-13 23:25
mov ax,1000H
mov ds,ax
这2句设置数据段是从地址20000H开始 告诉编译器要取数据就到这个段去取

mov ax,2000H
mov ss,ax
mov sp,0010H
这3句只是设置了一个空栈
而程序由那句开始执行跟这些设置无关 
而是跟end 标号 这句决定的 它表明了两层意思:
1告诉编译器编译到这里就结束啦
2指明程序是由 标志处开始执行
这是我结束王爽老师书上的一些知识点的理解
希望对你有点帮助。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved