汇编中栈问题,ss:sp指向的问题

初学汇编,很多知识不懂,今天看到栈的时候书上写了ss:sp指向栈顶,我就写了一段验证结果发现和
预期的不符合
mov ax,1
push ax
mov ax,2
push ax
mov ax,3
push ax
mov bx,sp
pop ax
pop ax
pop ax
mov sp,bx
pop ax
当栈到底的时候我又重新给sp赋值让它指向栈顶(bx中记录了sp),为什么ax中的数值不是3。
没有C币了。。

1个回答

不应该吧,你把SP的地址和相邻三个地址里的值打印出来,看看是不是存进去的值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ss:sp的指向问题
将10000H~1FFFFH这段空间当作栈段,初始状态栈是空的,若设SS=1000H,则SP=?rn答案是SP=0。rn 可我就想不明白了,当栈是空的时候,SS:SP应该是指在地址1FFFFH的下面,即20000H处,如果答案中SP=0的话,SS:SP=10000H,这不是让SS:SP指向了第一个内存空间了吗??
8086 SS 和 SP 寄存器
SS 寄存器和 SP 寄存器: 根据前面对栈的介绍,相信各位对栈也肯定是有一定了解了的,更何况,估计大家也是职场打滚多年的, 要是栈都没用过的话,那也确实蛮悲剧的 ,所以,我在这里也不会对栈做十分详细的介绍了, 但是,最基本的介绍还是要的,毕竟在底层的话,不像高级语言那么方便,可以直接一个  Stack  就 OK 的, 在底层涉及的是栈在内存中的具体实现 。 不知道
汇编学习第二课之 CS:IP,DS,SS:SP 寄存器
小小鸟的汇编学习路程,加油,多动手多实践,提出问题解决问题
汇编语言中的栈的ss:sp,数据结构中的栈的指针,内部是如何联系上的?
《汇编语言》的push指令执行,sp-2;rn《数据结构》的压栈,是top指针加1;rn这两个应该是一个意思的吧!rn那么 汇编语言的push 到 数据结构的push 的转换是怎么实现的;rn或者说是是一个什么样的对应关系,咋一个加一个减~~就想弄明白rn
汇编栈段中数据问题
[b]assume cs:code,ds:data,ss:stackrnrndata segmentrn dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hrndata endsrnrnstack segmentrn dw 0,0,0,0,0,0,0,0rnstack endsrnrncode segmentrnstart: mov ax,stackrn mov ss,axrn mov sp,16rnrn mov ax,datarn mov ds,axrnrn push ds:[0]rn push ds:[2]rn pop ds:[2]rn pop ds:[0]rnrn mov ax,4c00hrn int 21hrncode endsrnend start[/b]rnrnrn将程序加载入内存后rn-rrnAX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000rnDS=14BD ES=14BD SS=14CD CS=14CF IP=0000 NV UP EI PL NZ NA PO NCrn14CF:0000 B8CE14 MOV AX,14CErn-d 14cd:0rn14CD:0000 [color=#FF0000]23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09[/color]rn14CD:0010 [color=#FF0000]00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00[/color]rn14CD:0020 B8 CE 14 8E D0 BC 10 00-B8 CD 14 8E D8 FF 36 00rn14CD:0030 00 FF 36 02 00 8F 06 02-00 8F 06 00 00 B8 00 4Crn14CD:0040 CD 21 2B C0 8B F8 0B FF-74 0C 8B DF D1 E3 03 1Ern14CD:0050 9A 16 8B 07 EB 02 2B C0-89 46 F0 C4 5E F8 26 8Brn14CD:0060 47 08 89 46 F4 80 3E 60-08 00 74 30 0B F6 74 2Crn14CD:0070 0B FF 74 28 8B 1E D2 25-8A 01 38 00 76 0A B8 01rnrn。。。rnrn-trnrnAX=14CE BX=0000 CX=0042 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000rnDS=14BD ES=14BD SS=14CE CS=14CF IP=0008 NV UP EI PL NZ NA PO NCrn14CF:0008 B8CD14 MOV AX,14CDrn-d ss:0rn14CE:0000 [color=#FF0000]00 00 00 00 00 00 CE 14-00 00 08 00 CF 14 86 0E ................[/color]rnrnrnrn麻烦各位解释下为什么栈里面的数据会变化。这些数据是什么?有什么作用吗?
汇编栈段,还有栈数据保存问题。
DATAS SEGMENTrn ;此处输入数据段代码 rnDATAS ENDSrnrnSTACKS SEGMENTrn ;此处输入堆栈段代码rnSTACKS ENDSrnrnCODES SEGMENTrn ASSUME CS:CODES,DS:DATAS,SS:STACKSrnSTART:rn MOV AX,DATASrn MOV DS,AXrn ;此处输入代码段代码rn mov ax,2000Hrn mov ss,axrn mov ax,1002Hrn mov sp,axrn mov ax,8899rn mov bx,6677rn push axrn push bxrn MOV AH,4CHrn INT 21HrnCODES ENDSrn END STARTrnrn这里栈是多大?rn栈低是那个位置?rn栈低是不是2000-1?rn栈空的时候是不1002-1?rnrnrn还有一个问题,入栈入,我查看栈内容没有数据。rnrn-d 2000:1000 这样没有数据?奇怪了?
汇编中栈的定义
汇编中栈的定义: STACK SEGMENT A DW 1,2,3,4,5 STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV AX,STACK MOV SS,AX MOV SP,0AHEND1: MOV AX,4C00H INT 21HCODE ENDS END START
ss问题
安装ss,首先需要python2和pip或者easy_install套件,python3大概不行吧。 centos7自带Python 2.7.5,但是没有pip 像centos这类衍生出来的发行版,他们的源有时候内容更新的比较滞后,或者说有时候一些扩展的源根本就没有,比如pip 因此为了能够安装pip,需要先安装扩展源EPEL。 EPEL(http://fedoraproj
关于SS与SP用t命令不暂停的问题
学习王爽老师的《汇编语言》P250有句话,我不太理解,还请大家帮个忙。rn[color=#FF0000]SS:SP联合指向栈顶,而对它们的设置应该连续完成。如果在执行完设置SS的指令后,CPU响应中断,引发中断过程,要在栈中压入标志寄存器、CS和IP的值。而SS改变,SP并未改变,SS:SP指向的不是正确的栈顶,将引起错误。[/color]rn一开始SS = 5000H,SP = 1000Hrn然后有几条指令rnmov ss,1000Hrnmov sp, 0rn比如在执行完SS的时候产生中断,比如而已。那IP就指向mov sp, 0这条指令,然后当前的“标志寄存器、CS和IP的值”入栈,入的栈是1000:1000处([color=#FF0000]因为执行完mov ss, 1000H后ss = 1000H,mov sp, 0没执行,所以sp还是一开始的1000H[/color])。“标志寄存器、CS和IP的值”入到1000:1000处,执行完中断处理程序后就退栈,这时IP不就rn指向mov sp, 0,然后执行完mov sp, 0后,那么ss = 1000H,sp = 0不就是我们的原意了吗?可为什么程序不是这样设计。还要SS与SP是连续完成。
8086宏汇编,关于SS:SP的赋值问题,什么情况下系统自动赋值?等等
我看了好几本书,都没有明确的说明,通过实验rnrn我的总结如下,因为不太确定,请大家一定要指点rnrn1.没有定义堆栈段时,dos自动为程序分配了128字节的堆栈,此时,(SS)=(CS),(SP)=0rn2.定义了堆栈段,如下 rn stack segment stackrn db 100 dup(?)rn top equ $rn stack endsrn这种情况下,ss:sp也是自动分配的 (ss)=stack,(sp)=toprn3.定义了堆栈段,如下 rn stack segment rn db 100 dup(?)rn top equ $rn stack endsrnrn这种情况下,ss:sp必需编程赋值rn——————————————————rn有错吗???rnrn
汇编:栈
  栈是一段连续的内存单元,也就是一段连续的内存地址。  需要特殊的访问形式--才能访问栈。     栈的模型就像一个箱子,通过"入栈","出栈"操作栈这个箱子, 这个箱子还有一个标记"栈顶",永远指向栈的顶部。    从内存角度看:    入栈: push,  将16位寄存器或者内存中的字型数据 ----->栈顶标记的上面。   出栈: pop     将栈顶标记所标识的字型...
8086寄存器学习笔记-SS 寄存器和 SP 寄存器
SS 寄存器和 SP 寄存器: SS 寄存器:Stack Segment (堆栈段寄存器) SP 寄存器:Stack Pointer(堆栈指针寄存器) 这两个寄存起是为了访问内存用的,SS为段寄存器,SP为偏移。 SP受PUSH和POP两个指令的影响。 PUSH SP=SP+入栈数据的字节数 POP SP=SP-出栈数据的字节数 每次 PUSH入栈的数据是2字节还是1字节呢? 取决于入栈的数据?...
SP问题
各位,我写了一个sp,用于检索信息,开始一切正常,但在添加了下述代码后就game over了:rn...rn...rn@strLimited varchar(4),rn...rn...rnrnselect * from DB1 where ...rn and USERID like "'"+@strLimited+"%'"rn...rn...rnrn此条件的本意是使用strLimited过滤特定字符开始4位的用户代码,以限制信息范围,但就此无法返回任何记录(实际记录完全存在)。利用参数返回like后面的字符串为正常的rn'XXXX%',但就是无法得到记录,原因何在?rnrnBTW:有谁使用VB的T-DEBUG调试SP?我无法step跟踪,WHY?rn
sp问题
CREATE PROCEDURE [dbo].[usp_NewsTit_SelecTopX]rn @numb intrnASrnSELECT top @numbrn [id],rn [title],rn [author],rn [in_dtime],rn [sign],rn [cla],rn [temps]rnFROM [dbo].[news_tit]rnORDER BY [in_dtime]rnGOrn请问这段话那里错了,编译是老提示SELECT top @numb错了
JS中的this指向问题
      最近发现这个this还真的不能随便写,因为它实际的指向可能跟你想的不太一样,因此就会出现一些莫名其妙的问题,比如 ****undefined   为了避免这些错误,必须得搞懂this 先提一句:this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象 例1: function f1(){ va...
JavaScript中this的指向问题
全局环境中的this指向 无论是否在严格模式下,在全局执行环境中(在任何函数体外部)this 都指代全局对象(不一定是window对象)。 var name = '周庆强' console.log(this.name) // 周庆强 console.log(window.name) // 周庆强 函数作用域 function func () { this.name = '周庆强' } cons...
javaScript中this指向问题
普通函数中的this: ==> window 对象、对象方法中的this ==> 实例对象 定时器中的this ==> window 构造函数中的this ==> 实例对象 原型对象中的this ==> 实例对象 事件中的this ==> 事件源 call、apply、bind ...
javascript中this指向问题
javascript中this指向问题在对象方法中调用在对象方法中this就是指该对象var obj = { name: 'xin', getName: function () { return this.name; } }; console.log(obj.getName()); //xin 作为普通函数调用作为普通函数调用时指向全局对象,被全局对象
setTimeout中this指向问题
setTimeout中所执行函数中的this,永远指向window!!
JS函数中 this 的指向问题
普通函数中的 this  ——>  window 定时器中的 this  ——>  window 构造函数中的 this  ——>  实例对象 方法中的 this  ——>  实例对象 原型中的方法中的 this  ——>  实例对象 ES6新增箭头函数:  () => {}  中的 this 指向箭头函数所在层的this(this指向不改变) ...
js中this指向问题
            //1普通函数里  谁调用指向谁             var obj={                 name:"hello",                 age:1,                 sayHello:function(){                     console.log(this);                 }  ...
JavaScript中的this指向问题
js中的this指向记住一个原则:一般情况下(箭头函数除外)this是在执行时才能确认,定义时没有办法确认。 下面这段代码会是输出什么呢? var name = 'zhangsan'; var obj = { name: 'lisi', getName: function () { console.log(this.name) } }; obj.getNam...
javascript中this的指向问题
this 指的是当前对象,如果在全局范围内使用this,则指代当前页面window;如果在函数中使用this,则this指代什么是根据当前函数是在什么对象上调用。我们可以使用call和apply改变函数中this的具体指向。另外,在构造函数或者构造函数原型对象中this指向构造函数的实例。1.全局作用域或者普通函数中this指向全局对象window。console.log(this === win...
栈段寄存器SS 栈顶指针ESP
栈段寄存器SS 栈顶指针ESP
8086汇编学习之DS寄存器、SS/SP寄存器
相关博客:8086汇编基础知识、通用寄存器、CS/IP寄存器与Debug的使用 一、DS寄存器一个8086CPU寄存器均是16位的,而数据类型有以下两种: 1Byte = 8bit (字节型数据) 1word = 2Byte = 16bit (字型数据)16位寄存器存储一个字,而在内存中需要两个空间连续的字节存储一个字。(高位地址存放高位数据,低地址存放低位数据)。 任何两个地址连续的内存单元
CPU是怎么找到中断处理程序的SS和SP的?
各位大师,请教一下,中断程序自己的SS和SP存放在中断程序中的什么位置,使得CPU能够迅速找到它,从而能够实现返回位置的压栈操作?rn因为中断处理程序的CS和IP可以通过中断向量获得,但是中断向量中并没有SS和SP的值,所以非常奇怪CPU是怎么获得它们的。rn谢谢!rn
js 中this指向问题
在这里说句个人对this 一点点想法,虽然很基础;但是很总要,因为JS 是一门面向对象的编程语言,如果将来只要你想面向对象编程;那么this是必不可免的。能用面向对象就尽量用面向对象编程,因为他的课拓展性好,只不过要看你能把这个对象抽象成什么样子了。简单明了this 指的是啥呢:距离他最近的对象一般情况下this在方法中使用;易混点:容易误认为在那个方法里面就指的那个对象,正确理解;那个对象调用的...
JS函数中的this指向问题
今天我要说的是JS中的this指向,首先我们应该知道在js中函数的几种调用方式: 普通函数调用 作为方法来调用 作为构造函数来调用 使用apply/call方法来调用 Function.prototype.bind方法 es6箭头函数 不管是通过哪种方式函数调用,我们都应该明确一点谁调用这个函数或方法,this关键字就指向谁。 1.普通函数调用function person(){ this
js函数中this指向问题
函数中的this到底是指向window还是赋给的对象?以下通过一个实例来讲解。 function createFunc(name) { this.name = name; } 对于createFunc这个函数以下有两种实例化方式: //1 var a = createFunc("Lily"); //2 var b = new createFunc("Lily"); 两种方式看着...
react 中this指向问题
运行一下代码会报错,就是因为this指向的问题 import React, {Component} from 'react' import { Button } from 'antd'; export default class Home extends Component { constructor(props) { super(props) this.state = ...
事件绑定中的this指向问题
我在模拟jquery库,想实现的效果是鼠标移入DIV的时候改变DIV的背景。但是实现不了,不知道是那里出了问题,请教下大神帮忙解决下,小弟万分感激!rn封装的JS代码:rn// JavaScript Documentrn[code=javascript]function addEvent(obj,type,fn)rn if(obj.attachEvent)rn obj.attachEvent('on'+type,function()rn fn.call(obj); rn ); rn elsern obj.addEventListener(type,fn,false) ;rn rn rnrnfunction getByClass(oParent, sClass) //class选择器rnrn var aEle=oParent.getElementsByTagName('*');rn var aResult=[];rn var re=new RegExp('\\b'+sClass+'\\b', 'i');rn var i=0;rn rn for(i=0;irnrnrn rn 无标题文档rn rnrn rn rnrnrnrn rnrn[/code]rnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrn
js闭包中this指向的问题
下面是百度今年的一个笔试题:rn[code="javascript"]rnvar myObject = rnfoo:"bar",rnfunc: function() rnvar self = this;rnconsole.log("outer func: this.foo = " + this.foo);rnconsole.log("outer func: self.foo = " + self.foo);rnrn (function ()rn console.log("inner func: this.foo = " + this.foo);rn console.log("inner func: self.foo = " + self.foo);rn ());rnrnrnmyObject.func();rn[/code]rn结果是 bar bar undefined barrn关于第三个undefined我是这样理解的:func是myObject对象的属性方法,所以其内部this指向myObject对象本身。而此属性方法内部的匿名立即执行函数是独立的,其this指向自身的执行上下文,引用不到外部的foo,所以是undefined。但由于作用域链使用self可以通过self引用到外部,所以第四个是bar。rnrn我是这样理解的,并且我做了个推论:rnrn[code="javascript"]rnfunction outer()rnthis.i = 10;rnalert(this.i);rn(function()rnalert(this.i);rn());rn;rnouter();rn[/code]rnrn按道理第二次弹出对话框是undefined才对,可是它却是10!它这里怎么又能通过this引用外部的i了呢?why?rnrn请大神不吝赐教!
Javascript中this指向的问题
Javascript中的this指向问题 ​ javascript中this指向问题核心(本质):谁调用指向谁. 1.普通函数中的this function fun() { console.log(this); //window this指向window } fun(); 2.构造函数或者构造函数原型对象中的thi...
JavaScript 中 this 的指向问题
首发个人博客 JavaScript 中的 this ,大家都用过。但是它到底指向哪里呢?今天在阅读 《你不知道的JavaScript (上卷)》再结合自己平时看的博客,对它又有了新的认识,在此来做个小结,再碰到 this ,就再也不用担心不知道它指向哪里了。 与调用位置有关,而与定义位置无关 以下示例(在浏览器端运行) function ...
js中this的指向问题
1.this只指向上一级的对象(上一级的对象主要看执行语句决定),如果没有上级对象,就是window对象 没有上级对象,就是window对象 var name = "kakaka"; var sayName = function(){ alert(this.name); } sayName();//没有上一级,所以是window,返回kakaka 指向上一级的对象, 如果上一级没有该...
js中的this指向问题
this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定,this最终指向调用它的对象。 1.函数调用模式 当一个函数并非一个对象的属性时,那么它就是被当做函数来调用的。在此种模式下,this被绑定为全局对象,在浏览器环境下就是window对象 2.方法调用模式 当函数被保存为一个对象的属性时,它就可称为这个对象的方法。当一个方法被调用时,this被绑定到这个对象上。如果
JavaScript 中 this 的指向问题
首发个人博客 JavaScript 中的 this ,大家都用过。但是它到底指向哪里呢?今天在阅读 《你不知道的JavaScript (上卷)》再结合自己平时看的博客,对它又有了新的认识,在此来做个小结,再碰到 this ,就再也不用担心不知道它指向哪里了。 与调用位置有关,而与定义位置无关 以下示例(在浏览器端运行) function sayHi(){ var hi = 1; conso...
JS中this的指向问题
普通模式,this永远指向上一级调用他的对象;严格模式,在没有对象调用的情况下this指向的不是window而是undefined。 在普通模式下JS有一个全局对象window举个例子: function x(){ var user = "一颗会开花的树"; console.log(this.user); //undefined ...
Javascript中的 this指向问题
普通函数中 this指向window 对象的方法中 this指向当前对象 构造函数中 this指向构造函数的实例化对象 原型对象的方法中 this指向当前的实例对象 计时器中 this指向window 事件处理函数 this指向触发事件的对象 上代码: <!DOCTYPE html> <html lang="en"> &a
async中的this指向问题
有async函数的地方 要用this需要在async外部把this赋值给一个变量,再使用,否则直接再async函数中使用this.属性会报错
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件