鱼C论坛

 找回密码
 立即注册
查看: 4052|回复: 12

汇编实验5 第六题

[复制链接]
发表于 2020-6-14 07:06:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:code

a segment
        dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
        dw 0,0,0,0,0,0,0,0
b ends




code segment

start:  mov ax,a
                mov es,ax
               
                mov ax,b
                mov ds,ax
               
                mov ax,1000H
                mov ss,ax
                mov sp,17
               
                mov bx,0
                mov cx,8
         s0:push es:[bx]
                add bx,2
                loop s0
               
                mov bx,0
                mov cx,8
         s1:pop ds:[bx]
                add bx,2
                loop s1
               
                MOV ax,4c00h
                INT 21H
code ends
end start


Debug  调试  运行到PUSH  0004入栈的时候 就出现错误    有大佬知道哪里错了吗.....      只要调大栈顶指针SP 数值 就不会中断错误.    但是对于前面的学习而言
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-14 07:08:12 | 显示全部楼层
题目:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-14 07:13:53 | 显示全部楼层
程序如下,编写code 段中的代码, 用push 指令将a 段中的前 8个字型数据,逆序存储到 b段中.   


8个字型数据  占用 16个字节.     栈为空  指向SP  17(十进制)   push 入栈时   先 sp=sp-2     依照前面的知识所学是 没有错的 为何入栈的时候 到004 就中断错误了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 03:28:29 | 显示全部楼层
额 第二条指令我就没看懂 T题目我也不知道是什么  然后就是 定义的是字型数据 也就是说 每个数据占两个字节     b内存当栈使用  目前栈为空  SP栈顶指针应该是指向 sp=FE+2=49吧 我也是初学者 我瞎BB一下  一起研究一起进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 03:29:10 | 显示全部楼层
sp=EF-2=49输入错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-1 19:15:02 | 显示全部楼层

别说你把栈地址弄错了。就说,这EF和FE你从哪里得来的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 04:33:12 | 显示全部楼层
405794672 发表于 2020-7-1 19:15
别说你把栈地址弄错了。就说,这EF和FE你从哪里得来的?

栈地址确实是弄错了 我也说过我是新手 而且只是瞎BB一下 想跟人讨论研究 不过我想说的其实是 栈空 栈顶指针指的是栈底-1的位置 就是那个假设 当栈中只有一个元素的时候 sp=FE 所以栈为空时  sp=FE-2  只是我这样理解的  当时打错两次被禁言了就没改
然后就是 我是来学习的 你可以教我 但是别用这种说话的方式 显得你情商很低 让我很不想好好回你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 08:02:36 | 显示全部楼层
qq990998444 发表于 2020-7-2 04:33
栈地址确实是弄错了 我也说过我是新手 而且只是瞎BB一下 想跟人讨论研究 不过我想说的其实是 栈空 栈顶指 ...

你这回复我仍然搞不明白FE是哪来的。还有,对于文字,每个人有不同的理解,而我可以理解出不同的语气。不同语气代表了不同方式。当初我是很疑惑FE是什么东西?没有数据能计算出FE来。上面那句话,在我脑海里是很轻的语气。如同跟熟人讨论问题一样。你的回复,我已经想到了你看到这句话所想象出的我的语气。一定是板着脸吧?我在现实中说话,有很多人是听不见的,你想象一下我即便大吼大叫,那声音音量有多大。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 08:05:48 | 显示全部楼层
qq990998444 发表于 2020-7-2 04:33
栈地址确实是弄错了 我也说过我是新手 而且只是瞎BB一下 想跟人讨论研究 不过我想说的其实是 栈空 栈顶指 ...

刚才我的又一次回复,我可以明确地告诉你,刚才我在笑。没别的意思,是突然觉得好笑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-3 02:06:49 | 显示全部楼层
405794672 发表于 2020-7-2 08:05
刚才我的又一次回复,我可以明确地告诉你,刚才我在笑。没别的意思,是突然觉得好笑。

前面我已经说过了 FE只是我为了理解SP指向的一个假设
算了 告辞 毫无营养
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-17 22:25:57 From FishC Mobile | 显示全部楼层
你的栈段地址是自己分配的,没有让编译器给你分配,也许这段1000:1到1000:16的内存空间里面有操作系统不让动的东西吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 21:01:21 | 显示全部楼层
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
dw 0,0,0,0,0,0,0,0
b ends

code segment
start:mov ax,a
mov ds,ax

mov ax,b
mov ss,ax
mov sp,16
mov bx,0
mov cx,8
s:push [bx]
add bx,2
loop s


mov ax,4c00h
int 21h
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-12 09:39:57 | 显示全部楼层
本帖最后由 xieglt 于 2020-8-12 14:16 编辑

DOS系统是一个开放的系统,没有对内存做任何保护。开放系统的好处就是你可以随意读写
任何一段物理内存,坏处就是你对内存的随意操作可能破坏系统服务程序,导致死机。
比如说,系统里有256个中断服务程序,从0000:0000开始,每4个字节记录着一个中断服务
程序的入口地址,所以0~1023这段内存是不能随意去修改的。当然,还有其他的很多禁区也是
不能随意修改的。

首先,不建议在程序里重新定义栈段,尤其是像
MOV  AX,1000H
MOV  SS,AX
这样地去定义栈,是非常危险的。因为你不知道1000H*10H 这段内存里到底有没有系统服务程序。
如果有,你的代码就会破坏它。如果一定要自己定义栈,可以如下定义

MY_SS segment
  ;分配100H 个 WORD 空间,自己预估你需要的栈的大小来分配
  DW   100H        DUP        (0)
MY_SS ends

MOV  AX,MY_SS
MOV  SS,AX

这样的定义,保证栈始终在你的程序里,不会破坏系统服务程序。

其次DOS系统是16位(2个字节)系统,每执行一条push指令,sp会-2,
因此栈指针要跟2对齐,也就是说是2的整数倍。
mov sp,17
这样的语句是有问题的,可以是16,也可以是18,但不要是奇数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 15:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表