检测 6(2)求指教
检测点6.1 (2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:assume cs:codesg codesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0,0,0,0,0,0 start:mov ax, codesg ;或mov ax, cs mov ss,ax mov sp, 24h ;或mov sp, 36 ;(第一版填1ah或26) >>>>>>>>>>>>.这里为什么是24H或者36呢,不应该指向栈顶的吗,栈顶不应该是31的吗。mov ax,0 mov ds,ax mov bx,0 mov cx,8 s:push pop cs: ;或 pop ss: add bx,2 loop s mov ax,4c00h int 21h codesg ends end start
能不能请你说说31是怎么算出来 我看错了。是 36.下面是10个,我看成8个了。 栈操作指令的操作数是多少字节的?
如果往空栈压入一个word型数据,SP会指向哪个字节单元?
若把这个数据pop掉,栈就回到空栈状态,这时SP指向哪?空栈状态是不是和初始状态一样?
假设栈的大小为S字节,偏移地址都是从0开始算的,最后一个单元是S-1,再往后一单元就是空栈时SP的所指,这个单元的偏移是S.可见,栈大小跟空栈时SP所指的单元的偏移数值上是一样的,只要记住这个以后就不必去细算了.谨供参考. GeV20 发表于 2012-9-7 20:55 static/image/common/back.gif
栈操作指令的操作数是多少字节的?
如果往空栈压入一个word型数据,SP会指向哪个字节单元?
若把这个数据pop ...
谢谢指教。 这个帖子不回对不起自己!
页:
[1]